2010-05-20 64 views
1

我一直在EF 4.0插入遇到問題。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?

回答

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。

+0

絕對正確。爲我的關閉創建一個局部變量解決了這個問題。 – jhappoldt 2010-05-20 18:00:35