2009-05-12 3 views
1

ASP.NET MVC (일반적으로 MVC)를 배우고 온라인에서 찾은 모든 도움말은 여러 테이블 간의 관계가 아닌 단일 테이블을 사용하는 방법을 보여줍니다. 관련된 엔티티를 반환해야하는 쿼리를 실행하고 있지만 쿼리가 누락 된 항목이 무엇인지 파악할 수는 없습니다. 도와 줘서 고마워! 엔터티를 선택해도 연결된 엔터티가 하위 선택되지 않습니다.

Ticket 
    TicketID CompanyID Subject ... 
    -------- --------- ------- 
    1   1   "stuff" 
    2   1   "things" 

Company 
    CompanyID Name  ... 
    --------- -------- 
    1   "FredCo" 

그래서 모든 티켓은 특정 회사에 링크 :

나는 다음과 같은 데이터가 있습니다. 티켓에 대한 세부 정보보기를 만들려고하고 회사 이름을 표시하려고합니다. 여기 내가 지금 설정 한 것이있다.

모델

Ticket 엔티티 및 Company 엔티티와 연관가 그들 사이 CompanyTicket 불렀다. 탐색 속성은 Ticket.Company 및 Company.Tickets입니다. 협회에 대한 매핑 정보에

, 내가 가진 :

Maps to Ticket 
    Company.CompanyID <-> CompanyID 
    Ticket.TicketID <-> TicketID 

컨트롤러

내 TicketController.Details 방법은 다음과 같습니다

public ActionResult Details(int id) 
{ 
    var tickettoview = (from m in _db.Ticket 
         where m.TicketID == id 
         select m).First(); 
    return View(tickettoview); 
} 

편집 : 후 마크 해밀턴 (Mark Hamilton)의 제안을 거치면서 문제는 내 질문임을 깨달았습니다. 리턴에 중단 점을 넣으면 tickettoview에는 고객이 채워지지 않습니다. 따라서이 방법으로 범위를 좁히지 만 회사 특성을 채우는 방법을 아직 확신 할 수 없습니다.

다시 고맙습니다.

+0

예, 스택 추적이 좋을 것입니다. –

답변

2

매트의 대답은 내가 이것을 위해 필요로하는 어휘를 주었고, 결국 this page에 나를 데려왔다. 내 데이터 세트에 .Include("Company")을 추가하면 Company 속성이 채워집니다.

var tickettoview = (from t in _db.Ticket.Include("Company") 
        where t.TicketID == id 
        select t).First(); 
1

이것은 내가 묻는 동일한 문제인 것 같습니다. this question. 어떻게 수정했는지 설명하는 answer I posted을 참조하십시오.

Linq to Entity 대신 Linq를 사용했지만 DataLoadOptions 및 LoadWith 메서드 (또는 이와 비슷한 함수)가 여전히 작동한다고 가정합니다. Entity Framework에 대해 더 많이 알고있는 사람은 내가 틀렸다면 나를 바로 잡을 수 있습니다.

+0

DataLoadOptions를 사용하는 방법을 알 수는 없지만 문제가 모두 내 컨트롤러에 있다는 것을 알았습니다. 쿼리가 하위 쿼리를 실행하고 있지 않습니다. 내 질문을 수정하겠습니다. –

+0

아! "Linq to entities"는 Google에서 답을 찾는 데 필요한 어휘였습니다. 감사. –

관련 문제