注入SqlSugar对象


Core API 注入

1、创建Api项目

2、打开Startup.cs配置上面代码就可以了 

   public void ConfigureServices(IServiceCollection services)
   {
          //注入 ORM
        services.AddSqlSugar(new IocConfig()
        {
          ConnectionString = "server=.;uid=sa;pwd=haosql;database=SQLSUGAR4XTEST",
          DbType = IocDbType.SqlServer,
          IsAutoCloseConnection = true//自动释放
         });
         
         //设置参数
         services.ConfigurationSugar(db =>
         {
              db.Aop.OnLogExecuting = (sql, p) =>
              {
                  Console.WriteLine(sql);
              };
              //设置更多连接参数
              //db.CurrentConnectionConfig.XXXX=XXXX
              //db.CurrentConnectionConfig.MoreSetting=new MoreSetting(){}
              //读写分离等都在这儿设置
         });
          
         //CodeFirst请写这儿,与SugarIocServices.AddSqlSugar平级
         //DbScoped.SugarScope.CodeFirst<T>();
    }


1. DbScoped  模式 (推荐

在 同一个上下文  或者 同一个异步上下文  SqlSugar是同一个对象

用法:

DbScoped.Sugar 非线程安全

DbScoped.SugarScope 线程安全

优点:适合用于事务处理,支持异步上下文 ,支持跨方法事务 

用法如下:

 public class OrgManager 
 {
        public List<UserOrgMapping> GetMapping() 
        {
           var result=DbScoped.SugarScope.Queryable<UserOrgMapping>().Where(it=>it.Id>0).ToList();
            DbScoped.SugarScope.Deleteable<Student>().In(1).ExecuteCommand();
            //建议用DbScoped.SugarScope
            return result;
        }
  }


2.DbTransient模式

DbTransient是每一次调用都是一个新的SqlSugar对象,用法基本同上 DbTransient.Sugar.XXXX

 var db=DbTransient.Sugar; //如果想保证上下文是一个需要用变量db对接收


3、总结

几行代码就实现了SqlSugar注入的完整使用,对于大部分用户,只需要看这一篇文章就可以了

果糖网