c# - 如何修复静态方法中的 dispose 对象错误?
问题描述
如何从静态函数中获取包含数据库中所有数据和参考数据的列表?我尝试使用db.Configuration.LazyLoadingEnabled = true;
但该函数仅返回项目信息并且参考数据为空。
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()){
....
}
解决方案
您可以使用 Linq 预加载并明确表达您想要包含到结果对象图中的内容。急切加载是通过.Include()
-method 实现的。
您没有提供实体的模型类,但我假设关系是一对一的(项目具有引用作为属性)。Project
以下代码段使用它的Reference
-property加载:
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;
}
推荐阅读
- angular - 等待最后一次订阅结束
- reactjs - 使用 React、Redux Form、Nodemailer 和 Express 发送电子邮件
- python - RenPy:包括。叙述者台词中的变量
- jquery - 如何通过锚打开手风琴并设置活动状态
- xcode - Xcode 未使用的 Flutter 版本信息
- android - 如何为 Google Play 签署我的应用程序包?
- java - 进行 SMTP 连接测试的 REST API 发生故障时的 HTTP 状态代码
- php - 如何在 PhpSpreadsheet 中居中对齐单元格值?
- python - 使用 OpenCV VideoWriter 将 RTSP 流存储为视频文件
- android - 如何在活动中从 drawbale 背景文件中找到项目?