【问题标题】:ObjectDisposedException while actually no connection is neededObjectDisposedException 而实际上不需要连接
【发布时间】:2016-12-12 23:40:03
【问题描述】:

我收到以下错误:

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

真的很好笑

1.我使用预加载

2-Tracing 显示加载的值

3-在第一行代码中获取数据,然后在后面的行中给出错误

型号

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>

错误在视图的第5行data-id="@Model.Auctions[i].Id"

【问题讨论】:

  • 最初是否加载了AuctionImages? (@Model.Auctions[i].AuctionImages.First().Filename)
  • @StephenMuecke 非常感谢。它解决了问题,但我找不到问题的原因是该行之前的某个地方出现了错误。为什么会这样?
  • Razor 有时会这样做。最好在视图上放置一个断点并单步执行以细化抛出异常的行

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


【解决方案1】:

您的视图包括(在&lt;img&gt; 标记中)

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

但您的查询中不包括AuctionImages。改成

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 2016-06-16
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 2023-02-26
  • 2012-06-03
相关资源
最近更新 更多