gpt4 book ai didi

c# - ASP.NET 样板 - "The ObjectContext instance has been disposed"异常

转载 作者:行者123 更新时间:2023-11-30 22:00:09 24 4
gpt4 key购买 nike

我正在尝试使用 ASP.NET Boilerplate 来处理我的项目,但我遇到了一个严重的问题。

我有 2 个模型:照片和评论:

public class Comment : Entity<int>
{
[DataType(DataType.MultilineText)]
public string Text { get; set; }
public string Author { get; set; }

public int ItemID { get; set; }
public virtual Item Item { get; set; }
}

public class Item : Entity<int>
{
public string Title { get; set; }

public string Description { get; set; }

public ItemSourceType SourceType { get; set; }

public byte[] PhotoBytes { get; set; }

public string Url { get; set; }

public virtual ICollection<Comment> Comments { get; set; }

}

此外,我还根据 RepositoryBase<Item> 创建了默认的 OOB 存储库Comment 也一样.

当我尝试这样获取 Item 时存在问题:

    public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}

Item item = _repoItems.Get(id.Value);
if (item == null)
{
return HttpNotFound();
}
return View(item);
}

当我调试这段代码时,我可以看到 itemComments 中有此异常属性(property)。

我是否遗漏了 ASP.NET 样板中的某些内容或什么?

感谢您的帮助!

//编辑:完整异常消息:

{"The ObjectContext instance has been disposed and can no longer be used for operations that require a connection."}

最佳答案

我刚刚遇到了同样的问题。似乎是 UnitOfWork 实现为每个“UnitOfWork”创建并配置了一个新的 DbContext

因此,要解决该特定问题,请尝试注入(inject)“IUnitOfWorkManager”并打电话

    public ActionResult Details(int? id)    {        if (id == null)        {            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);        }        using(var uow = _unitOfWorkManager.Begin())        {            try            {                Item item = _repoItems.Get(id.Value);                if (item == null)                {                    return HttpNotFound();                }                return View(item);            }            finally            {               uow.Complete()            };        }    }

如果可行,请考虑在 ApiController 的构造函数中调用“Begin()”,并在其“Dispose()”覆盖中调用“Complete()”。希望对您有所帮助!

关于c# - ASP.NET 样板 - "The ObjectContext instance has been disposed"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28772736/

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