在不同的ObjectContext中更新数据
第一个using中获取一些数据
User u; using (var db = new Entities()) {u = db.Users.First(); }
在using外改变
u.NickName += "ABC";
在第二个using中把改变更新到库
using (var db = new Entities()) {
……
db.SaveChanges(); }
在网上看了一些使用ApplyPropertyChanges()做的(此方法已过时,被标记为Browsable(false),可以使用新的ApplyCurrentValues),不过在apply之前,要先从库里把要改变的数据查出来(通过EntityKey查)这样会增加一次读库操作
保存的是这个刚查出来的,而不是之前上下文查出来的。
可以使用Attach附加,但是附加之后状态会变成Unchanged
这个时候需要手动改state,不能直接改,只有get没有set
db.ObjectStateManager.ChangeObjectState(obj, EntityState.Modified);
要通过state manager改。
改后save即可
用apply的方式
1: using (var db = new Entities())
2: {
3: Console.WriteLine("到第二个上下文中" + u.EntityState + "," + u.NickName);
4:
5: var u2 = db.GetObjectByKey(u.EntityKey) as User;
6: Console.WriteLine("在第二个中查出" + u.EntityState + ",1:" + u.NickName);
7: Console.WriteLine("在第二个中查出" + u2.EntityState + ",2:" + u2.NickName);
8:
9: db.Users.ApplyCurrentValues(u);
10: Console.WriteLine("在第二个中apply" + u.EntityState + ",1:" + u.NickName);
11: Console.WriteLine("在第二个中apply" + u2.EntityState + ",2:" + u2.NickName);
12:
13: db.SaveChanges();
14: Console.WriteLine("保存后" + u.EntityState + ",1:" + u.NickName);
15: Console.WriteLine("保存后" + u2.EntityState + ",2:" + u2.NickName);
16: }
用attach的方式
1: using (var db = new THZlocalEntities())
2: {
3: db.Attach(u);
4: Console.WriteLine("附加后" + u.EntityState + "," + u.NickName);
5:
6: db.ObjectStateManager.ChangeObjectState(u, EntityState.Modified);
7: Console.WriteLine("改变状态" + u.EntityState + "," + u.NickName);
8:
9: db.SaveChanges();
10:
11: Console.WriteLine("保存" + u.EntityState + "," + u.NickName);
12:
13: }
转载于:https://www.cnblogs.com/czcz1024/archive/2011/09/30/2196246.html
在不同的ObjectContext中更新数据相关推荐
- es重建字段类型_关于elasticsearch中更新数据的几种方式
作为一个成熟的框架,Elasticsearch里面提供了丰富的操作数据的api,本篇我们就来学习一下在es中更新数据的几种方式. (一)更新文档 (1)部分更新: java api: ` HashMa ...
- MySql 从查询结果中更新数据
个通过外键关联的表 ,将一个表中的内容更新到另一个表中 UPDATE question_extracting_item AS a INNER JOIN (SELECTb.id,b.title_text ...
- 在mysql中更新数据sql语句怎么写_在MySQL中,更新数据库表记录的SQL语句,包括______语句...
在MySQL中,更新数据库表记录的SQL语句,包括______语句 答:insert replace update delete 在域F中,设其特征为2,对于任意a,b∈F,则(a+b)2 等于多少 ...
- mysql update select 从查询结果中更新数据
# update select 语句(注意:必须使用inner join) 语法 : UPDATE a INNER JOIN ( SELECT yy FROM b ) c ON a.id = c.id ...
- 在mysql中 更新数据中where_SQL中使用UPDATE更新数据时一定要记得WHERE子句
Servlet访问第一次500,刷新后404的解决办法 第一次运行错误:HTTP Status 500 - --------------------------------------------t ...
- 在DataTable中更新、删除数据
在DataTable中选择记录 /*在DataTable中选择记录*//* 向DataTable中插入记录如上,更新和删除如下:* ----但是在更新和删除前,首先要找出要更新和删除的记录.* 一种方 ...
- Oracle中压缩数据节省空间和提高速度
使用表压缩来节省空间并提高查询性能 很多决策支持系统通常都涉及到存储于几个特大表中的大量数据.随着这些系统的发展,对磁盘空间的需求也在快速增长.在当今的环境下,存储着数百TB(太字节)的数据仓库已经变 ...
- oracle更新数据没反应,ORACLE更新数据时如果有就更新没有就插入
SQL写法: begin update table_name set salary = 10000 where emp_id = 5; if sql%notfound then insert into ...
- 小程序不刷新页面更新数据
微信小程序不刷新页面更新数据 小程序刷新页面过程大家都懂得,特别是网络不好的时候,觉得这te,ma,就是一种折磨,如何做到不刷新页面就可以更新数据? 页面栈: 小程序的每一个页面都是一个page对象, ...
最新文章
- 如何评估深度学习模型效果?阿里工程师这么做
- Oracle本地管理对照数据字典管理表空间
- 离开时请告诉自己生意就是生意
- 程序员三年的门槛该如何跨过去?
- python 第三方模块之 pandas 操作 excel
- ./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No suc
- 使用 Storyboard Segue 实作 UIViewController 的切换 (实例)
- 未来无限可能 戴尔易安信开启中国新征程
- DemocracyOS促进双方的公民参与
- FISCO BCOS同步模块的优化策略
- 计算机机房需求调查表,机房建设需求调查表机房建设需求调查表.doc
- 高阶常微分方程的求解
- 2. Vue prevent修饰符
- python程序员面试算法宝典pdf-Python程序员面试笔试宝典
- 知识点 - 线性丢番图方程 Linear Diophantine Equations
- 多模态交互在,数智化营销服中的技术实践
- 直播带货“老三”,抖音背上「KPI」了
- 新的一年,如何打开超级APP发展格局
- Python自动化构建雷电模拟器
- excel导入非法字符处理,form表单等提交参数前后去除空白处理
热门文章
- 怎么解决input中readonly属性的iOS一直存在光标问题
- iPhone 软件:xlate free 编码的好帮手!
- CORS——跨域请求那些事儿
- 【错误解决】[Maven] cannot be opened because it does not exist错误[文件无法编译到target目录下的解决方法]...
- VS2013配置pro*C/C++开发环境
- 十天冲刺---Day8
- 百度地图移动端开发和ArcGIS for Android 开发入门
- jquery中的ajax方法(备忘)
- kafka 服务端消费者和生产者的配置
- iOS开发网络篇—网络编程基础