【发布时间】:2014-07-22 21:20:01
【问题描述】:
我试图更好地理解领域驱动设计中的存储库模式。存储库模式实现的所有示例都仅处理实体。但是如果我只需要检索实体的一部分呢?例如,我有具有大量属性的客户端实体。我可以在 ClientRepository 中定义这样的东西吗:
public IEnumerable<string> GetClientsNames() { ... }
偶数:
class ClientBaseInfo //includes some subset of properties of Client entity
{
public string Name {get; set;}
public string Surname {get; set;}
public int Age {get; set;}
public string Email {get; set;}
}
....
public IEnumerable<ClientBaseInfo> GetClientsBaseInfo() { ... }
这种实现的原因是性能。无论如何,我认为我的代码会被这种“部分实体”污染。这种方法是否以某种方式用于实际项目中?或者避免加载繁重实体的唯一方法是拆分表及其对应的实体或其他?
编辑:是的,我说的是 DTO 之类的东西。我怀疑存储库是否旨在处理此类对象,或者仅用于业务实体。我可以为特定情况定义很多不同的 DTO,但是我的代码会变得太复杂吗?我没有答案,因为我没有足够的经验。我想知道有经验的人的意见。
【问题讨论】:
-
你不应该颠倒继承概念
-
你能定义“大量的属性”吗?当您从 Repo 中获取 Aggregate Root 时,它应该被完全加载。如果它太大,也许你应该考虑改变你的聚合设计。
标签: c# entity domain-driven-design repository-pattern