2009-06-12 57 views
0

當在一對多關係中創建新記錄時,我正在與實體框架苦苦掙扎。我下面的表中定義:Winforms中的實體綁定 - 一對多

Person
PersonInternetAddresses
InternetAddresses

實體框架創造了EntityObjects人用導航屬性命名PersonInternetAddresses和InternetAddresses與導航屬性的人。

要創建我創建了一個形式與一對夫婦的文本字段和BindingSource的InternetAddresses新InternetAddresses紀錄。

在我的「新建」按鈕我已經放在下面的代碼:

internetAddressesBindingSource.AddNew();    
(internetAddressesBindingSource.Current as InternetAddresses).Id = Guid.NewGuid(); 
(internetAddressesBindingSource.Current as InternetAddresses).Persons = InternetAddresses.Persons; 

在最後一行,我發現了以下錯誤:

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

我猜我無法通過InternetAddresses的導航屬性來設置此人,這意味着實體框架本身會創建PersonInternetAddresses記錄。由於模型中沒有PersonsInternetAddresses EntityObject,所以我很困難!

回答

2

找到了!

人的類型是EntityCollection咄的! 出於測試目的,我將代碼更改爲:

internetAddressesBindingSource.AddNew();    
     (internetAddressesBindingSource.Current as InternetAddresses).Id = Guid.NewGuid();    

     foreach(Person p in InternetAddresses.Persons) 
     { 
      (internetAddressesBindingSource.Current as InternetAddresses).Persons.Add(p); 
     }