2011-11-21 3 views
0

프로젝트를 위해 EF를 사용하려고했는데 앞으로 몇 주 후에 시작될 것입니다.엔티티 프레임 워크를 사용하여 두 개 이상의 테이블 매핑

나는 이전에 생성 된 데이터베이스에 3 개의 테이블을 가지고 있습니다. (첨부 된 그림 참조) EDMX

CompanyNotice 레코드가 생성되면 하나 이상의 위치가 Locations 테이블에서 CompanyNoticeLocations 테이블로 추가되어야합니다.

**CompanyNotice** 
ID CompanyID Date      Heading Text ..... 
2 9   2011-11-21 10:17:29.573 Lorem Ipsum 1 1 1 

**CompanyNoticeLocations** 
CompanyNoticeLocationsID CompanyNoticeID LocationID 
1      2    4 
2      2    5 
3      2    1 

홈페이지 질문 :

  • 텍스트
  • 목록 제목 : 그냥 반환 CompanyNoticesWithLocations : 내가 엔티티라는를 만들 EF를 사용할 수 있는지가 사람이 말해 주시겠습니까 LocationNames

하위 질문 : 나는 엔티티 매핑에 여러 테이블없이 LINQ와 함께이 일을 시도하고 난 그 일을 가져올 수 없습니다 중 하나

Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.

+0

을 당신은 무엇을 내부 select 절에 .toList을 할 경우 ? 비록 어떤 속성 이름이 컬렉션에 대한 것이 확실하지 않습니다 ... –

+0

나는 여전히 잘못된 익명 형식 오류가 발생합니다. 나는 또한 내부 선택에 LINQ .Aggregate()를 시도하고 동일한 오류 메시지가 나타납니다. – Seany84

답변

1

회사 노트 테이블은 모델의 별도 엔티티로 존재하지 않아도됩니다. 이는 CompanyNotice와 Location 간의 많은 관계로 표현되어야합니다. Association이 올바르게 설정되어있는 한, EF는 매핑 창에서 볼 수있는 기본 조인 테이블에 매핑을 매핑합니다. 여기

는 CandidateAnswer라는 기본 조인 테이블에 협회 매핑 보여주는 내 자신의 모델 중 하나에서 많은 매핑에 많은의 예 :

enter image description here

+0

나는 당신이 여기서 제안하고있는 것을 이해합니다. 그러나 내 모델/다이어그램에서 'CompanyNoticeLocations'를 제거하면 엔터티에 대한 매핑 세부 정보가 더 이상 표시되지 않습니다. 이 다 - 대 - 다 관계를 어떻게 만들 수 있습니까? 감사합니다 – Seany84

+1

CompanyNotice 또는 Location 엔터티를 마우스 오른쪽 단추로 클릭하고 CompanyNoticesLocation이라는 연관성을 만듭니다. 그런 다음이를 속성 창 (F4)에서 many-many로 설정할 수 있습니다. –

+0

당신은이 EF에 관한 다른 질문에 관심이있을 수 있습니다 : http://stackoverflow.com/questions/8228101/aggregating-one-side-of-a-many-to-many-and-bind-to-gridview -in-entity-framework – Seany84

1
: 나는 오류가 발생하지만

using (var context = new ALEntities()) 
       { 
        var query = from c in context.CompanyNotices.Include("Locations") 
           select new 
           { 
            c.CompanyNoticeHeading, 
            c.CompanyNoticeText, 
            (from l in c.CompanyNoticesLocations select l.Location.LocationName) 
           }; 
        ASPxGridView1.DataSource = query; 
        ASPxGridView1.DataBind(); 



       } 

이 나를 위해 작동

var query = from c in context.CompanyNotices.Include("Locations") 
           select new 
           { 
            c.CompanyNoticeHeading, 
            c.CompanyNoticeText, 
            locations = (from l in c.CompanyNoticesLocations select l.Location.LocationName) 
          }; 

곳에 위치 것이라고 익명 형식의 속성의 이름 ..

+0

이 때 내 gridview 열의 출력은 실제 위치 목록이 아닌 "System.Collections.Generic.List'1 [System.String]"으로 나타납니다. – Seany84

+0

이 경우 만든 익명 형식은 companynoticeheading, companynoticetext 및 string Colllection과 같은 속성 이름을 가진 클래스가되므로 그리드보기에 다른 리피터 형식 컨트롤이 필요합니다. –

관련 문제