ASP.NET服务与存储库层
发布时间:2020-05-23 11:19:12 所属栏目: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-mvc-5 – 我应该如何从JsonResult控制器返回404?
- asp.net-mvc – MVC 3从web.config中的AppSettings获取值
- RavenDB ASP.NET会话提供程序?
- asp.net-mvc – ASP.NET MVC中的非字符串角色名称?
- asp.net – 在web.config上有哪些官方的,广泛的,完整的文档
- asp.net-mvc – ASP.Net MVC路由到用户名
- asp.net-mvc – View中的意外NullReferenceException
- asp.net-mvc – asp.mvc视图在发布配置中引用#IF DEBUG
- asp.net – 隐藏字段vs viewstate
- asp.net mvc调试器抛出SEHException
推荐文章
站长推荐
- asp.net-mvc – Durandal和ASP.NET MVC约定
- 如何在ASP.NET中的GridView中定义CellPadding
- asp.net – 如何创建google网站地图mvc网站?
- asp.net-mvc – 为什么DropDownListFor会在提交后
- asp.net-mvc – ASP.net MVC – 显示模板集合
- asp.net – 在同一站点上使用基本身份验证和表单
- asp.net * WebForms *开发人员将来可以期待什么?
- asp.net-mvc-4 – Visual Studio 2013 C#Web项目
- asp.net-mvc-3 – 如何在MVC3上使用authorize属性
- asp.net-mvc – 如何从mvc中的控制器中设置隐藏字
热点阅读
