我正在努力更好地理解域驱动设计中的存储库模式.存储库模式实现的所有示例仅处理实体.但是,如果我只需要检索实体的某些部分呢?例如,我有具有大量属性的客户端实体.我可以在ClientRepository中定义这样的内容:
public IEnumerable<string> GetClientsNames() { ... }
Run Code Online (Sandbox Code Playgroud)
甚至:
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() { ... }
Run Code Online (Sandbox Code Playgroud)
这种实现的原因是性能.无论如何,我认为我的代码将被这种"部分实体"污染.这种方法在现实生活中是以某种方式使用的吗?或者避免加载重实体的唯一方法是拆分表及其相应的实体或其他东西?
编辑:是的,我在说像DTO这样的东西.我怀疑存储库是用于处理这种对象,还是仅用于业务实体.我可以为特定情况定义许多不同的DTO,但是我的代码可能变得太复杂了吗?我没有答案,因为我没有经验.我想知道有经验的人的意见.