在不同的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 的出现,单线程带来…

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…

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

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

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

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

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

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

Linux系统管理员的Bash指南,11条Bash实践经验!

每个职业都有最常用的工具。对于许多系统管理员来说,shell可能是比较熟悉的。在大多数Linux和其他类Unix系统上,默认的shell是Bash。Bash是一个相当古老的程序,它起源于20世纪80年代后期。但它建立在更多,更老的shell上&#xff0…

Asp Net Core 5 REST API 使用 RefreshToken 刷新 JWT - Step by Step(三)

翻译自 Mohamad Lawand 2021年1月25日的文章 《Refresh JWT with Refresh Tokens in Asp Net Core 5 Rest API Step by Step》 [1]在本文中,我将向您演示如何在 Asp.Net Core REST API 中将 Refresh Token 添加到 JWT 身份验证。我们将覆盖的一些主题包含&#xff1…

国外的程序猿可以工作到退休而国内的为什么这么短命(思维认知)

首先我想说明的是国外的程序猿也存在加班,他们也要赶项目,所以加班不算什么原因。真正的原因是我们国内的很大一部分程序猿只是工具的使用者,不会去思考工具的产生和原理,用惯了一个高效的工具就被这个工具套牢成为奴隶&#xff0…

使用 docker 部署 mdnice

使用 docker 部署 mdniceIntro最近 mdnice 的在线版使用开始需要登录才能访问,一方面我觉得我的文章会被保存的他们的服务器上,使用他们的平台就能轻松拿到很多文章的数据,他们甚至是可以直接拿到 markdown 原始内容去别的平台分享转发&#…

细数近年来机器学习研究的几大怪现状

人工智能领域的发展离不开学者们的贡献,然而随着研究的进步,越来越多的论文出现了「标题党」、「占坑」、「注水」等现象,暴增的顶会论文接收数量似乎并没有带来更多技术突破。最近,来自卡耐基梅隆大学的助理教授 Zachary C. Lipt…

50K求聘.NET,我们是认真的!

今年的节奏特别快,不知道你有没有同感?春节刚过,跳槽季仓促开始,打了个疫苗,过了个清明,一转头4月过半,金三银四就快尾声了,真是时光飞逝。当然,手速快的已经offer拿到手…

linux编译redis打包,linux下下载redis,并且编译

1:下载、解压、编译$ wget http://download.redis.io/releases/redis-3.0.6.tar.gz$ tar xzf redis-3.0.6.tar.gz$ cd redis-3.0.6$ make2:结果显示很多error,127,1,2之类的,然后我参考了这个网站https://w…