Asp.net Core3.0-------------------數據倉儲的封裝和使用。

定義一個倉儲類:IRepository

/// <summary>
    /// EFCore數據操作基本倉儲接口
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface IRepository<TModel> where TModel: class
    {
        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="TModelModel"></param>
        void Add(TModel TModelModel);



        /// <summary>
        /// 刪除
        /// </summary>
        /// <param name="Id"></param>
        void Delete(object Id);


        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="TModelModel"></param>
        void Update(TModel TModelModel);



        /// <summary>
        /// 根據主鍵查詢單個
        /// </summary>
        /// <param name="Id"></param>
        /// <reTModelurns></reTModelurns>
        TModel GetSingle(object Id);


        /// <summary>
        /// 返回列表
        /// </summary>
        /// <reTModelurns></reTModelurns>
        IEnumerable<TModel> GetList();

        /// <summary>
        /// 獲取數據庫上下文
        /// </summary>
        DbContext dbContext { get; }

        /// <summary>
        /// 獲取該實體類型
        /// </summary>
        DbSet<TModel> Entities { get; }
    }

再定義一個倉儲類的實現:

 public class EfRepository<TModel> : IRepository<TModel> where TModel : class
    {
        private readonly CoreContext _coreContext;

        public EfRepository(CoreContext coreContext)
        {
            this._coreContext = coreContext;
        }
        public DbContext dbContext
        {
            get
            {
                return _coreContext;
            }
        }

        public DbSet<TModel> Entities
        {
            get
            {
                return _coreContext.Set<TModel>();
            }
        }

        public void Add(TModel model)
        {
            _coreContext.Add(model);
            _coreContext.SaveChanges();
        }

        public void Delete(object Id)
        {
            var entity = GetSingle(Id);

            if (entity != null)
            {
                _coreContext.Remove(entity);
                _coreContext.SaveChanges();
            }

        }

        public IEnumerable<TModel> GetList()
        {
            return _coreContext.Set<TModel>().ToList();
        }

       
        public TModel GetSingle(object Id)
        {
            return _coreContext.Set<TModel>().Find(Id);
        }


        public void Update(TModel model)
        {
            _coreContext.Update(model);
        }

      
    }

Ps:CoreContext是使用EF框架自動生成的數據庫上下文,有疑惑移步:

https://note.youdao.com/ynoteshare1/index.html?id=e1a48103e47ae5ba4b76d0ce7b277743&type=note

使用的時候再Starup中注入:

services.AddScoped(typeof(IRepository<>), typeof(EfRepository<>));


           

發佈了21 篇原創文章 · 獲贊 12 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章