2009-06-12 46 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); 
     }