EF部分字段更新,自动忽略null字段

 某个项目里的update代码是相似这样的this

        public T Update<T>(T entity) where T : ModelBase
        {
            var set = this.Set<T>();
            set.Attach(entity);
            this.Entry<T>(entity).State = EntityState.Modified;
            this.SaveChanges();
            return entity;
        }

 当运行的时候EF在UPDATE的时候会自动更新全部字段,这样就会增长很多麻烦spa

 例如咱们在页面里编辑数据保存的时候只但愿更新提交的数据,没有POST的字段但愿保持不变,例如createtime(建立时间),hit(点击数量)等。code

 因而我想到在UPDATE的时候遍历entity对象的全部属性,不是null的属性标记为Modified=true,这样在SaveChanges的时候只会更新非NULL的字段了。大体代码以下:对象

        public T Update<T>(T entity) where T : ModelBase
        {
            var set = this.Set<T>();
            set.Attach(entity);
            foreach (System.Reflection.PropertyInfo p in entity.GetType().GetProperties())
            {
                if (p.GetValue(entity) != null)
                {
                    this.Entry<T>(entity).Property(p.Name).IsModified = true;
                }
            }
            this.SaveChanges();
            return entity;
        }

这样处理后目前运行良好,若是有更好的办法请告诉我。blog

相关文章
相关标签/搜索