어제 물어 본 this question에 대한 후속 질문입니다. 나는 내가 슬픔을 느끼고 있다고 생각하는 문제를 정확히 추적했고, 나는 상황을 더 명확하게 설명 할 수 있다고 생각한다.엔티티 프레임 워크를 사용하여 많은 관계가 많은 개체를 어떻게 제출합니까?
저는 C# ASP.NET MVC 2 프로젝트의 Entities Framework를 사용하여 SQL 데이터베이스에 많은 관계가있는 개체를 작성하는 방법을 알 수 없습니다.
난 단지 두 개의 테이블과 매우 간단한 데이터베이스가 : 여기
내가 뭘하려합니다. 열 이름 및 설명이있는 취미 및 성과 이름이있는 열이있는 사람. 모든 것을 선택하여 기본 .edmx를 만듭니다. (둘 다 또한 내가 자동 증가하도록 설계 데이터베이스에 설정된 기본 키 (HobbieID, PersonID)로 int를 사용합니다.)
나는 성공적 다음 코드를 사용할 수 있습니다 물론 충분히
SampleEntities entities = new SampleEntities();
Hobby h1 = new Hobby() { Name = "Tennis", Description = "Not golf" };
Person p1 = new Person() { First = "Jack", Last = "Black" };
entities.Hobbies.AddObject(h1);
entities.People.AddObject(p1);
entities.SaveChanges();
을 둘 다 데이터베이스에 올바르게 추가됩니다. 이제 어디에서 깨지십니까?
데이터베이스 디자이너의 관계 팝업 창을 사용하여 외래 키를 만드는 두 개의 열 (HobbieID, PersonID)이있는 JunctionHobbiesPeople이라는 데이터베이스 테이블을 추가합니다. 그런 다음 엔터티 디자이너에 JunctionHobbiesPeople 테이블을 추가하고 (GUI를 사용하여 마우스 오른쪽 단추를 클릭하여 업데이트) 그래픽에서 대다수의 정확한 관계를 보여줍니다.
SampleEntities entities = new SampleEntities();
Hobby h1 = new Hobby() { Name = "Tennis", Description = "Not golf" };
Person p1 = new Person() { First = "Jack", Last = "Black" };
p1.Hobbies.Add(h1);
entities.People.AddObject(p1);
entities.SaveChanges();
내가 얻을 첫 번째 오류는 DefiningQuery에 관한 것입니다 :
그런 다음 다음 코드를 사용해보십시오. .edmx 파일 뒤에있는 코드에서 xml의 모든 DefiningQuery 요소를 삭제하면 문제를 해결할 수 있습니다. 말하자면, 부차적 인 질문으로, 그 요소는 무엇입니까 - 삭제하지 않을까요?
InnerException {"Invalid object name 'ModelStoreContainer.JunctionHobbiesPeople'."} System.Exception {System.Data.SqlClient.SqlException}
어떤 생각이 내가 잘못 무엇 :
그 오류가 멀리 나는 다음과 같은 오류가 진행한다
? 특별 주문으로 그들을 삽 입해야합니까? 어떻게하면 데이터베이스에 정확하게 쓰여지는 many to many 관계를 얻을 수 있습니까?도움 주셔서 감사합니다.
이전 질문에 대한 질문과 동일한 질문을 할 것입니다. JunctionHobbiesPeople에 * 실제 * PK가 있습니까? –
나는 진짜 PK인지 이해할 수 없다. 열은 키 기호로 표시되어 기본 키로 표시되었으며 접합 테이블이 존재하기 전에 테이블에 데이터를 추가하면 자동으로 증가합니다. 내가해야 할 일이 있니? – Evan
@evan - Craig는 EF 디자이너뿐만 아니라 데이터베이스에서 이야기하고 있다고 생각합니다. Hobbies and People 테이블을 두 개만 만들고 다 대 다 관계를 맺으면 어떨까요? – TheCloudlessSky