Asp.net Core3.0-------------------数据仓储的封装和使用。

定义一个仓储类:IRepository

/// 
    /// EFCore数据操作基本仓储接口
    /// 
    /// 
    public interface IRepository where TModel: class
    {
        /// 
        /// 新增
        /// 
        /// 
        void Add(TModel TModelModel);



        /// 
        /// 删除
        /// 
        /// 
        void Delete(object Id);


        /// 
        /// 修改
        /// 
        /// 
        void Update(TModel TModelModel);



        /// 
        /// 根据主键查询单个
        /// 
        /// 
        /// 
        TModel GetSingle(object Id);


        /// 
        /// 返回列表
        /// 
        /// 
        IEnumerable GetList();

        /// 
        /// 获取数据库上下文
        /// 
        DbContext dbContext { get; }

        /// 
        /// 获取该实体类型
        /// 
        DbSet Entities { get; }
    }

再定义一个仓储类的实现:

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

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

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

        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 GetList()
        {
            return _coreContext.Set().ToList();
        }

       
        public TModel GetSingle(object Id)
        {
            return _coreContext.Set().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<>));

Asp.net Core3.0-------------------数据仓储的封装和使用。_第1张图片
           

你可能感兴趣的:(NetCore)