EF 4.0批量插入与单个插入例外

时间:2010-05-20 17:45:21

标签: .net entity-framework-4

我在EF 4.0中遇到插入问题。

在从一个系统迁移到另一个系统的过程中,我将三个配置表的值迁移到EF前面的数据库中。

以下代码崩溃:

foreach (MyModel model in models)
{
    if(entities.my_Model.Where(p => p.Id == model.modelId).Count() == 0 )
    {
        entities.AddTo_MyModel(new MyModel()
            {Name = model.Name, Id = model.modelId});
    }
}
entities.SaveChanges();

请注意,对SaveChanges的调用将因约束异常而崩溃,表明ID(PK)的值已存在。我不是试图插入重复项。

以下代码 DOES 正确运行。

foreach (MyModel model in models)
{
    if(entities.my_Model.Where(p => p.Id == model.modelId).Count() == 0 )
    {
        entities.AddTo_MyModel(new MyModel()
            {Name = model.Name, Id = model.modelId});
        entities.SaveChanges();
    }
}

请注意已移动的保存。

我根本不了解EF吗?

1 个答案:

答案 0 :(得分:2)

我认为问题出在模型变量......

如果您可以尝试:

foreach(MyModel model in models){
 var id = model.Id;
 var name = model.Name
 if(entities.my_Model.Where(p => p.Id == id).Count() == 0 )
 {
     entities.AddTo_MyModel(new MyModel()
              {Name = name, Id = id});
      }
}
entities.SaveChanges();

IMO应该正常工作......

HTH。