1. 程式人生 > >Dapper基礎知識二

Dapper基礎知識二

在下剛畢業工作,之前實習有用到Dapper?這幾天新專案想用上Dapper,在下比較菜鳥,這塊只是個人對Dapper的一種總結。

2,如何使用Dapper?

    首先Dapper是支援多種資料庫的,當時在學習的時候參考藍老師的資料https://www.cnblogs.com/lanxiaoke/p/6503022.html。

     Dapper支援多資料庫的工廠類,設計模式的工廠模式,Skr·  Skr~。

 public interface IRepository<T> where T : class
    {
        
void Add(T entity); void AddBatch(IEnumerable<T> entitys); void Update(T entity); void Delete(T entity); void Delete(string Id); void Delete(int Id); void Delete(Guid Id); T Get(string Id); T Get(Guid Id); T Get(int Id); T Get(T entity); T Get(Expression
<Func<T, bool>> func); IEnumerable<T> GetAll(); IEnumerable<T> GetList(Expression<Func<T, bool>> where = null, Expression<Func<T, bool>> order = null); Tuple<int, IEnumerable<T>> GetPage(Page page, Expression<Func<T, bool
>> where = null, Expression<Func<T, bool>> order = null); long Count(Expression<Func<T, bool>> where = null); }

 

  public class IDapperRepository<T> :IRepository<T> where T:class
    {
        protected IDbConnection Conn { get; private set; }
        public IDapperRepository()
        {
            Conn = DbConnectionFactory.CreateDbConnection();
        }
        public void SetDbConnection(IDbConnection conn)
        {
            Conn = conn;
        } 
        

        public void Add(T entity)
        {
            
            Conn.Insert<T>(entity);
        }

        public void AddBatch(IEnumerable<T> entitys)
        {
            foreach (T entity in entitys)
            {
                Add(entity);
            }
        }

        public void Update(T entity)
        {
            Conn.Update(entity);
        }

        public void Delete(T entity)
        {
            Conn.Delete(entity);
        }

        public void Delete(string Id)
        {
            var entity = Get(Id);
            if (entity == null)
                return;
            Delete(entity);
        }

        public void Delete(int Id)
        {
            var entity = Get(Id);
            if (entity == null) return;

            Delete(entity);
        }

        public void Delete(Guid Id)
        {
            var entity = Get(Id);
            if (entity == null) return;

            Delete(entity);
        }

        public T Get(T entity)
        {
            return Conn.Get<T>(entity);
        }

        public T Get(Guid Id)
        {
            return Conn.Get<T>(Id);
        }

        public T Get(string Id)
        {
            return Conn.Get<T>(Id);
        }

        public T Get(int Id)
        {
            return Conn.Get<T>(Id);
        }

        public T Get(Expression<Func<T, bool>> func)
        {
            throw new NotImplementedException();
        }

        public IEnumerable<T> GetAll()
        {
            throw new NotImplementedException();
        }

        public IEnumerable<T> GetList(Expression<Func<T, bool>> where = null, Expression<Func<T, bool>> order = null)
        {
            throw new NotImplementedException();
        }

        public Tuple<int, IEnumerable<T>> GetPage(Page page, Expression<Func<T, bool>> where = null, Expression<Func<T, bool>> order = null)
        {
            throw new NotImplementedException();
        }

        public long Count(Expression<Func<T, bool>> where = null)
        {
            throw new NotImplementedException();
        }
    }

 

   

 由於Dapper是對Sqlmapper的擴充套件,所以當引入Dapper或者Dapper的擴充套件類之後,例項化IDbConnection 就可以使用上面的Dapper已經封裝好的方法了。

具體Dapper如何使用可看上一篇的小白的參考資料

具體的方法可以檢視引用的物件瀏覽器

 

以上就是對Dapper的初級使用了。