从DB获取对象时,是否还应加载对象的属性?似乎有这些方法。
Pro:无需检查属性是否已加载;它有。传递它,不要担心物体的某些部分不存在。
骗局:你在哪里停下来?如果一个对象有一个对象,并且该对象有一个对象,并且该对象有40个对象作为属性等等......你加载整个数据库吗?或者你在BLL中做出关于什么构成格式良好的对象并加载这些属性的决定?
Pro:快速,无需加载不必要的属性。
Con:必须不断编写代码以检查属性是否已填充。
Pro / Con:不确定该怎么说这种方法。这看起来很直观。
还有其他方法吗?什么方法最好?
最后,那些可以为null的属性呢?例如,汽车可能没有PreviousOwner对象。你把它设置为null吗?一个空的PreviousOwner对象?那个属性是否属于另一个类呢?
答案 0 :(得分:1)
你的问题没有简单的答案,因为这取决于你想要达到的目标。
看起来您期望从数据库加载或多或少完整的对象图(即,多个对象类型之间的关系以及存储在数据库中的对象本身)。
如果是这种情况,我会考虑使用我选择的语言方便的Object Relationship Mapper。
关于加载了多少对象图,Apple CoreData系统使用的模型是尚未检索的对象被标记为有缺陷(他们将概念称为“错误” - 它在Limiting the Size of the Object Graph: Faulting中描述。是你自己描述的延迟加载概念的一个游戏。