使用[UnitOfWork] 为标记为virtual 的方法开启事务功能

[UnitOfWork("otherDbConnStr")] 指定数据库,默认使用连接字符串名称为DefaultDataString

具体应用步骤:

  1. Startup.cs中配置数据连接,添加工作单元服务

    string connStr =Configuration.GetConnectionString("DefaultConnection"); 
    //以mysql为示例
    services.AddDatabase<MySqlDatabaseProvider>(connStr);
    //添加工作单元
    services.AddUnitOfWork();  
    
  2. 添加动态代理服务

    ProgramCreateHostBuilder 处添加UseServiceProviderFactory(new DynamicProxyServiceProviderFactory())

    builder.Host.UseServiceProviderFactory(new DynamicProxyServiceProviderFactory());
    

    或者

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
                                  {
                                      webBuilder.UseStartup<Startup>();
                                  })
        // 略
        .UseServiceProviderFactory(new DynamicProxyServiceProviderFactory());
    

注意:只会对以名称以Service结尾或以Repository结尾的接口或类生效

  1. 开始使用,UnitOfWork应用示例代码

     public interface ITestService
     {
      [UnitOfWork]
      int Add(int a,int b);
     }
     public class TestService:ITestService
     {
      IDatabase db;
      public TestService(IApplicationDbContext dbContext)
      {
          db=dbContext.Current;
      }
      public int Add(int a,int b)
      {
          //保存数据
          //db.Insert(object)
          return a+b;
      }
     }
    
    
    
上次更新:
贡献者: kuiyu