这是我的课程:
class PriceScale
-int ID
-float bookingFees
-Product product
-List<PricePeriod> periods
Class Product
-int ID
-string name
-List<PriceScale> priceScales
class PricePeriod
-DateTime begin
-DateTime end
-float price
-PriceScale scale
如您所见,我严格应用了“一个产品有多个价位,一个价位有多个周期”的业务规则。
我的问题:例如,当我处理 Product 类时,我不想问自己“是否已加载 priceScales ?” (因为我不会每次需要产品时都加载它)
解决方案 :
1/ 懒加载:我不喜欢,因为你在不知情的情况下运行sql查询,最终可能会出现1+n查询问题(我正在研究价格计算系统,所以我真的需要确定执行了哪个 sql 查询)
2/ 总是加载它:我不喜欢它,因为如果我将这个逻辑应用于所有内容,我最终会加载整个数据库。
3 /删除组合(即成员priceScales),在这种情况下,处理价格比例的最佳方法是什么:
得到一个 Dictionnary<int,List<PriceScales>> 其中的关键是产品 id ?
别的东西?
4/ 在我需要 priceScales 的方法的开头添加
checkPriceScalesAreLoaded(productList);
它看起来像延迟加载,但它更明确。
5/ 其他一些我什至没有想到的事情 :)
谢谢