使用[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 { IDatabase db; public TestService(IApplicationDbContext dbContext) { db=dbContext.Current; } public int Add(int a,int b) { //保存数据 //db.Insert(object) return a+b; } }

数据库配置,可查看https://github.com/kuiyu/RsCode/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%93%8D%E4%BD%9C

上次更新:
贡献者: kuiyu