При выборе объекта не выбираются связанные объекты - PullRequest
1 голос
/ 12 мая 2009

Я изучаю ASP.NET MVC (и MVC в целом), и вся помощь, которую я нахожу в Интернете, демонстрирует использование только одной таблицы, а не отношений между несколькими таблицами. Я выполняю запрос, который, как я ожидаю, должен также вернуть связанные сущности, но это не так, и я не могу понять, что мне не хватает. Я ценю вашу помощь!

У меня есть следующие данные:

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

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

Таким образом, каждый билет связан с определенной компанией. Я пытаюсь создать представление сведений для заявок и хочу отобразить название компании. Вот что я настроил на данный момент.

Модель

A 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.

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

Ответы [ 2 ]

2 голосов
/ 12 мая 2009

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

var tickettoview = ( from t in _db.Ticket.Include("Company")
                     where t.TicketID == id
                     select t ).First();
1 голос
/ 12 мая 2009

Звучит так же, как и у меня, когда я задал этот вопрос . См. ответ, который я опубликовал , в котором описано, как я его исправил.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...