Abh*_*aik 7 design-patterns repository-pattern
我见过很多存储库模式实现.具体有2种
它们公开了可查询的通用存储库,并期望服务类的lamba表达式从数据库中获取数据.
编写方法以根据业务需求从数据库中获取数据,并封装检索数据的逻辑(甚至是lambda).
哪一个是更好的方法?
Mat*_*zer 13
我真的更喜欢第二个.
即使我看过.NET世界顶级博主的文章,对我来说,可查询对象在存储库中也是邪恶的.
原因:
存储库就像一个对象集合,但存储在其实现定义的任何位置.
存储库抽象数据映射到对象的方式.数据存储可以是任何东西,但业务依赖于存储库以便检索,添加,更新或删除域对象.
对底层存储的任何读或写访问都必须由存储库本身 - 或任何其他底层 - 进行管理.
可查询会破坏大部分这些点和/或原因.
例如,为什么你要设计一个GetProductByName,GetProductByCode,如果你能在IQueryable上使用LINQ呢?
并且Queryable在n层方案中工作不好,因为您将无法访问另一层中的数据库连接,而不是返回延迟集的数据库连接.
我不认为"可查询"的概念和存储库应该适用于任何软件设计,因为它告诉存储库是无用的.
Queryable就像设计一个GetAll方法.存储库中GetAll的重点是什么?存储库将检索所有域对象,您将在业务中过滤它们.但是......等等......存储库不应该用某些标准检索域对象,是吗?
虽然我发现查询与存储库不兼容,但设计和实现一些接受lambda表达式或任何委托的存储库方法,以便为我提供某种过滤器或行为,这很好.这不是延迟执行,它是委托.
| 归档时间: |
|
| 查看次数: |
4174 次 |
| 最近记录: |