在不同的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: }
 

201109301109373096.png

用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: }
 

201109301109412700.png

转载于:https://www.cnblogs.com/czcz1024/archive/2011/09/30/2196246.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5分钟理解一致性哈希算法

来自:cywosp链接:https://blog.csdn.net/cywosp/article/details/23397179一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷…

linux 取消证书登录密码,SUSELinux 中为 SSH 访问设置不输入密码的证书认证登录方式...

SSH Client :linux-gxntSSH Server :xxzx-rdb目的: linux-gxnt 上的 nagios 用户以相同的用户(nagios)SSH 登录xxzx-rdb ,不用输入密码。1.在 SSH Client 和 Server 上使用 yast 创建 nagios 用户和nagios 组,nagios 用…

Blazor 初探

Blazor 初探目录一、新建项目二、ASP.NET Core Blazor 项目结构三、结合代码讲解四、改造五、配置文件的使用六、发布到 Linux(CentOS)题外话,期间遇到个问题反向代理七、地址独立观察员 2021 年 4 月 11 日上个月发了篇文章《Blazor 中如何下…

Relaltek声卡在UBUNTU下没有声音的解决方法。

为什么80%的码农都做不了架构师?>>> The computer has an HDA Intel chip (Realtek ALC887) and I couldnt open alsamixer (this error was displayed: "load hw:0 error: Invalid argument"), although the sound seemed to be working in …

.Net项目模板进阶

友情提示:这篇有点长,有点绕,加油!上一篇文章,简单的说明了一下.net项目模板的创建,主要是通过在项目文件*.csproj同目录下添加.template.config文件夹和里面的template.json,再用dotnet new -i…

Web Worker 使用教程

一、概述JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来…

bert模型需要什么版本Linux,Bert模型

Bert语言表征预训练。1有上下文——根据整句话生成词表征2无上下文——word2vec 和glove词汇表中每个单词生成单个词嵌入表征,bank、bank deposit、river bank 相同表征Unsupervised(仅使用语料库),深度双向Bert建立在上下文预训练语境表征工作基础上,半…

Hmm

http://blog.sina.com.cn/s/blog_46ed82810100cgwb.html 彻底搞定C指针-const int * pi/int * const pi的区别 http://www.qnr.cn/pc/lin/study/201008/521819.html Linux系统内存监控全面讲解之free命令 http://www.qnr.cn/pc/lin/study/201008/521844.html 具有杀…

NET问答: C# 中是否有最高效的方式对大文件做 checksum ?

咨询区 Dario:我需要在多台机器间同步大文件,不过文件高达 6G,通常我都是每几周手工同步一次,考虑到文件的文件名经常变,为了检验一致性,我考虑使用 checksum 机制。我的计划是在 源机器 和 目标机器 上做 …

linux宝塔类似工具,有没有比宝塔面板更好的linux运维工具?

我是一个站长,现在建站seo是比较重要的部分,买了独立ip的云服务器主机,为了就是能够seo效果好点.建站优化我不担心,最郁闷的就是linux服务器运维这块,宝塔linux面板是必须安装到服务器上,比较消耗服务器内存,运维比较麻烦.还有就是购买宝塔面板的附带插件比较贵,基本买个网站防…

世界上最难的5种编程语言

每个程序员都熟悉许多编程语言。许多编程语言都是高级的,它们的语法是人类可读的。然而,也有一些低级语言,对于一个人来说,读起来很困难,但是可以理解。您是否遇到过一种既不可读又不可理解的编程语言?有一些编程语言…

局域网速度变慢的故障分析

在众多的网络故障中,最令人头痛的是网络是通的,但网速变慢。初次面对这类“软”故障时,往往有的人会束手无策,本文为大家介绍引起此类“软”故障常见的原因及排除方法,提高大家对实际问题的处理能力。★网线问题我们知…

云原生 | .NET 5 with Dapr 初体验

【Dapr】| 总结/Edison Zhou分布式应用运行时Dapr目前已经发布了1.1.0版本,阿里云也在积极地为Dapr贡献代码和落地实践。作为一名开发者,自然也想玩一玩,看看Dapr带来的新“视”界到底是怎么样的。1关于DaprDapr(Distributed Appl…

linux中的ip地址范围,linux – ip地址范围参数

从http://linux-ip.net/html/tools-ip-address.html:Scope | Descriptionglobal | valid everywheresite | valid only within this site (IPv6)link | valid only on this devicehost | valid only inside this host (machine)范围通常由ip实用程序确定,无需在命令…

充分利用系统的组策略 保障共享目录安全

在日常的办公应用中,为了使用的方便,我们习惯于将自己电脑上的一些文档、目录共享出来,以便于别人调用。但是对于共享的文件夹常常无法做到在使用后即将其关闭,这样网络上一些别有用心的人则可能对我们的共享文件进行破坏&#xf…

Python资料分享来袭,收下不谢!

近几年,机器学习一直很火,小编也有意识地收集了机器学习相关的资源,经过长时间的积累和沉淀,内容涵盖“Python教程”、“编程指南”、“学习视频”等。现在,小编准备将这些资料免费分享给大家!扫描下面二维…

我敢说,这是最全的常用设计模式汇总

先分享一个小故事两个年轻人是大学同班同学,他们毕业后一起被同一家公司录取,可以说是站在相同的起跑线上。两个人都对未来信心满满,踌躇满志。其中一人怀抱满腔激情,到处学热门框架,但受限于公司体量和业务逻辑&#…

Python为什么是编程语言中最skr的?

源 / 大数据文摘(BigDataDigest) 编译 / 小七、Virgil、AlieenPython的出现让计算机编程语言不再是生僻的专业技能,而是常人都能学习和使用的万金油。《经济学人(Economist)》近日对Python的一篇专题报道&#xff0c…

微软:Vista SP2是最安全的操作系统

微软首席运行官Kevin Turner在上周末的Midmarket CIO峰会上表示,Windows Vista SP2是最安全的一款操作系统,它在安全性能方面比开源Linux和苹果的Mac OS X Leopard都要出色,不过除了这一观点外,Turner并没有详谈Vista SP2的安全措…

linux mysql帮助文档,在 Linux 上安装 MySQL

## 2.5 在 Linux 上安装 MySQLLinux 支持多种不同的 Linux 安装解决方案. We recommend that you use one of the distributions from Oracle, for which several methods for installation are available:**表 2.7 Linux 安装方法和信息**| 类型 | 设置方法 | 附加信息 ||:---…