Sam*_*Sam 4 asp.net-mvc poco automapper entity-framework-4
我一直致力于使用EF4,POCO域对象和存储库< - >服务层的新MVC应用程序.
我看到很多关于使用AutoMapper将EF4类映射到View模型的DTO的讨论.我的印象是,这是为了摆脱紧密绑定的EF4类.所以我的问题是因为我正在使用POCO类,我不能只使用View Models中的那些吗?或者是否还需要AutoMapper?
RPM*_*984 13
争论的焦点是你的"POCO"是你的领域模型,你的View不应该关注领域模型.
这样考虑 - 数据验证,如果你想要数据注释,你必须将它们放在你的POCO上 - 但是输入验证(这个字段是必需的等)并不是真正的域关注点,它是一个UI问题 - 因此ViewModel用于数据注释和AutoMapper.
当然,它不是切割和干燥,这是一个偏好的问题.
我也使用MVC/EF4/POCO/AutoMapper/Service Layer,我永远不会绑定到POCO - 我总是使用每个View的ViewModel.
这样,您就具有良好的一致性:
**编辑 - 回应评论:**
您的存储库是否返回IQueryable?如果是这样,你如何处理上下文?我的意思是你的存储库是否实现IDisposable然后你在控制器中处理它们?
是 - 我的存储库返回IQueryable<T>,其中T是聚合根.我的存储库通过了一个工作单元(它实现了IDisposable).工作单元是EF4上下文的包装器.StructureMap(DI容器)负责组件的生命周期(包括UoW - 也称为上下文).我为每个HTTP请求创建一个UoW,并在它完成时进行Dispose.我的"服务"调用我的IQueryable存储库上的方法并返回集合(例如,在传递回Controller之前实现查询).
你在哪里做绘图?你在控制器中做到了吗?
由你决定.就个人而言,我会创建一个静态的"bootstrapper"类,它有一个方法,例如"Configure".在Application_Start事件(Global.asax)中调用一次.这里描述了这种技术.
祝好运!
| 归档时间: |
|
| 查看次数: |
2541 次 |
| 最近记录: |