使用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.有沒有辦法在使用Effort時控制Identity_insert

一般承認的答案

這只是為了在這個線程上添加解決方案。 @MrBlueSky在上面的評論中添加了解決方案的成果鏈接 。但是,在鏈接上使用的DbConfiguration在最新的Effort上不再存在。該解決方案仍存在於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
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因