Linq 存储库模式竞赛

Linq 存储库模式竞赛,linq,design-patterns,orm,repository,Linq,Design Patterns,Orm,Repository,根据: 。。。“客户端对象构造查询 说明性规范和 将它们提交到存储库以供参考 满意“ 为什么??在这一点上有什么优势 我看到了一个缺点:数据库查询分散并隐藏在关系上。这使得调试更加困难。优点是“什么”(声明性规范)与“如何”或实现细节分开。因此,客户机不需要知道它是否在查询关系数据库、Web服务、对象数据库(例如Mongo)、XML数据存储等 假设您使用的是RDBMS。即便如此,客户机也不需要知道数据库是否是Oracle、MS SQL、SQLite、mySQL、PostGres等。当“你不应该(

根据:

。。。“客户端对象构造查询 说明性规范和 将它们提交到存储库以供参考 满意“

为什么??在这一点上有什么优势

我看到了一个缺点:数据库查询分散并隐藏在关系上。这使得调试更加困难。

优点是“什么”(声明性规范)与“如何”或实现细节分开。因此,客户机不需要知道它是否在查询关系数据库、Web服务、对象数据库(例如Mongo)、XML数据存储等

假设您使用的是RDBMS。即便如此,客户机也不需要知道数据库是否是Oracle、MS SQL、SQLite、mySQL、PostGres等。当“你不应该(不应该)使用MS SQL”(或其他)的命令从山上传下来时,这将为你省去很多头痛

附加层确实会引入一些开销。但是(1)像(N)Hibernate这样的ORM工具非常擅长优化为您正在使用的任何后端生成的查询,(2)与数据库读取成本相比,开销通常可以忽略不计,更不用说web服务调用了

我们现在正在从LINQ转换为NHibernate,以避免“N+1”问题(即为每个“主”数据库记录生成一个查询/命中,再为每个“子”记录生成一个查询/命中)。 顺便说一句。。。有一件事,像LINQ到NHibernate