2013-04-21 108 views
2

我試圖更新現有實體的EntityCollection已經初始化

private void UpdateEfItem(MamConfiguration_V1 itemFromDb, MamConfiguration_V1 item) 
{ 
    itemFromDb.UpdatedDate = DateTime.Now; 
    itemFromDb.Description = item.Description; 


    //references 
    itemFromDb.MamConfigurationToBrowser_V1 = item.MamConfigurationToBrowser_V1; 
    itemFromDb.MamConfigurationToGroups_V1 = item.MamConfigurationToGroups_V1; 
} 

我碰到下面的錯誤,分配UI的項目EF-項目時:

itemFromDb.MamConfigurationToBrowser_V1 = item.MamConfigurationToBrowser_V1; 

The EntityCollection has already been initialized. The InitializeRelatedCollection method should only be called to initialize a new EntityCollection during deserialization of an object graph.

更新:

我試過了@格特的方式:

private void UpdateEfItem(MamConfiguration_V1 itemFromDb, MamConfiguration_V1 item) 
    { 
     itemFromDb.UpdatedDate = DateTime.Now; 

     itemFromDb.Description = item.Description; 

     itemFromDb.StatusId = item.StatusId; 

     itemFromDb.Name = item.Name; 

     itemFromDb.NumericTraffic = item.NumericTraffic; 

     itemFromDb.PercentageTraffic = item.PercentageTraffic; 

     itemFromDb.Type = item.NumericTraffic; 



     itemFromDb.MamConfigurationToBrowser_V1.Clear(); 

     for (int i = 0; i < item.MamConfigurationToBrowser_V1.Count; i++) 
     { 
      var elementToAdd = item.MamConfigurationToBrowser_V1.ElementAt(i); 

      elementToAdd.Browser = mMaMDBEntities.Browsers.Single(browserItem => browserItem.BrowserID == elementToAdd.BrowserID); 

      elementToAdd.MamConfiguration_V1 = itemFromDb; 

      itemFromDb.MamConfigurationToBrowser_V1.Add(elementToAdd); 
     } 

,並出現以下錯誤:

加入clearadd命令

操作失敗:關係不能被改變,因爲一個或多個外鍵的屬性是非空的。當對關係進行更改時,相關的外鍵屬性將設置爲空值。如果外鍵不支持空值,則必須定義新的關係,必須爲外鍵屬性指定另一個非空值,或者必須刪除不相關的對象。

+0

是'MamConfigurationToBrowser_V1'和'MamConfigurationToGroups_V1'一個'名單<>'驗證這一點? – haim770 2013-04-21 07:37:35

+0

EntityCollections – 2013-04-21 07:51:38

+0

您必須從集合中添加礦石移除項目。不能取代它們。 – 2013-04-21 08:11:50

回答

0

嘗試:

itemFromDb.MamConfigurationToBrowser_V1.Clear(); 

foreach (var item in item.MamConfigurationToBrowser_V1) 
{ 
    itemFromDb.MamConfigurationToBrowser_V1.Add(item); 
} 
+0

試過了,並得到一個新的錯誤。查看我的更新 – 2013-04-21 11:48:01

0

什麼是有可能發生的是,SignalData間接改變用戶在循環過程中引擎蓋下字典,導致該消息。你可以通過改變

嘗試這個

itemFromDb.MamConfigurationToBrowser_V1.Clear(); 

foreach (var item in item.MamConfigurationToBrowser_V1.ToList()) //.ToList() 
{ 
    itemFromDb.MamConfigurationToBrowser_V1.Add(item); 
} 
相關問題