我正在使用Entity Framework 6将数据插入表中进行集成测试。当我执行以下代码时,在调用SaveChanges()时出现DbUpdateConcurrencyException。
using (var context = new CONTACTEntities())
{
context.Facilities.AddRange(facilities);
context.SaveChanges();
}
我不确定为什么会这样。该表应该为空,因为在测试运行之前删除/创建表,这是测试中我将任何数据插入此表的唯一位置。有什么想法吗?
答案 0 :(得分:0)
如果您使用的是SQLServer,并且表中有datetime列,请将列类型更改为datetime2(7)。
听起来很奇怪,但确实有效。解释是关于毫秒的。
您必须了解实体框架如何处理表中的键。在我的代码中,我设置了HasDatabaseGeneratedOption。它可以在你的代码中使用。
public class IceCatCategoryMap : EntityTypeConfiguration<IceCatCategory>
{
public IceCatCategoryMap()
{
ToTable("SemlerServices_IceCatCategory");
HasKey(m => m.Id);
Property(m => m.Id).IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
}
}