ABP引入SqlSugar框架创建使用的方法(abp,sqlsugar,开发技术)

时间:2024-05-02 06:14:55 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

一 新建类库

为了代码清晰,我新建了一个类库。引入了SqlSugar的框架包,2个仓储类,1个DbContext

ABP引入SqlSugar框架创建使用的方法

声明实体

[SugarTable("BasBloodLevel")]publicclassBasBloodLevel{[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]publicintId{get;set;}publicstringCode{get;set;}}

二 基本仓储

先实现基本仓储IBaseRepository 与BaseRepository

///<summary>///基类接口,其他接口继承该接口///</summary>///<typeparamname="TEntity"></typeparam>publicinterfaceIBaseRepository<TEntity>whereTEntity:class{///<summary>///根据ID查询///</summary>///<paramname="objId"></param>///<returns></returns>Task<TEntity>QueryByID(objectobjId);///<summary>///添加///</summary>///<paramname="model"></param>///<returns></returns>Task<bool>Add(TEntitymodel);///<summary>///修改///</summary>///<paramname="model"></param>///<returns></returns>Task<bool>Update(TEntitymodel);///<summary>///删除///</summary>///<paramname="ids"></param>///<returns></returns>Task<bool>DeleteByIds(object[]ids);}
///<summary>///基类实现///</summary>///<typeparamname="TEntity"></typeparam>publicclassBaseRepository<TEntity>:DbContext<TEntity>,IBaseRepository<TEntity>whereTEntity:class,new(){///<summary>///写入实体数据///</summary>///<paramname="model"></param>///<returns></returns>publicasyncTask<bool>Add(TEntitymodel){//这里需要注意的是,如果使用了Task.Run()就会导致sql语句日志无法记录改成下面的//vari=awaitTask.Run(()=>Db.Insertable(model).ExecuteCommand());vari=awaitDb.Insertable(model).ExecuteCommandAsync();returni>0;}///<summary>///根据ID删除///</summary>///<paramname="ids"></param>///<returns></returns>publicasyncTask<bool>DeleteByIds(object[]ids){vari=awaitDb.Deleteable<TEntity>().In(ids).ExecuteCommandAsync();returni>0;}///<summary>///根据ID查询一条数据///</summary>///<paramname="objId"></param>///<returns></returns>publicasyncTask<TEntity>QueryByID(objectobjId){returnawaitDb.Queryable<TEntity>().InSingleAsync(objId);}///<summary>///更新实体数据///</summary>///<paramname="model"></param>///<returns></returns>publicasyncTask<bool>Update(TEntitymodel){//这种方式会以主键为条件vari=awaitDb.Updateable(model).ExecuteCommandAsync();returni>0;}}

三 实现SqlSugar的DB

此处的ConnectionString 地址,我们可以直接读取 ABP框架的配置文件,但是为了方便我直接写死了

publicclassDbContext<T>whereT:class,new(){publicDbContext(){Db=newSqlSugarClient(newConnectionConfig(){//数据库地址我们可以直接读取ABP框架的配置文件,但是为了方便我直接写死了ConnectionString="Server=****;Database=****;Uid=sa;Pwd=****;MultipleActiveResultSets=true;",DbType=DbType.SqlServer,InitKeyType=InitKeyType.Attribute,//从特性读取主键和自增列信息IsAutoCloseConnection=true,//开启自动释放模式});//调式代码用来打印SQLDb.Aop.OnLogExecuting=(sql,pars)=>{Console.WriteLine(sql+"\r\n"+Db.Utilities.SerializeObject(pars.ToDictionary(it=>it.ParameterName,it=>it.Value)));Console.WriteLine();};}//注意:不能写成静态的publicSqlSugarClientDb;//用来处理事务多表查询和复杂的操作publicSimpleClient<T>CurrentDb{get{returnnewSimpleClient<T>(Db);}}//用来操作当前表的数据publicSimpleClient<BasBloodLevel>BasBloodLevelDb{get{returnnewSimpleClient<BasBloodLevel>(Db);}}//用来处理User表的常用操作}

四 实现依赖注入

这样我们就能全局使用了

[DependsOn(typeof(AbpZeroCoreModule))]publicclassModule:AbpModule{publicoverridevoidInitialize(){IocManager.Register(typeof(IBaseRepository<>),typeof(BaseRepository<>),DependencyLifeStyle.Singleton);//依赖注入程序集IocManager.RegisterAssemblyByConvention(typeof(Module).GetAssembly());}}

既然要实现依赖注入,那肯定要初始化这个类触发注入了。我选择在EF层里加,这样可以不影响原有的EF层初始化

ABP引入SqlSugar框架创建使用的方法

五 应用层使用

直接引用对应的IBaseRepository仓储

publicclassBasBloodBreedAppService:BloodTestLibSystemAppServiceBase,IApplicationService{privateIBaseRepository<BasBloodLevel>_baseRepository{get;set;}publicBasBloodBreedAppService(IBaseRepository<BasBloodLevel>baseRepository){_baseRepository=baseRepository;}publicasyncTask<BasBloodLevel>GetBase(){varce=await_baseRepository.QueryByID(1);returnce;}}

证明一下我是成功的

ABP引入SqlSugar框架创建使用的方法

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:ABP引入SqlSugar框架创建使用的方法的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:css怎么实现倒计时翻页动画下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18