Выбор сущности не приводит к выбору связанных сущностей

Я изучаю 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 );
}

Редактировать. После рассмотрения предложения Марка Гамильтона я понял, что проблема заключается в моем запросе. Установка точки останова на возврате показывает, что tickettoview никогда не заполняется клиентом. Так что это сужает его, но я все еще не уверен, как заполнить атрибут Company.

Еще раз спасибо!


person Stephen Jennings    schedule 12.05.2009    source источник
comment
Да, трассировка стека будет хорошей.   -  person Anton Gogolev    schedule 12.05.2009


Ответы (2)


Ответ Мэтта дал мне словарь, необходимый для этого, и в конце концов привел меня на эту страницу. Добавление .Include("Company") к моему набору данных заполнило свойство Company.

var tickettoview = ( from t in _db.Ticket.Include("Company")
                     where t.TicketID == id
                     select t ).First();
person Stephen Jennings    schedule 12.05.2009

Это похоже на ту же проблему, что и у меня, когда я спросил этот вопрос. См. ответ I опубликовал , в котором описал, как я это исправил.

Я использовал Linq to SQL, а не Linq to Entities, но я предполагаю, что метод DataLoadOptions и LoadWith (или что-то подобное) все еще работает. Кто-то более осведомленный о Entity Framework может поправить меня, если я ошибаюсь.

person Matt Hamilton    schedule 12.05.2009
comment
Я не могу понять, как использовать DataLoadOptions, но теперь я понимаю, что проблема в моем контроллере, запрос не выполняет подзапрос. Я отредактирую свой вопрос. - person Stephen Jennings; 12.05.2009
comment
Ах! Linq to entity был словарем, который мне был нужен, чтобы найти ответ в Google. Спасибо. - person Stephen Jennings; 12.05.2009