亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2022-04-29 17:14:11 來源:億速云 閱讀:1107 作者:iii 欄目:開發技術

這篇文章主要介紹了ABP引入SqlSugar框架創建使用的方法的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇ABP引入SqlSugar框架創建使用的方法文章都會有所收獲,下面我們一起來看看吧。

一 新建類庫

為了代碼清晰,我新建了一個類庫。引入了SqlSugar的框架包,2個倉儲類,1個DbContext

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

聲明實體

    [SugarTable("BasBloodLevel")]
    public class BasBloodLevel
    {
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int Id { get; set; }
        public string Code { get; set; }
    }

二 基本倉儲

先實現基本倉儲IBaseRepository 與 BaseRepository

    /// <summary>
    /// 基類接口,其他接口繼承該接口
    /// </summary>
    /// <typeparam name="TEntity"></typeparam>
    public interface IBaseRepository<TEntity> where TEntity : class
    {
        /// <summary>
        /// 根據ID查詢
        /// </summary>
        /// <param name="objId"></param>
        /// <returns></returns>
        Task<TEntity> QueryByID(object objId);
 
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        Task<bool> Add(TEntity model);
 
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        Task<bool> Update(TEntity model);
 
        /// <summary>
        /// 刪除
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<bool> DeleteByIds(object[] ids);
 
    }
/// <summary> /// 基類實現 /// </summary> /// <typeparam name="TEntity"></typeparam> public class BaseRepository<TEntity> : DbContext<TEntity>, IBaseRepository<TEntity> where TEntity : class, new() { /// <summary> /// 寫入實體數據 /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task<bool> Add(TEntity model) { //這里需要注意的是,如果使用了Task.Run()就會導致 sql語句日志無法記錄改成下面的 //var i = await Task.Run(() => Db.Insertable(model).ExecuteCommand()); var i = await Db.Insertable(model).ExecuteCommandAsync(); return i > 0; } /// <summary> /// 根據ID刪除 /// </summary> /// <param name="ids"></param> /// <returns></returns> public async Task<bool> DeleteByIds(object[] ids) { var i = await Db.Deleteable<TEntity>().In(ids).ExecuteCommandAsync(); return i > 0; } /// <summary> /// 根據ID查詢一條數據 /// </summary> /// <param name="objId"></param> /// <returns></returns> public async Task<TEntity> QueryByID(object objId) { return await Db.Queryable<TEntity>().InSingleAsync(objId); } /// <summary> /// 更新實體數據 /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task<bool> Update(TEntity model) { //這種方式會以主鍵為條件 var i = await Db.Updateable(model).ExecuteCommandAsync(); return i > 0; } }

三 實現SqlSugar的DB

此處的 ConnectionString 地址,我們可以直接讀取 ABP框架的配置文件,但是為了方便我直接寫死了

    public class DbContext<T> where T : class, new()
    {
        public DbContext()
    {
        Db = new SqlSugarClient(new ConnectionConfig()
        {
//數據庫地址我們可以直接讀取 ABP框架的配置文件,但是為了方便我直接寫死了
            ConnectionString = "Server=****; Database=****; Uid=sa; Pwd=****;MultipleActiveResultSets=true;",
            DbType = DbType.SqlServer,
            InitKeyType = InitKeyType.Attribute,//從特性讀取主鍵和自增列信息
            IsAutoCloseConnection = true,//開啟自動釋放模式
 
        });
        //調式代碼 用來打印SQL 
        Db.Aop.OnLogExecuting = (sql, pars) =>
        {
            Console.WriteLine(sql + "\r\n" +
                Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
            Console.WriteLine();
        };
 
    }
    //注意:不能寫成靜態的
    public SqlSugarClient Db;//用來處理事務多表查詢和復雜的操作
    public SimpleClient<T> CurrentDb { get { return new SimpleClient<T>(Db); } }//用來操作當前表的數據
 
    public SimpleClient<BasBloodLevel> BasBloodLevelDb { get { return new SimpleClient<BasBloodLevel>(Db); } }//用來處理User表的常用操作
 
}

四 實現依賴注入

這樣我們就能全局使用了

    [DependsOn(typeof(AbpZeroCoreModule))]
    public class Module : AbpModule
    {
        public override void Initialize()
        {
            IocManager.Register(typeof(IBaseRepository<>), typeof(BaseRepository<>), DependencyLifeStyle.Singleton);
 
            //依賴注入程序集 
            IocManager.RegisterAssemblyByConvention(typeof(Module).GetAssembly());
 
        }
    }

既然要實現依賴注入,那肯定要初始化這個類觸發注入了。我選擇在EF層里加,這樣可以不影響原有的EF層初始化

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

 五 應用層使用

直接引用對應的 IBaseRepository倉儲

    public class BasBloodBreedAppService : BloodTestLibSystemAppServiceBase,IApplicationService
    {
 
        private  IBaseRepository<BasBloodLevel> _baseRepository { get; set; }
        public BasBloodBreedAppService(IBaseRepository<BasBloodLevel> baseRepository) {
            _baseRepository = baseRepository;
        }
 
        public async Task<BasBloodLevel> GetBase() {
           var ce=await _baseRepository.QueryByID(1);
            return ce;
        }
 
 
    }

證明一下我是成功的

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

關于“ABP引入SqlSugar框架創建使用的方法”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“ABP引入SqlSugar框架創建使用的方法”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

澎湖县| 新泰市| 尉氏县| 怀化市| 吕梁市| 浦江县| 五大连池市| 会宁县| 上饶县| 杨浦区| 新源县| 龙岩市| 扶风县| 高密市| 隆德县| 宝山区| 乌拉特前旗| 秀山| 葫芦岛市| 普宁市| 阜新市| 九江县| 岱山县| 甘泉县| 白山市| 漠河县| 武夷山市| 十堰市| 嘉定区| 九江市| 宝应县| 长治县| 博乐市| 永兴县| 怀远县| 中西区| 福安市| 本溪市| 澄迈县| 通化县| 竹溪县|