asp.net-mvc-3 – 是否有可能将太多的存储库注入控制器?
我有第一个使用MVC3的大型解决方案.我正在使用ViewModels,AutoMapper和DI.
要为一些更复杂的编辑/创建创建我的ViewModel,我正在注入10个左右 我已经看到它提到注入大量的repositiories是不好的做法,我应该重构.对很多人来说有多少?这对很多人来说?我该怎么重构?我应该创建一个返回选择列表等的专用服务吗? 这里给出一个例子就是我的RequirementsAndOffer控制器的构造函数 public RequirementsAndOfferController( IdefaultnoteRepository defaultnoteRepository,IcontractformsRepository contractformsRepository,IperiodRepository periodRepository,IworkscopeRepository workscopeRepository,IcontactRepository contactRepository,IlocationRepository locationRepository,IrequirementRepository requirementRepository,IContractorRepository contractRepository,IcompanyRepository companyRepository,IcontractRepository contractRepository,IrequirementcontracttypeRepository requirementcontracttypeRepository,IoffercontractRepository offercontractRepository) 以上所有内容都填充了除了requireRepository和providecontractRepository之外的选项,我用它来获取需求和提供. 更新 我有汽车,汽车有租赁合同,租用合同有租期. 我正在为汽车,租用合同和租用期创建一个存储库.所以当我认为应该只有一个时,就创建了3个存储库.如果没有汽车,租赁合同和期限就不存在.因此,我已经减少了一些存储库. 我仍然需要一些复杂的表单(客户要求这些大型表单),这些表单需要控制器中的许多存储库.这可能是因为我没有足够的重构.据我所知,虽然我需要单独的存储库来获取选择列表. 我正在考虑创建某种服务的选项,它将提供我需要的所有选择列表.这是好习惯/不良做法吗?我的服务应该只围绕聚合根源吗?如果是这样,有一个服务提供选择将是错误的.然而,选择似乎是相同类型的东西,并将它们组合在一起在某些方面是有吸引力的. 似乎我的问题类似于how-to-deal-with-constructor-over-injection-in-net 我想我现在更关注选择列表服务是好还是坏的具体建议. 任何建议表示赞赏 解决方法
您有一个正确的想法从存储库模式开始.根据您使用存储库的方式,我完全理解您最终会如何结束(甚至每个数据库表可能有1个).
您必须判断自己的规范和业务需求,但也许您可以考虑业务层或服务层. 业务层 此层可能由业务对象组成,这些业务对象封装了视图模型的一个或多个意图(以及固有的视图.)您没有描述任何域,但是用户的业务对象可能包含一些CRUD方法.然后,您的视图模型将依赖于这些业务对象,而不是直接调用存储库方法.您可能已经猜到重构会将对存储库方法的调用转移到业务对象中 服务层 服务层甚至可能使用上面描述的某些业务对象,但是您可以设计某种类型的消息传递协议/系统/标准,以便在Web应用程序之间进行通信,也可以在服务器上运行WCF服务以控制某种状态. 这不是最具描述性的示例,但我希望它有助于提供重构选项的高级视图. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-4 – 如何在AngularJS局部视图中使用ASP.Net M
- asp.net-mvc-4 – 在Visual Studio 2017 RC中无法识别ASP.N
- asp.net-mvc – ASP.NET MVC6中的实体框架7多个外键到同一个
- asp.net-mvc – 如何在ASP.Net MVC4中创建自定义web.config
- .net – ServiceHost和WebServiceHost有什么区别?
- asp.net-mvc – 更正错误后ValidationSummary是否仍然可见?
- Asp.Net 5分钟实现网页实时监控
- asp.net-mvc – 存在多个获取操作时的MVC API路由
- asp.net – 在Response.Redirect之后获取上一页网址
- ASP.NET 5针对dnx451 / dnx46性能
- asp.net – 如何通过门户中的注销按钮从所有打开
- 即使在完成所有可能的设置后,使用IIS 7在asp.net
- asp.net-mvc – 为id而不是name设置HtmlFieldPre
- asp.net – 断开应用程序开发的方法
- asp.net – WebControl创建中的Render和RenderCo
- asp.net-mvc – 为什么MVC控制器必须在其类名上具
- asp.net-mvc – 如何将ms显示从LHS移动到RHS
- 如何重现由asp.net MVC默认成员资格创建的密码哈
- asp.net-mvc – Razor视图没有布局
- asp.net-mvc-4 – 如何获取mvc中的用户IP地址