Unit testing with Effort - добавление записей с идентификацией

effort mstest objectcontext unit-testing

Вопрос

Я использую Effort (для EF4) для выполнения некоторых модульных тестов.

var ctx= Effort.ObjectContextFactory.CreateTransient<TheContext>(Shared.Connection);
ctx.companies.AddObject(new company() { ID = 100, name = "Agent", is_agent = true });
ctx.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave);

Столбец ID в компании - это поле идентификации. После выполнения вышеуказанного запроса получается, что значение ID равно 1, а не 100. Есть ли способ управлять Identity_insert при использовании усилия

Принятый ответ

Это просто добавить решение в эту тему. @MrBlueSky добавить архивные ссылки решения по комментариям выше. Но DbConfiguration которая используется в ссылке, больше не существует в последнем усилии. Решение все еще существует в Effort.EF6 [version="1.3.0"] . И вы можете использовать метод SetIdentityFields на EffortConnection.DbManager для включения или выключения полей идентификации

if (Effort.DbConnectionFactory.CreateTransient() is EffortConnection connection)
{
    connection.Open();
    connection.DbManager.SetIdentityFields(false);
    connection.DbManager.ClearMigrationHistory();
    connection.Close();
}

Включение

if (Effort.DbConnectionFactory.CreateTransient() is EffortConnection connection)
{
    connection.Open();
    connection.DbManager.SetIdentityFields(false);
    connection.DbManager.ClearMigrationHistory();
    connection.Close();
}



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему