在我的存储库中,我正在从Linq Entity查询中对我的域对象进行分配。然后我有一个服务层来处理从存储库返回的这些对象。
我的Domain对象应该像这样在存储库中吗?或者我的存储库是否应限制为实体和数据访问,而是让我的服务层对域对象进行分配?
在Repository中执行所有赋值似乎更容易,但现在我的数据库和域对象之间的区别并不明显。什么是正确的做法? TIA
答案 0 :(得分:2)
IMO,如果应用程序相对简单,您无法想象将数据访问权利移除并在存储库中进行取消。但是,如果您认为该应用程序将来会变得更加复杂,或者您可能希望更改数据访问权限,请将此功能保留在存储库之外。
我已经在存储库和服务层中的其他应用程序中完成了分配,而另一个我有一个单独的转换层(它不是一对一转换,对象很复杂)。
要记住关于最佳实践的一件事,那里有帮助,如果它使事情变得更加困难则不要使用它。
答案 1 :(得分:2)
我以前不喜欢它。但现在通常永远不会回头。基本上,如果您需要更改为结构不同的外部数据源,您可以设置新的映射以及存储库代码的实现,并使用它完成。
关于数据映射。请检查此链接:http://www.martinfowler.com/eaaCatalog/repository.html
另请查看此相关问题:IRepository confusion on objects returned。我已经使用了类似的映射器,但是它已经使它在IQueryable级别上运行,这使得在映射之后使用域对象时能够做一些非常有趣的事情。