创建计划存储库,但在构造函数正文中使用关键字

本文关键字:正文 关键字 构造函数 存储 计划 创建 | 更新日期: 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();

现在,这会缓存数据(您不会看到任何数据库更新),但是如果您一开始就不想维护数据库连接,那应该不是问题。

具体化列表后,所有其他功能都可以毫无问题地使用它。