ASP.NET服务与存储库层
发布时间:2020-12-15 18:48:58 所属栏目:asp.Net 来源:网络整理
导读:服务层和存储库有什么区别?我已经通过很多演示ASP.NET MVC应用程序,其中大多数只有存储库。有些则混合了两者。什么时候使用存储库,什么时候使用服务或两者兼而有之? ASP.NET Web应用程序也是如此。 解决方法 存储库作为您的数据存储(sql数据库,xml文件
服务层和存储库有什么区别?我已经通过很多演示ASP.NET MVC应用程序,其中大多数只有存储库。有些则混合了两者。什么时候使用存储库,什么时候使用服务或两者兼而有之? ASP.NET Web应用程序也是如此。
解决方法
存储库作为您的数据存储(sql数据库,xml文件等)的网关,而服务通常会通过一个存储库发送要保存在数据库中的数据之前对数据执行一些业务规则。
考虑这个例子: class UserRepository : IUserRepository { public void Create(User userToCreate) { //update tracking and save to repository _userToCreate.DateCreated = DateTime.Now; _dataContext.AddNew(userToCreate); } } class UserService : IUserService { private IUserRepository _repository; public UserService(IUserRepository repository) { _repository = repository; } public void Create(User createdByUser,User userToCreate) { //implement some business rules if(!createdByUser.HasRights(UserRights.CanCreateNewUser)) throw new Exception("This user '"+createdByUser.Name+"' does not have the rights to create a new user"); //update rules auditing _userToCreate.CreatedByUserId = createdByUser.Id; //save entity to repository _repository.Create(userToCreate); } } 然后在您的控制器操作中,您将直接使用可以应用所有业务规则的服务。这样,您可以使用嘲笑单独/独立地测试控制器,业务规则(服务)和持久性(存储库)。 public ActionResult CreateUser(User newUser) { if(ModelState.IsValid) { _userService.Create(this.CurrentUser,newUser); if(newUser.Id > 0) return RedirectToAction("UserCreated"); } return View(newUser); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 实现访问者计数器
- asp.net – 如何添加一个访问控制允许原始头在IIS7有限制
- asp.net-mvc – 默认情况下,Html.TextArea会生成额外的换行
- ASP.NET Web部署项目是否存活?
- asp.net – 在页面加载中实现IsPostBack
- asp.net-mvc – MVC4中的ELMAH和API控制器不记录错误
- asp.net – 这个LINQ statment是否容易受SQL注入攻击?
- asp.net-mvc – ASP.NET MVC局部视图和表单动作名称
- asp.net-mvc – 与asp.net MVC中的ExceptionHandlerFilter冲
- 如何调查ASP.net应用程序上的SQL Server超时错误?
推荐文章
站长推荐
- 在asp.net中设置MIME类型
- asp.net – 如何指定现有的ClaimsIdentity的目的
- ASP.NET工作进程仍然以31kb的大小返回数据
- asp-classic – 用经典的asp添加自定义标题
- asp.net-mvc – 我应该在ASP.NET MVC中使用Anti-
- 在Asp.Net MVC View中使用dropdownlistfor和fore
- asp.net – 在Cookie中存储多个值
- asp.net-mvc-routing – 如何检查给定路径是否存
- ASP.NET MVC 2应用程序中的区域可以映射到子域吗
- ASP.NET MVC 4和Razor 2:View引擎不再支持xml?
热点阅读