我正在用实体框架 Build 一个mvc web应用程序 .
错误:
EntityFramework.dll中出现“System.ObjectDisposedException”类型的异常但未在用户代码中处理附加信息:ObjectContext实例已被释放,不能再用于需要连接的操作 .
这是实体框架部分:
就像你看到我已经包含“Alineas”并做.ToList()
public IList<Kop> Handle(RetrieveKoppenForDocumentQuery query)
{
using (var db = new BmDataContext())
{
var koppen = db.Kop.Where(s => s.Document.Id == query.Id)
.Include(s => s.TegelAfbeelding)
.Include(s => s.CollageAfbeeldingen)
.Include(s => s.FinancieleAfbeeldingen)
.Include(s => s.Alineas)
.ToList();
return _orderKoppenByIndex(koppen);
}
}
这是KopListItems.cshtml的视图:
@using PGE.Bestuursmonitor.Contracts.DataTypes
@model IList<Kop>
@* Helper for recursively rendering koppen*@
@helper SortableItem(Kop kop)
{
<div class="sortable-item" data-kopid="@kop.Id">
<div class="row">
<div class="col-md-7 title-column">
<i class="fa fa-arrows"></i> @kop.Titel
</div>
<div class="col-md-5">
<div class="col-md-3">
<span>
@kop.KopType
</span>
</div>
<div class="col-md-3">
<span>
@kop.Status
</span>
</div>
<div class="col-md-6">
<span class="pull-right">
@if (@kop.Alineas != null) // on this line I receive the exception
{
// here I would like to do some logic
}
</span>
</div>
</div>
</div>
<div class="sortable-container">
@foreach (var subKop in kop.Koppen)
{
@SortableItem(subKop);
}
</div>
</div>
}
@* Recursively render all kop items *@
<div id="koppen_sortable" class="sortable-container">
@foreach (Kop kop in Model)
{
@SortableItem(kop);
}
</div>
这是KoppenList.cshtml的视图:
@model PGE.Bestuursmonitor.ViewModels.Koppen.IKoppenListViewModel
<h1>@Model.DocumentTitel</h1>
@* Render kop list header *@
<div id="koppen_sortable_header">
<div class="row">
<div class="col-md-7"><strong>Titel</strong></div>
<div class="col-md-5">
<div class="col-md-3">
<strong>Type</strong>
</div>
<div class="col-md-3">
<strong>Status</strong>
</div>
<div class="col-md-6">
<span class="pull-right">
<button type="button" id="btn_add_sub" class="btn btn-success" title="Kop aanmaken" role="button" onclick="BM.Koppen.LoadAddKopView(null);">
<i class="fa fa-plus fa-lg"></i> Kop aanmaken
</button>
</span>
</div>
</div>
</div>
</div>
<div id="koppen_sortable_body">
@{ Html.RenderPartial("~/Views/Koppen/KopListItems.cshtml", @Model.Koppen); }
</div>
@* Store document id in html DOM, so javascript can reach it from multiple places *@
<input type="hidden" id="document_id" value="@Model.DocumentId" />
控制器中的动作:
[HttpGet]
public ActionResult KoppenList(string id)
{
ViewBag.PageId = id;
Document document = _retrieveStartPcDocumentQueryHandler.Handle(new RetrieveStartPcDocumentQuery());
RetrieveKoppenForDocumentQuery query = new RetrieveKoppenForDocumentQuery
{
Id = document.Id
};
IList<Kop> koppen = _retrieveKoppenForDocumentQueryHandler.Handle(query);
_koppenListViewModel.Koppen = koppen;
_koppenListViewModel.DocumentTitel = document.Titel;
_koppenListViewModel.DocumentId = document.Id;
return View("~/Views/Koppen/KoppenList.cshtml", _koppenListViewModel);
}
就像你在KopListItems.cshtml中看到的那样,有2个foreach循环 . 外部的foreach循环工作正常,可以读作“Alineas” . 显示子项的内部foreach给出了这个奇怪的错误 . 出了什么问题?我卡住了 .
1 回答
这是解决方案 . 您还需要在子级别上获取alineas和内容: