public TEntity FindNoTracking(TId id) { var keyValues = GetEntityKeyValues(id); var entity = DbContextExtention.FirstOfDefaultIdEquals(DbSet.AsNoTracking(), keyValues[0]); return(entity); }
public virtual void Add(IList <TEntity> listEntry, bool recreateContext, int commitCount) { //DbContext.ChangeTracker.AutoDetectChangesEnabled = false; int count = 0; foreach (var entry in listEntry) { ++count; //Todo оставить тут var local = DbContextExtention.FirstOfDefaultIdEquals(DbSet.Local.ToObservableCollection(), entry); if (local != null) { DbContext.Entry(local).State = EntityState.Detached; } DbSet.Add(entry); if (count % commitCount == 0) { DbContext.SaveChanges(); if (recreateContext) { DbContext.Dispose(); //TODO переделать!! //DbContext = new DbContext("RPCSContext"); //DbContext.ChangeTracker.AutoDetectChangesEnabled = false; } } } DbContext.SaveChanges(); }
public virtual IList <TEntity> Update(IList <TEntity> entities, int commitCount = 100) { int count = 0; foreach (var entity in entities) { count++; //Todo оставить тут var local = DbContextExtention.FirstOfDefaultIdEquals(DbSet.Local.ToObservableCollection(), entity); if (local != null) { DbContext.Entry(local).State = EntityState.Detached; } if (!DbSet.Local.Any(item => item == entity)) { DbContext.Entry(entity).State = EntityState.Modified; } try { if (count % commitCount == 0) { DbContext.SaveChanges(); } } //catch (System.Data.Entity.Validation.DbEntityValidationException dbEx) //{ // Exception raise = dbEx; // foreach (var validationErrors in dbEx.EntityValidationErrors) // { // foreach (var validationError in validationErrors.ValidationErrors) // { // string message = string.Format("{0}:{1}", // validationErrors.Entry.Entity.ToString(), // validationError.ErrorMessage); // // raise a new exception nesting // // the current instance as InnerException // raise = new InvalidOperationException(message, raise); // } // } // throw raise; //} catch (DbUpdateConcurrencyException exc) { throw new EntityNotFoundException(typeof(TEntity).Name, exc); } } DbContext.SaveChanges(); return(entities); }
protected virtual TEntity UpdateInternal(TEntity entity) { if (entity == null) { throw new ArgumentNullException(nameof(entity)); } //Todo оставить тут var local = DbContextExtention.FirstOfDefaultIdEquals(DbSet.Local.ToObservableCollection(), entity); if (local != null) { DbContext.Entry(local).State = EntityState.Detached; } if (!DbSet.Local.Any(item => item == entity)) { DbContext.Entry(entity).State = EntityState.Modified; } try { DbContext.SaveChanges(); } //catch (DbEntityValidationException dbEx) //{ // Exception raise = dbEx; // foreach (var validationErrors in dbEx.EntityValidationErrors) // { // foreach (var validationError in validationErrors.ValidationErrors) // { // string message = string.Format("{0}:{1}", // validationErrors.Entry.Entity.ToString(), // validationError.ErrorMessage); // // raise a new exception nesting // // the current instance as InnerException // raise = new InvalidOperationException(message, raise); // } // } // throw raise; //} catch (DbUpdateConcurrencyException exc) { throw new EntityNotFoundException(typeof(TEntity).Name, exc); } return(entity); }
public virtual TEntity GetByIdInclude(TId id, params Expression <Func <TEntity, object> >[] includes) { var entry = DbContextExtention.FirstOfDefaultIdEquals(Include(includes), id); return(entry); }