我有一个具有 A 类实体的应用程序。A 有一个字段 B,它由一些视图模型使用,但不是全部。字段 B 在不同来源的单独加载操作中加载。
哪个层应该负责加载这个字段B?我看到了三种选择:
- 在 A 中实现逻辑以在 B 被访问时加载它。它可以工作,但需要 A 类中的一些逻辑。我觉得实体类应该有最少的逻辑,当然没有与从数据源加载数据相关的逻辑(但我可能错了)。
- 让数据访问层 (DAL) 在加载 A 的实例时加载 B。这不是最优的,因为从数据源(远程服务器)加载数据很慢,并且只有少数 A 的实例需要该字段B.
- 如果需要,让视图模型使用 DAL 加载 B。在我看来,这(一个在 MVVM 方面相对缺乏经验的人)是最“MVVM-y”的方式。
与#1 相比,#3 在“它只是工作”因素方面似乎不那么“优雅”(使用#1,访问字段 B 将自动从数据源加载它)。但是#3似乎以更好的方式分离了关注点,因为实体对象没有被赋予加载更多数据的责任。