2010-07-22 4 views
2

어제 물어 본 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 관계를 얻을 수 있습니까?

도움 주셔서 감사합니다.

+1

이전 질문에 대한 질문과 동일한 질문을 할 것입니다. JunctionHobbiesPeople에 * 실제 * PK가 있습니까? –

+0

나는 진짜 PK인지 이해할 수 없다. 열은 키 기호로 표시되어 기본 키로 표시되었으며 접합 테이블이 존재하기 전에 테이블에 데이터를 추가하면 자동으로 증가합니다. 내가해야 할 일이 있니? – Evan

+1

@evan - Craig는 EF 디자이너뿐만 아니라 데이터베이스에서 이야기하고 있다고 생각합니다. Hobbies and People 테이블을 두 개만 만들고 다 대 다 관계를 맺으면 어떨까요? – TheCloudlessSky

답변

5

당신이 2010 년에 게시 한 이후로 이미이 문제를 해결했다고 가정합니다. 어쨌든 이것은 다른 사람에게 도움이 될 수 있습니다. MVC3을 사용하여 동일한 문제가있었습니다.

<EntitySet Name="StockUpdates" EntityType="SwebotModel.Store.StockUpdates" store:Type="Tables" store:Schema="dbo" store:Name="StockUpdates"/> 

이에 내가 그것을 변경이 문제를 해결하려면 :

<EntitySet Name="StockUpdates" EntityType="SwebotModel.Store.StockUpdates" store:Type="Tables" Schema="dbo"/> 

제거 가기 : 이름 및 내 원래 edmx 파일은 다음처럼 보였다 행했다 "상점 :"스키마 전에.

관련 문제