net基类怎么注入? 返回
SqlSugar
老数据
12
1977
悬赏: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 VIP0
2021/10/200 回复 -
PA VIP0
2021/10/20ISqlSugarClient我已经在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 VIP0
2021/10/20publicOrderService():base(context){直接写成这样 ,在基类拿上下文的SQLSUGAR}0 回复 -
fate sta VIP0
2021/10/20这样就可以注入了
0 回复 -
fate sta VIP0
2021/10/20publicclassBaseService<T> : SimpleClient<T>whereT :class,new(){publicRepository(ISqlSugarClient context =null) :base(context)//注意这里要有默认值等于null{context=从IOC手动攻取}}0 回复 -
PA VIP0
2021/10/20publicOrderService():base(context){直接写成这样 ,在基类拿上下文的SQLSUGAR}这样写编译器通不过,context未定义0 回复 -
fate sta VIP0
2021/10/20publicRepository(ISqlSugarClient context =null) :base(context)//注意这里要有默认值等于null{context=从IOC手动攻取}0 回复 -
fate sta VIP0
2021/10/20仓储里面要赋值
0 回复 -
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 VIP0
2021/10/20@PA:看看sqlsugar.ioc原理吧,用法都类似的
0 回复 -
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.SugarScope0 回复 -
fate sta VIP0
2021/10/20自带的很方便,你想用其他的那就需要自个研究了
0 回复