相关疑难解决方法(0)

ASP.Net Entity Framework,objectcontext错误

我正在构建一个4层ASP.Net Web应用程序.这些图层是:

  1. 数据层
  2. 实体层
  3. 业务层
  4. UI层

实体层具有我的数据模型类,并使用T4模板(POCO)从数据层中的实体数据模型(edmx文件)构建.实体层在所有其他层中引用.

我的数据层有一个名为SourceKeyRepository的类,它具有如下函数:

public IEnumerable<SourceKey> Get(SourceKey sk)
{
    using (dmc = new DataModelContainer())
    {
        var query = from SourceKey in dmc.SourceKeys
                    select SourceKey;

        if (sk.sourceKey1 != null)
        {
            query = from SourceKey in query
                    where SourceKey.sourceKey1 == sk.sourceKey1
                    select SourceKey;
        }

        return query;
    }
}
Run Code Online (Sandbox Code Playgroud)

由于我不希望我的查询在此应用程序的其他层中运行,因此禁用了延迟加载.尝试访问UI层中的信息时,我收到以下错误:

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

我确定这是因为我的DataModelContainer"dmc"被处理掉了.如何从我的数据层返回此IEnumerable对象,以便它不依赖于ObjectContext,而只依赖于DataModel?

有没有办法限制延迟加载只发生在数据层?

.net lazy-loading objectdisposedexception objectcontext

11
推荐指数
3
解决办法
2万
查看次数