ABP引入SqlSugar框架创建使用的方法
导读:本文共2994.5字符,通常情况下阅读需要10分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 一 新建类库为了代码清晰,我新建了一个类库。引入了SqlSugar的框架包,2个仓储类,1个DbContext声明实体[SugarTable("BasBloodLevel")]publicclassBasBloodLevel{[SugarColumn(IsPrimaryKey=true,IsIdentity=true)]publici... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。一 新建类库
为了代码清晰,我新建了一个类库。引入了SqlSugar的框架包,2个仓储类,1个DbContext
声明实体
[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层初始化
五 应用层使用
直接引用对应的IBaseRepository仓储
publicclassBasBloodBreedAppService:BloodTestLibSystemAppServiceBase,IApplicationService{privateIBaseRepository<BasBloodLevel>_baseRepository{get;set;}publicBasBloodBreedAppService(IBaseRepository<BasBloodLevel>baseRepository){_baseRepository=baseRepository;}publicasyncTask<BasBloodLevel>GetBase(){varce=await_baseRepository.QueryByID(1);returnce;}}
证明一下我是成功的
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:
ABP引入SqlSugar框架创建使用的方法的详细内容,希望对您有所帮助,信息来源于网络。