ObjectDisposedException,而实际上不需要连接

时间:2016-12-12 23:40:04

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我收到以下错误:

  

System.ObjectDisposedException:ObjectContext实例已被释放,不能再用于需要连接的操作。

这真的很有趣

1.我使用急切加载

2-Tracing显示加载的值

3-Getting数据在第一行代码中起作用,然后在后面的行中产生错误

模型

public class EndedAuctionsModel{
    public Auction[] Auctions { get; set; }
    public int Count { get; set; }
    public int PerPage = 10;
    public int Page { get; set; }
}

控制器

    public ActionResult Ended(EndedAuctionsModel m)
    {
        m.Page = ((string)ControllerContext.RouteData.Values["id"]).PInt(1);
        using(Entities db = new Entities())
        {
            m.Auctions = db.Auctions.Include("participations").Where(a => a.Ends < DateTime.Now).OrderByDescending(a=>a.Ends).Skip((m.Page-1)*m.PerPage).Take(m.PerPage).ToArray();
            m.Count = db.Auctions.Count(a => a.Ends < DateTime.Now);
        }
        return View(m);
    }

查看

        <div class="participated">
            @for (int i = 0; i < Model.Auctions.Length; i++)
            {
                Participation last = Model.Auctions[i].Participations.OrderBy(p => p.Date).Last();
                <div class="col-md-12 auction" style="background:#eee; margin:5px 0;padding:10px;" data-id="@Model.Auctions[i].Id">
                    <div class="col-md-4"><img src="~/data/pimgs/@Model.Auctions[i].AuctionImages.First().Filename" style="width:100%;border-radius:10px;" /></div>
                    <div class="col-md-8">
                        <h3>@Model.Auctions[i].Name</h3>
                        <div><i class="fa fa-money big-blue"></i>قیمت شروع مزایده: <strong>@Model.Auctions[i].BasePrice.Value.ToString("N0")</strong></div>
                        @{ string username = last.GetUserName(); if (username == null) { username = "-"; } }
                        <div><i class="fa fa-gavel big-blue"></i>برنده مزائده: <strong class="last-user"><a href="/Home/Profiles/@username">@username</a></strong></div>
                        <div><i class="fa fa-user big-blue"></i>قیمت نهایی: <strong class="last-price">@((Model.Auctions[i].BasePrice + Model.Auctions[i].Participations.Count * Model.Auctions[i].StepPrice).Value.ToString("N0"))</strong></div>
                    </div>
                </div>
                            }
        </div>

错误发生在视图data-id="@Model.Auctions[i].Id"

的第5行

enter image description here

1 个答案:

答案 0 :(得分:2)

您的观点包括(在<img>标记中)

@Model.Auctions[i].AuctionImages.First().Filename

但您的查询中不包括AuctionImages。将其更改为

m.Auctions = db.Auctions.Include("participations").Include("AuctionImages").Where(....