努力进行单元测试 - 添加身份关闭的记录
Unit testing with Effort - Adding records with identity off
我正在使用 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 在上面的评论中添加解决方案的archieved links。但是,在 link 上使用的 DbConfiguration
在最新的 Effort 上不再存在。 Effort.EF6 [version="1.3.0"]
上仍然存在该解决方案。您可以在 EffortConnection.DbManager
上使用方法 SetIdentityFields
来打开或关闭身份字段
if (Effort.DbConnectionFactory.CreateTransient() is EffortConnection connection)
{
connection.Open();
connection.DbManager.SetIdentityFields(false);
connection.DbManager.ClearMigrationHistory();
connection.Close();
}
正在开启
// Add data with explicitly set id
Person initPerson = new Person { Id = 5, FirstName = "John", LastName = "Doe" };
dataInitContext.People.Add(initPerson);
dataInitContext.SaveChanges();
Assert.AreEqual(5, initPerson.Id);
// Enable identity field
connection.Open();
connection.DbManager.SetIdentityFields(true);
connection.Close();
我正在使用 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 在上面的评论中添加解决方案的archieved links。但是,在 link 上使用的 DbConfiguration
在最新的 Effort 上不再存在。 Effort.EF6 [version="1.3.0"]
上仍然存在该解决方案。您可以在 EffortConnection.DbManager
上使用方法 SetIdentityFields
来打开或关闭身份字段
if (Effort.DbConnectionFactory.CreateTransient() is EffortConnection connection)
{
connection.Open();
connection.DbManager.SetIdentityFields(false);
connection.DbManager.ClearMigrationHistory();
connection.Close();
}
正在开启
// Add data with explicitly set id
Person initPerson = new Person { Id = 5, FirstName = "John", LastName = "Doe" };
dataInitContext.People.Add(initPerson);
dataInitContext.SaveChanges();
Assert.AreEqual(5, initPerson.Id);
// Enable identity field
connection.Open();
connection.DbManager.SetIdentityFields(true);
connection.Close();