2009-06-12 3 views
0

일대 다 관계로 새 레코드를 만들 때 Entity Framework와 어려움을 겪고 있습니다. 나는 다음과 같은 테이블을 정의했습니다 :엔티티 바인딩 Winforms - 1 대 다수

엔터티 프레임 워크는 사람에 대한 탐색 속성이 탐색 속성의 이름 PersonInternetAddresses 및 InternetAddresses으로 EntityObjects 사람을 만들었습니다

Person
PersonInternetAddresses
InternetAddresses

.

새로운 InternetAddresses 레코드를 만들려면 몇 개의 텍스트 필드와 InternetAddresses에 대한 바인딩 소스가있는 양식을 만들었습니다.

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

내가 같은데요 : 나는 다음과 같은 오류를 받고 있어요 마지막 줄에

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

: 내 "새로운"버튼에서

다음 코드를 삽입 한 Entity Framework 자체가 PersonInternetAddresses 레코드를 생성한다는 것을 의미하는 InternetAddresses의 탐색 속성을 통해 사람을 설정할 수 없습니다. 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); 
     } 
관련 문제