2009-06-12 6 views
0

Ich habe mit dem Entity Framework zu kämpfen, wenn Sie einen neuen Datensatz in einer Eins-zu-viele-Beziehung erstellen. Ich habe die folgenden Tabellen definiert:Entity Binding in Winforms - eins zu viele

Person
PersonInternetAddresses
InternetAddresses

Das Entity Framework die EntityObjects Person mit einem Navigations Eigenschaft namens PersonInternetAddresses und InternetAddresses mit einer Navigationseigenschaft zu Personen geschaffen hat.

Um einen neuen InternetAddresses-Datensatz zu erstellen, habe ich ein Formular mit ein paar Textfeldern und einer Bindingsource für Internetadressen erstellt.

Unter meinem „neuen“ Button habe ich den folgenden Code platziert:

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

In der letzten Zeile ich folgende Fehlermeldung bin immer:

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

ich, dass ich vermute, bin kann die Person nicht über die Navigationseigenschaft der Internetadressen festlegen, was bedeuten würde, dass das Entity Framework selbst einen PersonInternetAddresses-Datensatz erstellen würde. Da es kein EntityObject PersonsInternetAddresses im Modell gibt, bin ich ziemlich fest!

Antwort

2

Es gefunden!

Personen sind vom Typ EntityCollection duh! Zu Testzwecken habe ich den Code wie folgt geändert:

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

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