HTML5技术

Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现 - Fonour(2)

字号+ 作者:H5之家 来源:H5之家 2016-09-26 14:00 我要评论( )

主键为Guid类型的仓储基类 FonourRepositoryBaseTEntity : FonourRepositoryBaseTEntity, Guid where TEntity : Entity { public FonourRepositoryBase(FonourDbContext dbContext) : base (dbContext){} } 2.1 用

主键为Guid类型的仓储基类 FonourRepositoryBase<TEntity> : FonourRepositoryBase<TEntity, Guid> where TEntity : Entity { public FonourRepositoryBase(FonourDbContext dbContext) : base(dbContext) { } }

2.1 用户管理仓储接口实现

在Fonour.EntityFrameworkCore项目的“Repositories”文件夹中新建一个用户管理仓储接口的实现类“UserRepository”,实现接口中定义的用户检查方法。

用户管理仓储实现 UserRepository : FonourRepositoryBase<User>, IUserRepository { public UserRepository(FonourDbContext dbcontext) : base(dbcontext) { } 检查用户是存在 User CheckUser(string userName, string password) { return _dbContext.Set<User>().FirstOrDefault(it => it.UserName == userName && it.Password == password); } }

QQ图片20160924231108

3 应用服务层接口定义及实现

在Fonour.Application项目中新建一个名称为“UserApp”的文件夹,文件夹中新建一个名称为“IUserAppService”的服务接口,及服务接口的具体实现“UserAppService”,在服务层中调用对应的仓储方法实现具体相关业务逻辑。

UserAppService中定义一个私有且只读的用户管理仓储接口对象,依然通过构造函数的方式进行依赖注入。

用户管理服务 UserAppService : IUserAppService { IUserRepository _userReporitory; 构造函数 实现依赖注入 UserAppService(IUserRepository userRepository) { _userReporitory = userRepository; } public User CheckUser(string userName, string password) { return _userReporitory.CheckUser(userName, password); } }

4 Asp.Net Core依赖注入实现

在上一节中,我们讲到在Fonour.MVC项目的Startup.cs文件的ConfigureServices方法中通过使用

services.AddDbContext<FonourDbContext>(options =>options.UseNpgsql(sqlConnectionString));

方法将数据库上上下文添加到系统服务中,正是在此时同时对数据访问上下文进行了依赖注入实现。

通过添加以下代码在ConfigureServices方法中添加对上面创建的仓储及服务进行依赖注入的实现。

services.AddScoped<IUserRepository, UserRepository>(); services.AddScoped<IUserAppService, UserAppService>();

注意:Asp.Net Core提供的依赖注入拥有三种生命周期模式,由短到长依次为:

对于数据访问上下文,我们可以通过重载方法的第二个参数,控制数据访问上下文对象的生命周期,默认生命周期为Scoped。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • asp.net mvc signalr 简单聊天室 - liuhz

    asp.net mvc signalr 简单聊天室 - liuhz

    2016-09-25 17:02

  • ASP.NET Core MVC 配置全局路由前缀 - Savorboard

    ASP.NET Core MVC 配置全局路由前缀 - Savorboard

    2016-09-25 11:00

  • 使用签名来保证ASP.NET MVC OR WEBAPI的接口安全 - Agile.Zhou

    使用签名来保证ASP.NET MVC OR WEBAPI的接口安全 - Agile.Zhou

    2016-09-24 17:00

  • 使用 Entity Framework Core 时,通过代码自动 Migration - JRoger

    使用 Entity Framework Core 时,通过代码自动 Migration - JRoger

    2016-09-04 17:00

网友点评
/