创建计划存储库,但在构造函数正文中使用关键字
本文关键字:正文 关键字 构造函数 存储 计划 创建 | 更新日期: 2023-09-27 18:34:20
我有一个类,它需要在每个方法中访问planInfo
LINQ 变量。有没有办法在不删除 using 语句并在每个方法中调用Dispose()
的情况下做到这一点?
我知道的唯一另一种方法是将 using 语句放在每个方法中并将其从构造函数中删除,但这是在每个方法中重复 where 子句,但我希望它是常量。
public class PlanRepository
{
private int _patientId = 0;
private IQueryable<Plan> planInfo;
public PlanRepository(int pid)
{
if (pid == 0) { UserAccess.RedirectToLogin(); }
_patientId = pid;
using (var db = new DbConn())
{
planInfo = db.Plans.Where(d => d.PatientId == _patientId);
}
}
public int GetPulse()
{
return planInfo.Select(d => d.Pulse).FirstOrDefault();
}
}
此代码显然会引发数据库连接已关闭的错误。
只需在
构造函数中具体化列表:
planInfo = db.Plans.Where(d => d.PatientId == _patientId).ToList();
现在,这会缓存数据(您不会看到任何数据库更新),但是如果您一开始就不想维护数据库连接,那应该不是问题。
具体化列表后,所有其他功能都可以毫无问题地使用它。