autofac 仓储_ASP.NET Core 2.2 系列【三】AutoFac 仓储接口的依赖注入

一、准备工作

通过程序包管理器控制台安装AutoFac:

Install-Package Autofac.Extensions.DependencyInjection

创建新类库(.NetCore 2.2类库),存放接口跟实现类,命名为NetCoreWebApi.Repository。

创建用户仓储接口

在类库项目上右键->添加->新建文件夹,命名为Interface,存放接口类。在Interface文件夹下面新建类:IUserRepository,属性如下:

usingSystem.Collections.Generic;usingNetCoreWebApi.Model.Models;namespaceNetCoreWebApi.Repository.Interface

{///

///用户接口///

public interfaceIUserRepository

{///

///添加用户///

/// 实体对象

intAdd(TbUser entity);///

///删除用户///

/// 实体对象

intRemove(TbUser entity);///

///编辑用户///

/// 实体对象

///

intUpdate(TbUser entity);///

///获取所有///

///

IListGetAll();

}

}

创建用户接口实现类

在类库项目上右键->添加->新建文件夹,命名为Implement,存放接口实现类。在Implement文件夹下面新建类:UserRepository,属性如下:

usingSystem.Collections.Generic;usingSystem.Linq;usingNetCoreWebApi.Model;usingNetCoreWebApi.Model.Models;usingNetCoreWebApi.Repository.Interface;namespaceNetCoreWebApi.Repository.Implement

{///

///业务处理///

public classUserRepository:IUserRepository

{private readonlyMyDbContext _dbContext;///

///构造函数///

///

publicUserRepository(MyDbContext dbContext)

{

_dbContext=dbContext;

}///

///添加用户///

///

///

public intAdd(TbUser entity)

{

_dbContext.TbUsers.Add(entity);return_dbContext.SaveChanges();

}///

///删除用户///

///

///

public intRemove(TbUser entity)

{

_dbContext.TbUsers.Remove(entity);return_dbContext.SaveChanges();

}///

///编辑用户///

///

///

public intUpdate(TbUser entity)

{return_dbContext.SaveChanges();

}///

///查询用户///

///

public IListGetAll()

{return_dbContext.TbUsers.ToList();

}

}

}

二、配置注入

打开Startup.cs类

把ConfigureServices方法的返回值由void变为IServiceProvider

public static IContainer ApplicationContainer { get; set; }///

/负责注入服务///

///

///

publicIServiceProvider ConfigureServices(IServiceCollection services)

{var connectionStr = Configuration.GetConnectionString("SqlServer");

services.AddDbContext(options=>options.UseSqlServer(connectionStr,

e=> e.MigrationsAssembly("NetCoreWebApi.Model")));

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);//初始化容器

var builder = newContainerBuilder();//管道寄居

builder.Populate(services);//注册仓储,IUserRepository接口到UserRepository的映射

builder.RegisterType().As();//构造

ApplicationContainer =builder.Build();//将AutoFac反馈到管道中

return newAutofacServiceProvider(ApplicationContainer);

}

三、测试

在项目上右键->添加->新建文件夹,命名为Controllers,存放相应的控制器。在Controllers文件夹下面新建一个控制器:UserController,如下:

usingSystem;usingSystem.Collections.Generic;usingMicrosoft.AspNetCore.Mvc;usingNetCoreWebApi.Model.Models;usingNetCoreWebApi.Repository.Interface;namespaceNetCoreWebApi.Controllers

{///

///用户模块///

[Route("api/user")]

[ApiController]public classUserController : ControllerBase

{private readonlyIUserRepository _userRepository;///

///构造函数///

///

publicUserController(IUserRepository userRepository)

{

_userRepository=userRepository;

}///

///创建用户///

///

[Route("createUser")]

[HttpPost]publicTbUser CreateUser()

{var user = newTbUser

{

UserId= Guid.NewGuid().ToString("N"),

CreateTime=DateTime.Now,

UserName= "tenghao",

Email= "tenghao510@qq.com"};

_userRepository.Add(user);returnuser;

}///

///查询用户///

///

[Route("getUser")]

[HttpGet]public IListGetUser()

{return_userRepository.GetAll();

}

}

}

Ctrl+F5 运行之后,先用Postman调创建用户接口

接下来测试下查询用户

好了,你们自己测下写的有没有问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值