c# - Entity Framework 和 Web API ObjectDisposedException

标签 c# entity-framework serialization asp.net-web-api json.net

我有一个使用 Entity Framework 5 连接到 Sql Server 的数据层。我还有一个获取一些数据的 LINQ 查询。当与 Web API 一起使用时,此查询失败。我得到 ObjectDisposedException。这是查询:

using (MyContext container = new myContext())
{
    return container.Sales
                    .Include("Products")
                    .Where(s => s.Id == id)
                    .FirstOrDefault();
}

数据层是一个dll,暴露给业务层,也是一个dll,由web api controller调用。我曾假设 JSON 序列化程序延迟加载包含,但我的修复都没有奏效。有任何想法吗?如果缺少信息,我会根据需要更新问题。

下面是业务层对数据层的调用:

public Sale GetSale(int id)
{
    SaleRepository s = new SaleRepository();
    return s.GetSale(id);
}

最后是对业务层的 web api 调用:

public Sale GetSale(int id)
{
    SaleManager s = new SaleManager();
    return s.GetSale(id);
}

异常(exception)情况:

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

最佳答案

发生这种情况是因为在处理完 DbContext 后才执行延迟加载。

要解决此问题,您可以通过执行以下操作来禁用延迟加载:

container.Configuration.LazyLoadingEnabled = false;

关于c# - Entity Framework 和 Web API ObjectDisposedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573701/

相关文章:

c# - Entity Framework 可以为非空列创建具有默认值的对象吗?

c# - 类名 : Append DTO or Entity

c# - 自定义验证属性 : Comparing two properties in the same model

entity-framework - Entity Framework -渴望加载相关实体

c# - 使用 C# 和 ASP.Net 转义 MySQL 中的特殊字符

c# - DDD 中的创建日期和创建者放在哪里?

c# - 使用不带属性的 Newtonsoft.Json 序列化和反序列化自定义类型

Java:存储和读取10亿条数据记录的最佳方法

c# - 在 ASP.NET 中将事件从页面发送到其母版页

c# - 如何在RDLC中格式化日期时间以本地日期时间格式显示?