2016-06-18 4 views
0

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

У меня создается впечатление, что я могу получить все значения из конкретной таблицы, включая значения внешнего ключа, напрямую с использованием сущности, без необходимости писать запрос выбора, который объединяет данные.

У меня есть следующие в моем контроллере

public ActionResult Patient() 
    { 
     using (var context = new WaysToWellnessDB()) 
     { 
      var patients = context.Patients.ToList(); 
      return View(patients); 
     } 
    } 

На мой взгляд, я следующий

@foreach (var item in Model) 
{ 
    <p> 
     @item.FirstName @item.Surname @item.Gender.GenderDesc 
    </p> 
} 

У меня есть две таблицы, Patient и Пол, GenderId внешний ключ, который я пытаюсь чтобы получить из этой таблицы значение GenderDesc.

Я получаю следующее сообщение

Экземпляр ObjectContext были захоронены и больше не могут быть использованы для операций, требующих соединения.

Может кто-нибудь объяснить, почему я не могу получить доступ к GenderDesc. Он работает, если я удаляю использование() вокруг моего контекста, но я действительно не хочу оставлять это открытым, есть ли способ заставить это работать, все еще используя его?

Заранее спасибо.

ответ

1

Правильно, вы выбрали контекст, поскольку он находится в операторе using, поэтому все, что вы пытаетесь получить с этого момента, не сможет быть ленивым. Недостатком ленивой загрузки является то, что он выполнит запрос для пола для каждого пациента, которого вы итерируете, что удобно, но плохо! Я бы загрузил связанную таблицу во время запроса с помощью Include.

Вам нужен новый импорт:

using System.Data.Entity; 

А затем включить связанную таблицу:

var patients = context.Patients.Include(p => p.Gender).ToList(); 

Это приведет к запросу, который присоединится к вашему «Пол» таблицы и вы должен иметь возможность выводить item.Gender.GenderDesc на ваш взгляд.

+0

Легенда спасибо, что это именно то, что мне нужно. – user3284707