Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 视图中的Foreach循环:ObjectContext实例已被释放,不能再用于需要连接的操作_Asp.net Mvc_Entity Framework_Razor_View_Foreach - Fatal编程技术网

Asp.net mvc 视图中的Foreach循环:ObjectContext实例已被释放,不能再用于需要连接的操作

Asp.net mvc 视图中的Foreach循环:ObjectContext实例已被释放,不能再用于需要连接的操作,asp.net-mvc,entity-framework,razor,view,foreach,Asp.net Mvc,Entity Framework,Razor,View,Foreach,我正在用实体框架构建一个mvc web应用程序 错误: 中发生“System.ObjectDisposedException”类型的异常 EntityFramework.dll,但未在用户代码中处理 其他信息:ObjectContext实例已被释放 并且不能再用于需要连接的操作 这是实体框架部分: 就像你看到的,我已经包括了“Alineas”和do.ToList() public IList句柄(RetrieveKoppenForDocumentQuery) { 使用(var db=new Bm

我正在用实体框架构建一个mvc web应用程序

错误:

中发生“System.ObjectDisposedException”类型的异常 EntityFramework.dll,但未在用户代码中处理

其他信息:ObjectContext实例已被释放 并且不能再用于需要连接的操作

这是实体框架部分:

就像你看到的,我已经包括了“Alineas”和do.ToList()

public IList句柄(RetrieveKoppenForDocumentQuery)
{
使用(var db=new BmDataContext())
{
var koppen=db.Kop.Where(s=>s.Document.Id==query.Id)
.包括(s=>s.TegelAfbeelding)
.包括(s=>s.CollageAfbeeldingen)
.包括(s=>s.FinancialeAfbeeldingen)
.包括(s=>s.Alineas)
.ToList();
返回_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>
@使用PGE.Bestuursmonitor.Contracts.DataTypes
@模型IList
@*递归呈现koppen的助手*@
@助手可排序项(Kop Kop)
{
@钾滴度
@kop.KopType
@kop.地位
@如果(@kop.Alineas!=null)//在这一行我收到异常
{
//在这里我想做一些逻辑
}
@foreach(kop.Koppen中的var subKop)
{
@可分类项目(子KOP);
}
}
@*递归呈现所有kop项*@
@foreach(模型中的Kop Kop)
{
@可排序项目(kop);
}
这是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" />
@model PGE.Bestuursmonitor.ViewModels.Koppen.ikopp视图模型
@模型文件
@*渲染kop列表头*@
滴度
类型
状态
科普·安马肯
@{Html.RenderPartial(“~/Views/Koppen/KopListItems.cshtml”,@Model.Koppen);}
@*将文档id存储在HTMLDOM中,以便javascript可以从多个位置访问它*@
控制器中的操作:

[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);
        }
[HttpGet]
public ActionResult KoppenList(字符串id)
{
ViewBag.PageId=id;
Document Document=\u retrieveStartPcDocumentQueryHandler.Handle(新的RetrieveStartPcDocumentQuery());
RetrieveKoppenForDocumentQuery=newretrievekoppenfordocumentquery
{
Id=document.Id
};
IList koppen=_retrieveKoppenForDocumentQueryHandler.Handle(查询);
_koppenListViewModel.Koppen=Koppen;
_koppenListViewModel.DocumentTitel=document.Titel;
_koppenListViewModel.DocumentId=document.Id;
返回视图(“~/Views/Koppen/KoppenList.cshtml”,\u koppenListViewModel);
}

正如您在KopListItems.cshtml中看到的,有2个foreach循环。外部foreach循环工作正常,可以读取“Alineas”。显示子项的内部foreach给出了这个奇怪的错误。出什么事了?我卡住了。

这就是解决办法。您还需要在子级别上获取alineas和内容:

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.Select(a => a.Content))
                    .Include(s => s.Koppen.Select(k => k.Alineas.Select(a => a.Content)))
                    .Include(s => s.Koppen.Select(k => k.Koppen.Select(x => x.Alineas.Select(a => a.Content))))
                    .ToList();
                return _orderKoppenByIndex(koppen);
            }
        }
public IList句柄(RetrieveKoppenForDocumentQuery)
{
使用(var db=new BmDataContext())
{
var koppen=db.Kop.Where(s=>s.Document.Id==query.Id)
.包括(s=>s.TegelAfbeelding)
.包括(s=>s.CollageAfbeeldingen)
.包括(s=>s.FinancialeAfbeeldingen)
.Include(s=>s.Alineas.Select(a=>a.Content))
.Include(s=>s.Koppen.Select(k=>k.Alineas.Select(a=>a.Content)))
.Include(s=>s.Koppen.Select(k=>k.Koppen.Select(x=>x.Alineas.Select(a=>a.Content)))
.ToList();
返回_orderKoppenByIndex(koppen);
}
}

这就是解决方案。您还需要在子级别上获取alineas和内容:

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.Select(a => a.Content))
                    .Include(s => s.Koppen.Select(k => k.Alineas.Select(a => a.Content)))
                    .Include(s => s.Koppen.Select(k => k.Koppen.Select(x => x.Alineas.Select(a => a.Content))))
                    .ToList();
                return _orderKoppenByIndex(koppen);
            }
        }
public IList句柄(RetrieveKoppenForDocumentQuery)
{
使用(var db=new BmDataContext())
{
var koppen=db.Kop.Where(s=>s.Document.Id==query.Id)
.包括(s=>s.TegelAfbeelding)
.包括(s=>s.CollageAfbeeldingen)
.包括(s=>s.FinancialeAfbeeldingen)
.Include(s=>s.Alineas.Select(a=>a.Content))
.Include(s=>s.Koppen.Select(k=>k.Alineas.Select(a=>a.Content)))
.Include(s=>s.Koppen.Select(k=>k.Koppen.Select(x=>x.Alineas.Select(a=>a.Content)))
.ToList();
返回_orderKoppenByIndex(koppen);
}
}

尝试将
.AsNoTracking()
添加到EF-query。我尝试添加
.AsNoTracking()
到EF-query,但出现相同错误。尝试添加
.AsNoTracking()
到EF-query,但出现相同错误。