0

在一对多关系中创建新记录时,我正在努力使用实体框架。我定义了以下表格:


PersonInternetAddresses
InternetAddresses

实体框架创建了具有名为 PersonInternetAddresses 的导航属性的 EntityObjects Person 和具有指向人员的导航属性的 InternetAddresses。

为了创建一个新的 InternetAddresses 记录,我创建了一个带有几个文本字段和 InternetAddresses 的绑定源的表单。

在我的“新建”按钮下,我放置了以下代码:

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

在最后一行我收到以下错误:

EntityCollection 已经初始化。InitializeRelatedCollection 方法只能在对象图的反序列化过程中被调用来初始化一个新的 EntityCollection。

我猜我无法通过 InternetAddresses 的导航属性设置人员,这意味着实体框架本身会创建一个 PersonInternetAddresses 记录。由于模型中没有 PersonsInternetAddresses EntityObject 我很卡住!

4

1 回答 1

2

找到了!

Persons 的类型是 EntityCollection 啊!出于测试目的,我将代码更改为:

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

        foreach(Person p in InternetAddresses.Persons)
        {
            (internetAddressesBindingSource.Current as InternetAddresses).Persons.Add(p);
        }
于 2009-06-12T09:16:58.150 回答