我与可以软删除的“子”实体建立了一对多的关系。我必须在两种不同的情况下加载包含子实例的父实例:
- 编辑场景:加载所有孩子,包括那些已经“删除”的孩子。
- 查看场景:只加载没有被“删除”的孩子。
我可以想到在域模型中实现这一点的两种不同方式,我的问题是:EF 代码优先支持哪些方式,每种方式的相对复杂性是多少?
- 两个映射集合属性:
IList<Child> Children
和IList<Child> DeletedChildren
. - 一个映射集合属性
IList<Child> Children
和一个IsActive
属性 onChild
用于标记尚未删除的子项。然后对于场景 2,我需要加载父级,以便Children
过滤为仅包含尚未删除的实例。
我还想提一下,以防万一,这种情况是分层的(但只有两层深)。也就是说,孩子本身就是另一个“软删除”情况的父母。