2010-06-04 3 views
3

.NET Framework 3.5에서 Entity Framework를 사용하고 있습니다.Entity Framework 행에서 단일 값 선택

두 개의 테이블이 0-1에서 많은 관계로 구성되어 있습니다. Citizen and City라고합시다. 각 시민들은 그를시와 연결시키는 외래 키 칼럼 (ID)을 가지고 있습니다.

나는 단 하나의 시민권을 선택할 때, 그가 살고있는 도시의 이름을 선택해야합니다. 도시 테이블에는 시민과 관련이없는 수많은 데이터가 포함되어 있으므로 대역폭을 절약하기 위해 데이터베이스에서 검색하지 않으려합니다.

현재 Include() 함수를 사용하고 있지만 도시와 관련된 모든 데이터를 시민과 관련된 것으로 취급하지만 이름 만 필요합니다.

EF의 전체 행에서 단일 셀을 선택하고 새 클래스 나 인터페이스 또는 리포지토리를 만들지 않고 쿼리를 작성하는 방법이 있습니까? 여기 내이 포함됩니다 :

  Citizen citizen = db.Citizens.Include("Cities").First(p => p.citizen_id == id); 
+0

시민 모델에 도시 모음이 있습니까? –

+0

시민이 0 또는 단 하나의 도시를 가질 수 있다면 왜 컬렉션이 있을까요? – Alex

답변

2

당신은, 예를 들어, 투사하여이 작업을 수행 할

var c = from c in db.Citizens 
     where c.citizen_id == id 
     select new 
     { 
      Name = c.Name, 
      CityName = c.City.Name 
     }; 

또한 POCO에 투영 할 수도 있습니다.

당신 는 관련 City으로 만 City.Name 채워과 유형 Citizen의 객체를 검색 할 EF 말할 수 없습니다. EF의 일부 엔티티를 실현하지 않습니다. 필드가 약간만 필요한 경우 엔티티 대신보기/프리젠 테이션 모델 또는 DTO를 사용하십시오.

+0

고마워요,이게 내가 찾고 있었던거야. var c에서 cityName을 즉시 가져올 수 있습니까? 내가보기 모델을 사용하고 있지 않다고할까요? – Alex

+0

'var cityName = c.First(). CityName;'과 같은 뜻입니까? –