gpt4 book ai didi

c# - Lazy Operator C# 用于自己的数据访问

转载 作者:行者123 更新时间:2023-11-30 17:43:58 25 4
gpt4 key购买 nike

我目前正在 winforms 中构建一个医疗方案类型的应用程序。我已经对数据访问实现了延迟加载方法。我不能使用像 EF 或 nHibernate 这样的 ORM,所以我用自己的逻辑实现了它。我在一个类上有多个字段,例如。包含导航属性的包,例如 List<Treatment>这应该得到这个包的所有治疗。用惰性包装整个列表是不是不好的做法,它会像这样被实例化:

        Package package = new Package()
{
PackageID = record.GetInt32(0),
Name = record.GetString(1),
CoverageAmount = record.GetDecimal(2),
PackageStatus = (Status)record.GetInt32(3),
AvaliableFrom = record.GetDateTime(4),
AvaliableTo = record.GetDateTime(5),
};

package.Policies = new Lazy<List<Policy>>(() =>
{
return GetPoliciesByPackageID(package.PackageID);
});

package.Treatments = new Lazy<List<Treatment>>(() =>
{
return GetTreatmentsByPackage(package.PackageID);
});

return package;

当我想要所有的治疗方法时,我必须调用 package.Treatments.Value,但不知怎的,这感觉不对。这种方法不受欢迎吗?

最佳答案

惰性实例化本身并不是坏的做法,但是如果您通过属性公开昂贵的(就获取结果所花费的时间而言)值,那么这是不好的做法。属性旨在快速访问对象的部分状态。如果您以昂贵的方式获取数据,则公开一种方法。

关于c# - Lazy Operator C# 用于自己的数据访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30210965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com