存储库模式表明您只能拉取聚合根。但是,如果您不知道它是父级(root),您将如何仅使用唯一身份(Child.ID)检索单个孩子?在集合根中搜索儿童
class Parent
{
public int ID { get; set; }
IEnumerable<Child> Children { get; private set; }
}
class Child
{
public int ID { get; private set; }
public virtual Parent Parent { get; private set; } // Navigational model
}
我的应用程序是无状态的(网络),为简单起见,请求只包含孩子的ID。
我想到了三种方法:
- 呼叫所有的家长则问他们礼貌谁拥有这个孩子。
- 在ParentRepository中有一个名为get GetChildByID的特殊例程,它会使存储库的抽象化失败。
- 修改请求以包含父项,但似乎不必要,因为您已具有唯一标识。
在“ChildRepository”类中创建'GetChildByID(..)'方法? –
如果你没有父母可以识别他们,那么孩子应该是一个总分。 – Hippoom
@Hippoom我对Aggregate Root的了解是有限的,你是说只要一个实体具有唯一的身份,那么他们可以被视为根?我更新了代码示例。 – Yorro