net基类怎么注入? 返回

SqlSugar 老数据
12 1977
该叫什么 PA 发布于2021/10/20
悬赏:5 飞吻

public class  BaseService<T> : SimpleClient<T> where T : class, new()
{    
      public Repository(ISqlSugarClient context = null) : base(context)//注意这里要有默认值等于null    
      {
      }
}
//订单服务
public class OrderService: Repository<Order>  
{
      //业务方法
    public  Order GetOrderByName(string name)
    {
      return base.GetSingle(it=>it.Name==name); //GetSingle是仓储自带的方法,本文最下方有详细介绍
    }
}


如上,ISqlSugarClient已经在注册了,但是context一直是null,改为下面的就可以注入


public class OrderService: Repository<Order>  
{
         public OrderService(ISqlSugarClient context):base(context)
         {
         
         }
      //业务方法
    public  Order GetOrderByName(string name)
    {
      return base.GetSingle(it=>it.Name==name); //GetSingle是仓储自带的方法,本文最下方有详细介绍
    }
}

请问一下想采用第一种方式,那怎么实现基类的构造参数自动注入?

热忱回答12

  • fate sta fate sta VIP0
    2021/10/20
    0 回复
  • PA PA VIP0
    2021/10/20

    ISqlSugarClient我已经在Startup.cs中注册了。

            public static void AddSqlClient(this IServiceCollection services, GlobalConfig globalConfig)
            {
                IdWorker idWorker = new IdWorker(globalConfig.Snowflake.WorkerId, globalConfig.Snowflake.DatacenterId);
                SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
                {
                    //主库连接字符串
                    ConnectionString = globalConfig.DbConnection.ConnectionString,
                    //数据库类型
                    DbType = (DbType)Enum.Parse(typeof(DbType), globalConfig.DbConnection.DbType),
                    //自动释放和关闭数据库连接,如果有事务事务结束时关闭,否则每次操作后关闭
                    IsAutoCloseConnection = true,
                    //从库配置
                    SlaveConnectionConfigs = globalConfig.DbConnection.SlaveConnectionConfigs,
                });
                // 数据插入和更新的aop
                db.Aop.DataExecuting = (oldValue, entityInfo) =>
                {
                    //inset生效
                    if (entityInfo.PropertyName.ToLower() == "id" && entityInfo.OperationType == DataFilterType.InsertByObject && !entityInfo.EntityColumnInfo.IsIdentity)
                    {
                        entityInfo.SetValue(idWorker.NextId());//修改Id为雪花id值
                    }
                };
                services.AddScoped<ISqlSugarClient>(provider => { return db; });
            }

    现在问题是基类的对象无法获取到,有没有大神知道怎么基类的对象怎么实现自动注入

    0 回复
  • fate sta fate sta VIP0
    2021/10/20

      public OrderService():base(context){


           直接写成这样 ,在基类拿上下文的SQLSUGAR

       }

    0 回复
  • fate sta fate sta VIP0
    2021/10/20

    这样就可以注入了

    0 回复
  • fate sta fate sta VIP0
    2021/10/20
    public class  BaseService<T> : SimpleClient<T> where T : classnew()
    {    
          public Repository(ISqlSugarClient context = null) : base(context)//注意这里要有默认值等于null    

          {

                    context=从IOC手动攻取

          }
    }


    0 回复
  • PA PA VIP0
    2021/10/20

      public OrderService():base(context){


           直接写成这样 ,在基类拿上下文的SQLSUGAR

       }


    这样写编译器通不过,context未定义


    0 回复
  • fate sta fate sta VIP0
    2021/10/20
     public Repository(ISqlSugarClient context = null) : base(context)//注意这里要有默认值等于null    

          {

                    context=从IOC手动攻取

          }


    0 回复
  • fate sta fate sta VIP0
    2021/10/20

    仓储里面要赋值

    0 回复
  • PA PA VIP0
    2021/10/20

    @fate sta


     public Repository(DbConfig dbConfig,ISqlSugarClient context = null) : base(context)//注意这里要有默认值等于null    
          {
                    context=从IOC手动攻取
          }
    DbConfig用来保存数据库连接的类,在Startup.cs中注入了,如果按你说的写那就要把配置类DbConfig也要传过来,最后还是从要子类中注入才可以。
    0 回复
  • fate sta fate sta VIP0
    2021/10/20

    @PA:看看sqlsugar.ioc原理吧,用法都类似的

    0 回复
  • fate sta fate sta VIP0
    2021/10/20
     // 10秒入门
     SugarIocServices.AddSqlSugar(new IocConfig()
     {
        //ConfigId="db01"  多租户用到
       ConnectionString = "server=.;uid=sa;pwd=sasa;database=SQLSUGAR4XTEST",
       DbType = IocDbType.SqlServer,
       IsAutoCloseConnection = true//自动释放
     });
      
     //注入后就能所有地方使用
     DbScoped.SugarScope


    0 回复
  • fate sta fate sta VIP0
    2021/10/20

    自带的很方便,你想用其他的那就需要自个研究了

    0 回复