Связывание сущностей в Winforms - один ко многим - PullRequest
0 голосов
/ 12 июня 2009

Я борюсь с Entity Framework при создании новой записи в отношении один ко многим. У меня определены следующие таблицы:

лицо
PersonInternetAddresses
Интернет-адреса

Платформа Entity Framework создала EntityObjects Person со свойством навигации PersonInternetAddresses и InternetAddresses со свойством навигации по лицам.

Чтобы создать новую запись InternetAddresses, я создал форму с парой текстовых полей и источником привязки к InternetAddresses.

Под моей «новой» кнопкой я поместил следующий код:

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

В последней строке я получаю следующую ошибку:

EntityCollection уже инициализирована. Метод InitializeRelatedCollection следует вызывать только для инициализации новой коллекции EntityCollection во время десериализации графа объектов.

Я предполагаю, что я не могу установить человека через свойство навигации InternetAddresses, которое будет означать, что сама Entity Framework создаст запись PersonInternetAddresses. Поскольку в модели нет объекта EntityObject PersonsInternetAddresses, я застрял!

1 Ответ

2 голосов
/ 12 июня 2009

Нашли!

Персоны относятся к типу EntityCollection! В целях тестирования я изменил код на:

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

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