Exemplo n.º 1
0
 public IEnumerable <T> Insert <T>(IEnumerable <T> tList, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Write) where T : class
 {
     this.Context = _ContextFactory.CreateContext(writeAndRead);
     this.Context.Set <T>().AddRange(tList);
     this.Commit();//一个链接  多个sql
     return(tList);
 }
Exemplo n.º 2
0
 public void Update <T>(IEnumerable <T> tList, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Write) where T : class
 {
     this.Context = _ContextFactory.CreateContext(writeAndRead);
     foreach (var t in tList)
     {
         this.Context.Set <T>().Attach(t);
         this.Context.Entry <T>(t).State = EntityState.Modified;
     }
     this.Commit();
 }
Exemplo n.º 3
0
 public void Delete <T>(IEnumerable <T> tList, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Write) where T : class
 {
     this.Context = _ContextFactory.CreateContext(writeAndRead);
     foreach (var t in tList)
     {
         this.Context.Set <T>().Attach(t);
     }
     this.Context.Set <T>().RemoveRange(tList);
     this.Commit();
 }
Exemplo n.º 4
0
 /// <summary>
 /// 即使保存  不需要再Commit
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="t"></param>
 /// <returns></returns>
 public T Insert <T>(T t, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Write) where T : class
 {
     if (writeAndRead == WriteAndReadEnum.Read)
     {
         throw new Exception("增删改操作不能指向从库~从库只能用作查询用途~~");
     }
     this.Context = _ContextFactory.CreateContext(writeAndRead);
     this.Context.Set <T>().Add(t);
     this.Commit();//写在这里  就不需要单独commit  不写就需要
     return(t);
 }
Exemplo n.º 5
0
 /// <summary>
 /// 先附加 再删除
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="t"></param>
 public void Delete <T>(T t, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Write) where T : class
 {
     this.Context = _ContextFactory.CreateContext(writeAndRead);
     if (t == null)
     {
         throw new Exception("t is null");
     }
     this.Context.Set <T>().Attach(t);
     this.Context.Set <T>().Remove(t);
     this.Commit();
 }
Exemplo n.º 6
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        public void Update <T>(T t, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Write) where T : class
        {
            this.Context = _ContextFactory.CreateContext(writeAndRead);
            if (t == null)
            {
                throw new Exception("t is null");
            }

            this.Context.Set <T>().Attach(t); //将数据附加到上下文,支持实体修改和新实体,重置为UnChanged
            this.Context.Entry <T>(t).State = EntityState.Modified;
            this.Commit();                    //保存 然后重置为UnChanged
        }
Exemplo n.º 7
0
        /// <summary>
        /// 还可以增加非即时commit版本的,
        /// 做成protected
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="Id"></param>
        public void Delete <T>(int Id, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Write) where T : class
        {
            this.Context = _ContextFactory.CreateContext(writeAndRead);
            T t = this.Find <T>(Id);//也可以附加

            if (t == null)
            {
                throw new Exception("t is null");
            }
            this.Context.Set <T>().Remove(t);
            this.Commit();
        }
Exemplo n.º 8
0
        public DbContext ConnWriteOrRead(WriteAndReadEnum writeAndRead)
        {
            switch (writeAndRead)
            {
            case WriteAndReadEnum.Write:
                ToWrite();
                break;

            case WriteAndReadEnum.Read:
                ToRead();
                break;

            default:
                throw new Exception();
            }
            return(dbContext);
        }
        public DbContext ConnWriteOrRead(WriteAndReadEnum writeAndRead)
        {
            //判断枚举,不同的枚举更换Context链接;
            switch (writeAndRead)
            {
            case WriteAndReadEnum.Write:
                ToWrite();
                break;

            case WriteAndReadEnum.Read:
                ToRead();
                break;

            default:
                throw new Exception("wrong WriteAndReadEnum...");
            }
            return(_Context);
        }
Exemplo n.º 10
0
        public EFCoreAllContext CreateContext(WriteAndReadEnum writeAndRead)
        {
            string sqlConn = string.Empty;

            switch (writeAndRead)
            {
            case WriteAndReadEnum.Write:
                sqlConn = _Configuration.GetConnectionString("WriteAspNetCoreDataBase");
                break;

            case WriteAndReadEnum.Read:
                sqlConn = GetReadConn();
                break;

            default:
                break;
            }
            return(new EFCoreAllContext(sqlConn));
        }
Exemplo n.º 11
0
        public DbContext CreateContext(WriteAndReadEnum writeAndRead)
        {
            string strConn = string.Empty;

            switch (writeAndRead)
            {
            case WriteAndReadEnum.Write:
                strConn = dbconnOptions.WriteConnection;
                break;

            case WriteAndReadEnum.Read:
                strConn = GetPolling();
                break;

            default:
                break;
            }
            return(_DbContext.ToEFCoreContext(strConn));
        }
Exemplo n.º 12
0
        /// <summary>
        /// 创建数据库读写上下文
        /// </summary>
        /// <typeparam name="TEntity"></typeparam>
        /// <param name="writeAndRead">指定读、写操作</param>
        /// <returns></returns>
        public BaseDbContext CreateContext <TEntity>(WriteAndReadEnum writeAndRead)
        {
            DbConnectionOptions dbConnectionOptions = new DbConnectionOptions();

            switch (writeAndRead)
            {
            case WriteAndReadEnum.Write:
                dbConnectionOptions = DBServerProvider.GeDbConnectionOptions <TEntity>(true);
                break;

            case WriteAndReadEnum.Read:
                dbConnectionOptions = DBServerProvider.GeDbConnectionOptions <TEntity>(false);
                break;

            default:
                dbConnectionOptions = DBServerProvider.GeDbConnectionOptions <TEntity>(true);
                break;
            }
            return(new BaseDbContext(dbConnectionOptions));
        }
Exemplo n.º 13
0
 protected void SetWriteOrRead(WriteAndReadEnum writeAndReadEnum)
 {
     _context = this.dbContextFactory.ConnWriteOrRead(writeAndReadEnum);
     db       = _context.Set <TEntity>();
 }
Exemplo n.º 14
0
        public Task <TEntity> GetById(Guid id, WriteAndReadEnum writeAndReadEnum = WriteAndReadEnum.Read)
        {
            SetWriteOrRead(writeAndReadEnum);

            return(db.FindAsync(id).AsTask());
        }
Exemplo n.º 15
0
 /// <summary>
 /// 泛型list
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="funcWhere"></param>
 /// <param name="writeAndRead"></param>
 /// <returns></returns>
 public IEnumerable <T> GetList <T>(int top, Expression <Func <T, bool> > funcWhere, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Read) where T : class
 {
     Context = _ContextFactory.CreateContext(writeAndRead);
     if (top > 0)
     {
         if (funcWhere is null)
         {
             return(this.Context.Set <T>().Take <T>(top).ToList());
         }
         return(this.Context.Set <T>().Where <T>(funcWhere).Take <T>(top).ToList());
     }
     else
     {
         if (funcWhere is null)
         {
             return(this.Context.Set <T>().ToList());
         }
         return(this.Context.Set <T>().Where <T>(funcWhere).ToList());
     }
 }
Exemplo n.º 16
0
 /// <summary>
 /// 这才是合理的做法,上端给条件,这里查询
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="funcWhere"></param>
 /// <returns></returns>
 public IQueryable <T> Query <T>(Expression <Func <T, bool> > funcWhere, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Read) where T : class
 {
     Context = _ContextFactory.CreateContext(writeAndRead);
     return(this.Context.Set <T>().Where <T>(funcWhere));
 }
Exemplo n.º 17
0
 public T Find <T>(int id, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Read) where T : class
 {
     Context = _ContextFactory.CreateContext(writeAndRead);
     return(this.Context.Set <T>().Find(id));
 }
Exemplo n.º 18
0
        /// <summary>
        /// 分页查询
        /// </summary>
        /// <typeparam name="T">
        /// 定义IQueryable类型会先从数据库内查询分页,
        /// 如果定义IEnumerable类型则会先查询所有数据再分页</typeparam>
        /// <param name="result"></param>
        /// <param name="pageCurrent"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public PageInfo <T> PagingQuery <T>(Expression <Func <T, bool> > funcWhere, int pageCurrent, int pageSize, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Read) where T : class
        {
            Context = _ContextFactory.CreateContext(writeAndRead);
            IQueryable <T> result = Context.Set <T>().Where <T>(funcWhere);

            PageInfo <T> pageDto = new PageInfo <T>();

            if (pageCurrent < 1)
            {
                pageCurrent = 1;
            }
            var itemIndex = (pageCurrent - 1) * pageSize;

            var pageOfItems    = result.Skip(itemIndex).Take(pageSize).ToList();
            var totalItemCount = result.Count();

            //总页数
            pageDto.PageCount   = (int)Math.Ceiling(totalItemCount / (pageSize * 1.0));
            pageDto.PageCurrent = pageCurrent;
            pageDto.PageSize    = pageSize;
            pageDto.Result      = pageOfItems;
            pageDto.RowsCount   = totalItemCount;

            return(pageDto);
        }
Exemplo n.º 19
0
 /// <summary>
 /// 主库  即可以读取也可以增删改;
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="id"></param>
 /// <param name="writeAndReadEnum">可以主库和从库查询,根据传入枚举判断</param>
 /// <returns></returns>
 public T Find <T>(long id, WriteAndReadEnum writeAndReadEnum = WriteAndReadEnum.Read) where T : class
 {
     //确定链接
     _Context = _ContextFactory.ConnWriteOrRead(writeAndReadEnum);
     return(this._Context.Set <T>().Find(id));
 }
Exemplo n.º 20
0
        public T Find <T>(Guid id, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Read) where T : class
        {
            _context = _DbContextfactory.CreateContext(writeAndRead);

            return(this._context.Set <T>().Find(id));
        }
Exemplo n.º 21
0
 public IList <TEntity> GetAll(WriteAndReadEnum writeAndReadEnum = WriteAndReadEnum.Read)
 {
     SetWriteOrRead(writeAndReadEnum);
     return(db.ToList());
 }
Exemplo n.º 22
0
        public IQueryable <T> Query <T>(WriteAndReadEnum writeAndRead = WriteAndReadEnum.Read) where T : class
        {
            _context = _DbContextfactory.CreateContext(writeAndRead);

            return(this._context.Set <T>());
        }