WebAPI项目框架仓储模式+导入SqlSuag

 目录结构如下:

image

 

第一步:创建仓储模块

//定义仓储
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

posted @ 2025-07-26 17:31  microsoft-zhcn  阅读(11)  评论(0)    收藏  举报