在我的存储库中,我正在从Linq Entity查询中对我的域对象进行分配。然后我有一个服务层来处理从存储库返回的这些对象。

我的Domain对象应该像这样在存储库中吗?或者我的存储库是否应限制为实体和数据访问,而是让我的服务层对域对象进行分配?

在Repository中执行所有赋值似乎更容易,但现在我的数据库和域对象之间的区别并不明显。什么是正确的做法? TIA

有帮助吗?

解决方案

IMO,如果应用程序相对简单,您无法想象将数据访问权利移除并在存储库中进行取消。但是,如果您认为该应用程序将来会变得更加复杂,或者您可能希望更改数据访问权限,请将此功能保留在存储库之外。

我已经在存储库和服务层中的其他应用程序中完成了分配,而另一个我有一个单独的转换层(它不是一对一转换,对象很复杂)。

要记住关于最佳实践的一件事,那里有帮助,如果它使事情变得更加困难则不要使用它。

其他提示

我以前不喜欢它。但现在通常永远不会回头。基本上,如果您需要更改为结构不同的外部数据源,您可以设置新的映射以及存储库代码的实现,并使用它完成。

关于数据映射。请查看以下链接: http://www.martinfowler.com/eaaCatalog/repository.html

同时检查以下相关问题:返回对象的IRepository混淆。我已经使用了类似的映射器,但是它已经使它在IQueryable级别运行,这使得在映射之后使用域对象时能够做一些非常有趣的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top