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