gpt4 book ai didi

asp.net - 显示详细信息时出错(ObjectContext 实例已被释放)

转载 作者:行者123 更新时间:2023-12-02 11:19:00 30 4
gpt4 key购买 nike

我正在构建一个 ASP.NET MVC 3 应用程序,并且我有一个如下所示的模型:

public partial class Flavor
{
// ...
public string Name { get; set; }
public bool HasNuts {get; set; }
public virtual ICollection<SaleData> Sales {get; set;}
// ...
}

它从数据库检索一些数据,如下所示:

public PartialViewResult Details(int id)
{
using (var db = new IceCreamDBFlavors())
{
Flavor someFlavor = db.Flavors.Find(id);
someFlavor.Sales = db.Sales.Where(c => c.FlavorID == id).ToList();
return PartialView("details", someFlavor);
}
}

在 View 上我做了这样的事情:

<fieldset>
<legend>Sales Data</legend>
@foreach (var sale in Model.Sales)
{
<div>Weekly</div>
<div>@sale.Weekly</div>
}
</fieldset>

如果我不检索销售数据,我的 Flavor 数据显示正常,没有错误,但添加调用以检索销售数据列表会导致错误“ObjectContext 实例已被释放,无法再使用用于需要连接的操作。” 发生。

我读过一些关于此的其他帖子,我猜我在这里遗漏了一些东西。我相信这个错误是由于延迟加载而发生的,至少根据我在这里和其他地方读到的内容。我相信,在返回 PartialView 并检查对象之前在 Controller 中设置断点会导致进行评估,因此所有内容都会按我想要的方式显示。

我的印象是 ToList() 调用会强制填写 Sales 集合。由于注释掉该行后我没有遇到问题,因此我认为问题是仍然与此相关,当 View 尝试迭代销售时,它不能。我在这里说得对吗?我想我认为是我在强制进行评估。我该如何解决这个问题?

最佳答案

我怀疑 Flavor 还有其他集合(而不仅仅是 Sales),而且实际上是在访问它破坏的那些集合时。

此处您仅替换 Sales,而其他集合或复杂属性仍需要对象上下文。

关于asp.net - 显示详细信息时出错(ObjectContext 实例已被释放),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5967352/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com