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); }
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(); }
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(); }
/// <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); }
/// <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(); }
/// <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 }
/// <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(); }
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); }
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)); }
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)); }
/// <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)); }
protected void SetWriteOrRead(WriteAndReadEnum writeAndReadEnum) { _context = this.dbContextFactory.ConnWriteOrRead(writeAndReadEnum); db = _context.Set <TEntity>(); }
public Task <TEntity> GetById(Guid id, WriteAndReadEnum writeAndReadEnum = WriteAndReadEnum.Read) { SetWriteOrRead(writeAndReadEnum); return(db.FindAsync(id).AsTask()); }
/// <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()); } }
/// <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)); }
public T Find <T>(int id, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Read) where T : class { Context = _ContextFactory.CreateContext(writeAndRead); return(this.Context.Set <T>().Find(id)); }
/// <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); }
/// <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)); }
public T Find <T>(Guid id, WriteAndReadEnum writeAndRead = WriteAndReadEnum.Read) where T : class { _context = _DbContextfactory.CreateContext(writeAndRead); return(this._context.Set <T>().Find(id)); }
public IList <TEntity> GetAll(WriteAndReadEnum writeAndReadEnum = WriteAndReadEnum.Read) { SetWriteOrRead(writeAndReadEnum); return(db.ToList()); }
public IQueryable <T> Query <T>(WriteAndReadEnum writeAndRead = WriteAndReadEnum.Read) where T : class { _context = _DbContextfactory.CreateContext(writeAndRead); return(this._context.Set <T>()); }