WebAPI项目框架仓储模式+导入SqlSuag
目录结构如下:

第一步:创建仓储模块
//定义仓储
public interface ITestRepository
{
int Sum(int i, int j);
}
//仓储实现
public class TestRepository : ITestRepository
{
public int Sum(int i, int j)
{
return i + j;
}
}
//定义接口
public interface ITestService
{
int SumService(int i, int j);
}
//接口实现
public class TestService : ITestService
{
ITestRepository test = new TestRepository();
public int SumService(int i, int j)
{
return test.Sum(i, j);
}
}
第二步:创建服务类(Autofac)
/// <summary>
/// Autofac注册服务类
/// </summary>
public class AutofacModuleRegister : Autofac.Module
{
/// <summary>
/// 重写Load函数
/// </summary>
/// <param name="builder"></param>
protected override void Load(ContainerBuilder builder)
{
//注册Service
var assemblysServices = Assembly.Load("MESFB.Service");
builder.RegisterAssemblyTypes(assemblysServices)
.InstancePerDependency()//默认模式,每次调用,都会重新实例化对象;每次请求都创建一个新的对象
.AsImplementedInterfaces()//是以接口方式进行注入,注入这些类的所有的公共接口作为服务(除了释放资源)
.EnableInterfaceInterceptors(); //引用Autofac.Extras.DynamicProxy;应用拦截器
//注册Repository
var assemblysRepository = Assembly.Load("MESFB.Repository");
builder.RegisterAssemblyTypes(assemblysRepository)
.InstancePerDependency()//默认模式,每次调用,都会重新实例化对象;每次请求都创建一个新的对象
.AsImplementedInterfaces()//是以接口方式进行注入,注入这些类的所有的公共接口作为服务(除了释放资源)
.EnableInterfaceInterceptors(); //引用Autofac.Extras.DynamicProxy;应用拦截器
}
}
第三步:注册服务类(Autofac)
// 配置 Autofac 作为服务提供者工厂
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
// 配置 Autofac 容器
builder.Host.ConfigureContainer<ContainerBuilder>((hostContext, containerBuilder) =>
{
containerBuilder.RegisterModule<AutofacModuleRegister>(); // 加载仓储模块
});
第四步:调用
[ApiController]
[Route("[controller]")]
public class TestController : ControllerBase
{
private readonly ITestService _testService;
public TestController(ITestService testService)
{
_testService = testService;
}
[HttpGet(Name = "Test")]
public int Get()
{
return _testService.SumService(1, 2);
}
}
https://developer.aliyun.com/article/1575370

浙公网安备 33010602011771号