У меня есть контроллер MVC с именем сотрудников, основанный на таблице сотрудников. В одном из полей сотрудника есть ссылка внешнего ключа на таблицу уровня доступа. Обе эти таблицы являются моделями в приложении MVC (доступ и сотрудник).
Когда я создаю представление для просмотра списка всех сотрудников, я получаю эту ошибку, и она указывает на нее, потому что она не может ссылаться на поле accessleveldescription в таблице доступа / модели.
Я получаю ошибку:
Экземпляр ObjectContext был удален и больше не может использоваться для операций, требующих подключения.
Что я хочу знать, так это как связать эти два, чтобы я мог показать информацию в виде?
Я понимаю, что AccessLevelDescription запрашивается при заполнении представления, к тому времени, когда DBContext закрылся, отсюда и ошибка, я просто не уверен, как ее исправить.
Прочитайте несколько статей, попытайтесь добавить ToList (но, вероятно, неправильно его настроили), я попытался создать переменные для хранения AccessLevelDescription, но все еще не могу связать их.
Контроллер:
// GET: Employee
public ActionResult Index()
{
List<accesslevel> AccessList = new List<accesslevel>();
List<userdetail> EmployeeList = new List<userdetail>();
using (dbEntities dbModel = new dbEntities())
{
EmployeeList = dbModel.userdetails.ToList<userdetail>();
AccessList = dbModel.accesslevels.ToList<accesslevel>();
}
return View(EmployeeList);
}
Вид:
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.UserName)
</td>
<td>
@Html.DisplayFor(modelItem => item.UserEmail)
</td>
<td>
@Html.DisplayFor(modelItem => item.UserPassword)
</td>
<td>
@Html.DisplayFor(modelItem => item.UserCreateDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.UserLastLogin)
</td>
<td>
@Html.DisplayFor(modelItem => item.accesslevel.AccessLevelDescription)
</td>
<td>
@Html.DisplayFor(modelItem => item.companydetail.CompanyName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.UserID }) |
@Html.ActionLink("Details", "Details", new { id=item.UserID }) |
@Html.ActionLink("Delete", "Delete", new { id=item.UserID })
</td>
Ожидается, что результат заполнит информацию о сотруднике вместе с установленным уровнем доступа, назначенным для сотрудника.