Beispiel #1
0
        //public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector);
        //public static IOrderedQueryable<TSource> OrderByDescending<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public void Update(TEntity entity)
        {
            try
            {
                var entry = EF.Entry(entity);
                EF.Set <TEntity>().Attach(entity);
                entry.State = EntityState.Modified;
            }
            catch (OptimisticConcurrencyException ex)
            {
                throw ex;
            }
        }
        //public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector);
        //public static IOrderedQueryable<TSource> OrderByDescending<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector);

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public int Update(TEntity entities)
        {
            if (EF == null)
            {
                throw new ArgumentNullException("dbContext");
            }
            if (entities == null)
            {
                throw new ArgumentNullException("entities");
            }


            DbSet <TEntity> dbSet = EF.Set <TEntity>();

            try
            {
                System.Data.Entity.Infrastructure.DbEntityEntry <TEntity> entry = EF.Entry(entities);
                if (entry.State == EntityState.Detached)
                {
                    dbSet.Attach(entities);
                    entry.State = EntityState.Modified;
                }
            }
            catch (InvalidOperationException)
            {
                TEntity oldEntity = dbSet.Find(entities.ID);
                EF.Entry(oldEntity).CurrentValues.SetValues(entities);
            }
            return(SaveChanges());
        }
Beispiel #3
0
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public int Update <TEntity1>(TEntity1 entities) where TEntity1 : class
        {
            if (EF == null)
            {
                throw new ArgumentNullException("dbContext");
            }
            if (entities == null)
            {
                throw new ArgumentNullException("entities");
            }


            DbSet <TEntity1> dbSet = EF.Set <TEntity1>();

            try
            {
                System.Data.Entity.Infrastructure.DbEntityEntry <TEntity1> entry = EF.Entry(entities);
                if (entry.State == EntityState.Detached)
                {
                    dbSet.Attach(entities);
                    entry.State = EntityState.Modified;
                }
            }
            catch (InvalidOperationException e)
            {
                if (typeof(TEntity1).GetProperties().Where(p => p.Name == "ID").Any())
                {
                    dynamic  dymodel   = entities;
                    TEntity1 oldEntity = dbSet.Find(dymodel.ID);
                    EF.Entry(oldEntity).CurrentValues.SetValues(entities);
                }
                else
                {
                    throw e;
                }
            }
            return(SaveChanges());
        }