2015-01-31 37 views
0

我已经在我的解决方案如下项目类库结构:实体框架预测和返回类型

Application.Domain.Models : Entities like User, Customer. Application.DataAcess : IUserRepository, ICustomerRepository Application.Business : IUserService, ..

对于一个操作我只需要在客户名称和CustomerAddress然后我将使用实体框架投影回报只有这个属性。

我的问题是,我应该创建一个实体存储只有这个属性,并从这个操作返回它,或者我应该返回一个客户实体只有这两个属性和所有其他没有价值?

如果应该创建一个新的实体,它应该放入什么层? Domain.Models,Domain.AnotherFolder或Business?

回答

2

从技术上讲,你不应该构造无效的对象。所以只需取得你的整个实体并使用你需要的东西。这也意味着你可以重用一些现有的代码。您可以创建另一个实体,但这应该与您的域模型相符。它将进入领域。如果您只是简单地检索要在域外使用的数据,则可以考虑使用轻量级只读查询层,将数据传递给想要读取数据的人。

+0

当你说“技术上你不应该构造无效物体”时,我同意你的意见。但另一方面,如果我有一个byte []属性在我的Customer实体上存储图像,我将浪费许多资源并导致不必要的开销加载它并且无用。 如何解决? – 2015-01-31 19:54:05

+1

@ViniciusGonçalves是的我同意,不应该在你的实体上生活,因为它可能不是你操作的东西。制作一个dto来携带这种类型的数据将会是最好的。你可以把它放在一个通用的层上,以供应用程序和数据访问使用。域名不会知道。 – SneakyPeet 2015-01-31 20:06:45