插入时出现DbUpdateConcurrencyException

时间:2015-06-30 21:06:55

标签: entity-framework

我正在使用Entity Framework 6将数据插入表中进行集成测试。当我执行以下代码时,在调用SaveChanges()时出现DbUpdateConcurrencyException。

using (var context = new CONTACTEntities())
{
    context.Facilities.AddRange(facilities);
    context.SaveChanges();
}

我不确定为什么会这样。该表应该为空,因为在测试运行之前删除/创建表,这是测试中我将任何数据插入此表的唯一位置。有什么想法吗?

1 个答案:

答案 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);
    }
}