ef更新部分字段
来源:互联网 发布:网络英语老师 编辑:程序博客网 时间:2024/05/17 02:13
ef更新字段的方式有两种:
1.就是把实体直接查询出来修改部分字段,在附加到ef上,如下:
using (ZDPORTALEntities1 db = new ZDPORTALEntities1()){ News n = db.News.FirstOrDefault(); if (n != null) { n.N_Title = "C#简介"; db.Set<News>().Attach(n); db.Entry<News>(n).State = EntityState.Modified; db.SaveChanges(); }}
这是比较常见的修改方式,但是有个缺点,每次修改实体的时候都要查一遍数据库,麻烦不说,影响执行速度。
2.不需要先把数据查询出来,但是要制定主键列标识的属性名称,这里有两种方法,如下:
方法一:
using (ZDPORTALEntities1 db = new ZDPORTALEntities1()) { News news = new News() { N_ID = Guid.Parse("c3967fb9-cdb5-4ba0-b463-e7c7a2b73d20"), N_Title="C#简介132" }; DbEntityEntry<News> entry = db.Entry<News>(news); entry.State = EntityState.Unchanged; entry.Property(t => t.N_Title).IsModified = true; //设置要更新的属性 db.SaveChanges(); }
还有一种方法如下:
using (ZDPORTALEntities1 db = new ZDPORTALEntities1()) { News news = new News() { N_ID = Guid.Parse("c3967fb9-cdb5-4ba0-b463-e7c7a2b73d20"), N_Title="C#简介132" }; db.News.Attach(news); var stateEntry = ((IObjectContextAdapter)db).ObjectContext. ObjectStateManager.GetObjectStateEntry(news); stateEntry.SetModifiedProperty("N_Title"); db.SaveChanges(); }
可以封装一下,进行复用:
/// <summary>/// 更新指定字段/// </summary>/// <param name="entity">实体</param> /// <param name="fileds">更新字段数组</param> public void UpdateEntityFields(T entity, List<string> fileds) { if (entity != null&&fileds!=null) { dbContext.Set<T>().Attach(entity); var SetEntry = ((IObjectContextAdapter)dbContext).ObjectContext. ObjectStateManager.GetObjectStateEntry(entity); foreach (var t in fileds) { SetEntry.SetModifiedProperty(t); } dbContext.SaveChanges(); } }
0 0
- ef更新部分字段
- 【EF】数据表全部字段更新与部分字段更新
- EF操作-修改部分字段
- EF中更新指定字段
- EF 如何更新部分列
- 更新部分字段 NHibernate
- hibernate 更新部分字段
- hibernate 更新部分字段
- hibernate更新部分字段
- hibernate 更新部分字段
- SQL字段值部分更新
- Hibernate更新部分字段浅谈
- ef获取某个表中的部分字段值
- hibernate如何实现部分字段更新
- 灵活更新部分更改的字段
- Hibernate之update及更新部分字段
- Mysql更新字段值的部分数据:
- MVC 更新部分字段 (数据库先行)
- Android WebView在屏幕旋转后,不重新加载URL及禁止横屏的方法
- android需要尽快掌握的
- 1.UIButton的基本使用
- MySql 存储过程实例(附完整注释)
- 反射2
- ef更新部分字段
- 输出字符串中的所有重复子
- c++智能指针
- java数据结构和算法 栈表队列2
- c++的友元
- 数据库数据处理性能提升技术
- 管理后台-前端-AngularJS
- C++ for 与while循环的区别
- vim 替换成 换行