asp.net – IQueryable和存储库 – 需要2?
我不得不承认我一直在携带“存储库不应该返回IQueryable”的横幅,因为它更难测试.我受到了
this和
this等其他问题的答案的影响.
今天早上我一直在阅读ScuttGu关于ASP.NET vNext的博客,在那里他使用SelectMethod详细介绍了Model Binding,它似乎依赖于IQueryable进行分页和排序. 您认为这会迫使我们重新考虑IQueryable在存储库中扮演的角色吗? 解决方法
DDD Repository应该封装数据访问技术性:
它还负责处理域对象的中间和寿命结束.存储库接口属于Domain,应尽可能基于Ubiquitous Language.除了DDD书之外,这两篇文章几乎涵盖了设计存储库时需要了解的所有内容: > How To Write A Repository 在我看来,在Repository接口上公开IQueryable并不是最佳选择. IQueryable不是普适语言的一部分.这是一个技术性,它没有域意义.而不是封装数据检索Repository会暴露裸数据访问机制,这基本上会破坏首先拥有Repository的目的. 关于ASP.NET.这是一个UI框架.为什么允许UI框架影响域模型的设计? Microsoft的例子经常鼓励将UI数据网格直接绑定到数据库表.或者,最近,控件绑定到所谓的域模型,而实际上是Anemic Model,或者只是带有gets / sets的哑数据容器.你提到的那篇文章的引用(我强调一下):
我对此的解释是抛弃模型和对象,只是将数据绑定到UI.在很多情况下,这可能是一种有效且合理的方法.但由于问题被标记为DDD,我会说在DDD中这称为Smart UI Anti-Pattern. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-web-api – ASP.NET WebAPI OData – 继承自Entity
- asp.net-mvc – Html.HiddenFor值属性未设置
- asp.net-mvc – DropDownList不选择SelectList中的选定项
- asp.net-mvc – ASP.NET MVC网站的品牌/皮肤
- asp.net – 拒绝访问端口“COM1”
- asp.net – 在css文件中的div.classname
- asp.net-mvc-3 – 如何使用MVC使用多个表单显示ValidationS
- asp.net-mvc – ASP.NET MVC:处理取消按钮的正确方法
- Asp.net MVC scheduler实现
- 知识在与温故、总结-再读CLR
- asp.net – 用于检索大量二进制图像的.ashx处理程
- asp.net-mvc-3 – 将Mocked HttpPostedFileBase作
- asp.net – 如何检查SQL Server代理是否正在运行
- asp.net – 如何在swagger中为.Net Core Web API
- 诊断IIS 7和ASP.NET MVC上的404错误
- asp.net – IIS上的远程调试 – 访问被拒绝的梦魇
- asp.net-mvc – 已经使用相同的参数类型定义了一
- 重命名ASP.NET_SessionId
- Asp.net视图状态MAC的验证失败
- 事件(Event),绝大多数内存泄漏(Memory Leak)的