다른 테이블 인 CLASSES와 관련된 일대 다 테이블 인 STUDENTS와 같은 테이블이 있습니다. 콤보 상자에서 클래스 중 하나를 선택하는 것을 포함하여 새로운 학생의 의견을 받기 위해 ASP.Net 양식을 만들었습니다. 이것은 작지만 멀티 티어 앱이며 엔티티 프레임 워크를 사용하기 시작했습니다. 따라서 EF는 두 테이블에 대한 클래스를 생성했습니다. 제출시 STUDENT 객체를 만들고 삽입, 업데이트 등을 위해 데이터 컨트롤러에 전달합니다.엔티티 프레임 워크를 사용하는 마스터/세부 사항
STUDENTS 테이블에 CLASSES 테이블이 CLASSES 테이블에 있습니다. 오늘 날 스튜 디언 스에 인서트를 할 때 콤보 상자에서 SelectedValue를 가져 와서 ClassId 필드에 붙여 넣었습니다. 그러나 EF의 경우 STUDENT 오브젝트에는이 ID 필드가 없습니다. 대신 CLASS 필드가 있는데 이는 해당 클래스의 전체 인스턴스입니다. 새 STUDENT 오브젝트가 빌드 될 때, CLASS 필드는 널입니다. 사용자가 콤보에서 선택한 클래스로 채 웁니다.
나는 null을 남겨 둘 수 없으며 거기에 ID를 넣을 수 없습니다. 그 클래스 레코드를 가져 와서 사용하려고 시도했지만 두 개의 다른 컨텍스트에서 같은 개체를 사용할 수 없다는 오류가 발생했습니다. 내가 여기서 정말로해야 할 일은 무엇인가?
EF4에서 FK Id가 노출되고 EntityKey를 사용할 필요가 없다는 것을 추가하고 싶습니다. – jfar
LukLed, 당신의 방법은 나를 위해 일했습니다. 저는이 방법을 좋아합니다. 왜냐하면 완전한 레코드를 얻기 위해 DB로 돌아갈 필요가 없기 때문입니다. 나는 이미 PK를 알고 있고, 나는 그것을 사용하고 싶다. 나는 당신의 코드에서 정확히 무슨 일이 일어나고 있는지 모르겠다. 전에 newStudent.BClass 객체를 초기화하고 작동하지 않는 새로운 엔티티 키를 추가하려고했습니다. 오브젝트 이름 끝에 "참조"라는 단어를 추가하는이 등록 정보는 BClass 등록 정보가 널 (NULL)인지 여부에 관계없이 작업을 완료 한 것으로 보입니다. 또한 크레이그 (Craig)의 다른 솔루션에서와 마찬가지로, 모두 하나의 상황에서 발생해야합니다. –
EntityReference는 아직로드되지 않은 탐색 속성에서 작동하는 데 사용됩니다. 또한 IsLoaded 속성과 DB에서 Entity를 가져 오는 데 사용되는 Load() 메서드를 살펴보아야합니다. http://msdn.microsoft.com/en-us/library/bb297956.aspx – LukLed