2014-02-22 3 views
0

여기에서 항목을 검색하고 항목 작성자를 포함합니다. 목표는 전체 사용자 모델이 아니라 작성자의 성과 이름 만 포함시키는 것입니다. 그것은 잘 작동특정 속성 만 포함()

 public User Creator { get; set; } 

,하지만 정말 난 그냥 이름과 성을 원하는 전체 사용자 모델을로드 :

var items = _db.Items.Include("Creator") 

항목 모델은이 같은 탐색 속성으로 Creator 있습니다.

어떻게 사용자 모델에서 반환 된 특정 속성 만 지정하겠습니까?

+0

당신은 할 수 있습니다 속성의 하위 집합으로 만 엔터티 개체를 구체화하지 않습니다. 이로 인해 유효하지 않은 항목이 생성 될 수 있습니다. 익명 또는 명명 된 다른 클래스로 프로젝트해야합니다. 이를 위해 DTO를 정의하거나 모델 클래스를 보는 것이 일반적입니다. –

답변

1

Include을 사용하여 수행 할 수 없습니다. 대신 Select를 사용할 수 있습니다

var items = _db.Items.Select(i => new { Item = i, Creator = new { i.Creator.FirstName, i.Creator.LastName } }); 

업데이트

당신이 결과를 보유 할 수있는 클래스를 만들 필요가 방법의 결과로 해당 쿼리를 반환해야하는 경우 :

public class ItemWithCreatorNames 
{ 
    public Item Item { get; set; } 
    public string CreatorFirstName { get; set; } 
    public string CreatorLastName { get; set; } 
} 

var items = _db.Items.Select(i => new ItemWithCreatorNames { Item = i, CreatorFirstName = i.Creator.FirstName, CreatorLastName = i.Creator.LastName }); 
+0

어떻게 IQueryable로 반환합니까? 나는 한 걸음도 빠뜨린 것 같다. – user2827377

관련 문제