Example #1
0
        public virtual void SaveOrUpdate(T entity)
        {
            //if (entity.ID == 0)
            if (IsAddEntity(entity))
            {
                Insert(entity);
            }
            else
            {
                //var oldEnt = GetEntity(entity.ID);
                var oldEnt = GetOldEntity(entity);
                if (oldEnt == null)
                {
                    throw new JsMiracleException(
                              string.Format("对象({0})不存在无法修改 id:{1}", typeof(T).Name, GetKeyValue(entity)));
                }

                ModuleMemberCopy.SameValueCopier(entity, oldEnt);

                //DbContext.Entry(entity).State = EntityState.Modified;

                if (DbContext.Entry(oldEnt).State == EntityState.Modified)
                {
                    DbContext.SaveChanges();
                }
            }
        }
Example #2
0
        protected virtual IList <T> GetPageQuery(IQueryable <T> query)
        {
            // 不使用成员copy (快)
            if (!UserCopyMemberProperty)
            {
                return(query.ToList());
            }

            // 使用成员copy (反射,慢, 去除集合属性,防止外键序列化显示时的列循环)
            List <T> lx = new List <T>();

            foreach (var data in query)
            {
                T ent = new T();
                ModuleMemberCopy.SameValueCopier(data, ent, false);
                lx.Add(ent);
            }
            return(lx);
        }