Beispiel #1
0
        public TEntity FindNoTracking(TId id)
        {
            var keyValues = GetEntityKeyValues(id);
            var entity    = DbContextExtention.FirstOfDefaultIdEquals(DbSet.AsNoTracking(), keyValues[0]);

            return(entity);
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        public virtual TEntity GetByIdInclude(TId id, params Expression <Func <TEntity, object> >[] includes)
        {
            var entry = DbContextExtention.FirstOfDefaultIdEquals(Include(includes), id);

            return(entry);
        }