如何从静态函数中获取数据库中所有数据和参考数据的列表?我尝试使用db.Configuration.LazyLoadingEnabled = true;
,但是该函数仅返回项目信息,而引用数据为null。
public static Project GetProject(Guid ProjectID)
{
if (!ProjectID.Equals(null))
{
using (var db = new dbEntity())
{
return db.Projects.Single(Project => Project.Id.Equals(ProjectID));
}
}
return null;
}
错误:
ObjectContext实例已被处置,无法再使用 用于需要连接的操作。
我在哪里调用函数:
@{var project = StaticMethods.GetProject(Guid.Parse(ViewContext.RouteData.Values["id"].ToString()));}
@for(var item in project.Users().ToList()){
....
}
答案 0 :(得分:0)
您可以使用Linq急切加载并明确表示要包含在结果对象图中的内容。通过.Include()
-方法可以实现较早的加载。
您没有提供实体的模型类,但是我假设关系是一对一的(Project具有Reference作为属性)。以下摘要加载了Project
属性Reference
:
public static Project GetProject(Guid ProjectID)
{
if (!ProjectID.Equals(null))
{
using (var db = new dbEntity())
{
return db.Projects.Include(r => r.Reference).Single(Project => Project.Id.Equals(ProjectID));
}
}
return null;
}
答案 1 :(得分:0)
简而言之,延迟加载是问题。
它是由以下原因引起的:
Project
您将必须执行以下一项操作
Project
使用的任何相关资源。