一、准备工作
通过程序包管理器控制台安装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调创建用户接口
接下来测试下查询用户
好了,你们自己测下写的有没有问题。