首页 > 其他 > 详细

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

时间:2015-11-14 21:52:59      阅读:489      评论:0      收藏:0      [点我收藏+]

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

        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的时候会自动更新所有字段,这样就会增加不少麻烦

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

 于是我想到在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;
        }

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

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

原文:http://www.cnblogs.com/relax/p/4965008.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!