EF部分字段更新,自动忽略null字段
2015-11-14 20:32
447 查看
某个项目里的update代码是类似这样的
当运行的时候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); 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; }
这样处理后目前运行良好,如果有更好的办法请告诉我。
相关文章推荐
- 一个简单的实现奇 偶判断的代码
- 2015.11.14
- 21 Merge Two Sorted Lists
- 232 Implement Queue using Stacks
- QNX os supported board(ARM+MIPS+POWERPC+X86)
- Java继承 学习 && 类初始化顺序
- 记录下,系统下命令都不能用
- 202 Happy Number
- 在matlab环境下LIBSVM的demo
- 263 Ugly Number
- Ugly Number II
- iar for 8051 v8.30破解文件的使用
- 70 Climbing Stairs
- Codeforces Round #328 (Div. 2) D. Super M
- OC协议的应用-代理
- 伪目标
- JavaScript之再谈回调与闭包
- iOS性能优化:Instruments使用实战
- 83 Remove Duplicates from Sorted List
- 时序图学习笔记