我正在构建一个 4 层的 ASP.Net Web 应用程序。这些层是:
- 数据层
- 实体层
- 业务层
- 界面层
实体层具有我的数据模型类,并且是使用 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;
}
}
延迟加载被禁用,因为我不希望我的查询在此应用程序的其他层中运行。尝试访问 UI 层中的信息时收到以下错误:
ObjectContext 实例已被释放,不能再用于需要连接的操作。
我确定这是因为我的 DataModelContainer "dmc" 被处理掉了。如何从我的数据层返回此 IEnumerable 对象,使其不依赖于 ObjectContext,而仅依赖于 DataModel?
有没有办法限制延迟加载只发生在数据层?