我在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吗?
答案 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。