ADO.NET 实体框架中的乐观并发

2024-04-14

I found MSDN 文章 http://msdn.microsoft.com/en-us/library/bb738618(v=vs.90).aspx描述了 EF 在保存更改时如何处理并发:

默认情况下[...]对象服务保存对象 对数据库的更改没有 检查并发性。为了 可能会经历 高并发,我们 建议实体属性为 在概念层中定义为 的一个属性 并发模式=“固定”

我有两个问题:

  1. 我的模型中没有属性ConcurrencyMode="fixed",我可以安全地假设如果有OptimisticConcurrencyException保存更改时抛出,这是因为该实体不再存在于数据存储中,即它已被其他用户删除,或者我遗漏了什么?

    我想象 EF 执行UPDATE-看起来像这样的陈述,在我看来,这只会导致OptimisticConcurrencyException如果 ID = 1 的 Person 不存在则抛出:

     UPDATE Person SET FirstName = 'John' AND LastName = 'Smith' WHERE ID = 1
    
  2. 使用时ConcurrencyMode="fixed", 删除实体时 EF 是否也会检查并发性?换句话说,EF 是否会执行DELETE- 语句看起来像这样(不仅仅是主键WHERE-条款):

     DELETE FROM Person WHERE ID = 1 AND LastName = 'Doe'
    

好问题。

(1) 是的,但不幸的是事情没有这么简单。因为 EF (3.5) 具有独立的关联模型,所以关联也被独立处理,即使您没有这么说,它也会成为 UPDATES 和 DELETES 期间并发检查的一部分。

即,当您更新人员时,您经常会看到如下所示的更新:

UPDATE Person SET Partner = NULL AND FirstName = 'John' AND LastName = 'Smith' 
WHERE ID = 1 AND Partner = 2

即合作伙伴是 FK 列。

如果您使用 FK 关联,这一切都会在 4.0 中发生变化,正如我们大多数人所期望的那样。

(2) 对于 DELETE,在删除期间会检查任何 ConcurrencyMode = 'fixed' 属性。例外情况是当您有一个用于删除的 SPROC 不接受该并发值时。

希望这可以帮助

Alex

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ADO.NET 实体框架中的乐观并发 的相关文章

  • 从标签 ID 更改整个 gridview 单元格颜色

    试图弄清楚当我有标签 ID 时如何更改 gridview 单元格的背景颜色
  • .NET 远程处理回调

    是否可以通过远程处理传输回调 我想做一些类似的事情myRemoteObject PerformStuff x gt Console WriteLine x 如果没有 我将如何实现等效的功能 Edit 我知道 Remoting 已被 WCF
  • 这个 SQL 查询有什么问题?

    在过去的一个小时里 我一直在尝试此查询的不同变体 但我在用户名处收到错误 并且用户名只是一个普通字符串 其中的用户名是我从不包含特殊字符或任何内容的 xml 文件中获取的 我正在使用 SLQ 紧凑型 3 5 P S 我尝试使用 而不是 us
  • 平滑滚动.net 表单

    您好 我正在 net 中使用表单 并且在运行时动态添加大量链接标签 我将这些链接标签添加到面板并将该面板添加到 winform 当链接标签的数量增加时 表单会显示一个自动滚动条 垂直 现在 当我使用自动滚动向下滚动时 表单在滚动时不会更新其
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • MVC5 实体框架的问题

    我在我的 Web 应用程序中使用 Visual Studio 2013 中的 ASP NET MVC5 Entity Framework 6 我正在尝试我的模型工作 但由于某种原因而出现错误 我已经尝试过 Fluent API 和它自己的模
  • 终结器线程的范围是什么 - 每个应用程序域或每个进程?

    根据我的所有阅读 应该有一个 GC 线程来调用所有终结器 现在的问题是这个 一个 线程的范围是什么 每个进程或每个应用程序域 因为域的整体目的是在一个进程空间中分离并创建 独立 的不同应用程序 I read here http dn cod
  • 当进程等待完成时如何显示加载控件?

    我决定使用这个第三方组件在我的 Windows 窗体中制作一个简单的加载控件 http www codeproject com Articles 14841 How to write a loading circle animation i
  • StringComparison.InvariantCultureIgnoreCase 去哪儿了?

    我正在将 C 代码移植到 Windows 应用商店应用程序 令我惊讶的是 以下代码不再起作用 someString Equals someOtherString StringComparison InvariantCultureIgnore
  • 如何禁用 Alt + F4 关闭表单?

    What is the best way to disable Alt F4 in a c win form to prevent the user from closing the form 我使用表单作为弹出对话框来显示进度条 但我不希
  • 如何完全禁用签名程序集?

    我有一个包含多个项目的 VS NET 2010 解决方案 我刚刚添加了一个新的库项目 the library assembly 启动项目是一个网站 当我运行该网站时 出现以下错误 无法加载文件或程序集 the library assembl
  • 两个 RichTextBox 具有相同的滚动条

    是否有任何可用的第三方工具有两个富文本框 但两者只有一个共享滚动条 我需要用两种不同的语言实现一些文本 但两个文本框应该同时滚动 public enum ScrollBarType uint SbHorz 0 SbVert 1 SbCtl
  • 在 Azure 上运行 .NET 应用程序

    我拥有在 Amazon EC2 上运行应用程序的丰富经验 它需要一台低端服务器 我目前为该服务器支付大约 90 美元 月 是的 我知道我并不真正需要可扩展性 但我仍然使用 EC2 我想知道将这个纯粹的 NET 应用程序迁移到 Microso
  • 实体框架服务层更新 POCO

    我正在使用Service Layer gt Repository gt Entity Framework Code First w POCO objects方法 我在更新实体方面遇到了困难 我正在使用 AutoMapper 将域对象映射到视
  • KeyValuePair - 没有无参数构造函数?

    我有一个具有 KeyValuePair 类型属性的对象 我想从数据库读取一些数据并将结果存储在这个 KeyValuePair 类型字段中 myObject KeyValuePairs ctx ExecuteQuery
  • 通过 SOAP 的 Gmt php 或 UTC C# 等效项

    is C DateTime UtcNow和 PHPdate c 是等价的 我怀疑 因为当我肥皂时 我得到了 C
  • 为什么有些控件同时具有BackgroundImage和Image属性?

    为什么有些控件喜欢Button or PictureBox两者都有BackgroundImage and Image财产 为什么在按钮的情况下需要它们两个 或者为什么在图片框中背景图像应该可用 BackgroundImage继承自Contr
  • 检测 TextBox 中的 Tab 键按下

    I am trying to detect the Tab key press in a TextBox I know that the Tab key does not trigger the KeyDown KeyUp or the K
  • 如何使用 VB.NET 打开受密码保护的共享网络文件夹?

    我需要在网络上打开受密码保护的共享文件夹才能访问 Access 97 数据库 如何打开文件夹并输入密码 在这里找到http www mredkj com vbnet vbnetmapdrive html http www mredkj co

随机推荐

  • 用于分类的 Python 向量化[重复]

    这个问题在这里已经有答案了 我目前正在尝试构建一个包含大约 80 个类别的文本分类模型 文档分类 当我使用随机森林构建和训练模型时 将文本矢量化为 TF IDF 矩阵后 该模型运行良好 然而 当我引入新数据时 我用来构建 RF 的相同单词不
  • 将 R 数据框中的多列转换为日期格式

    我有一个很大的数据文件 其中所有日期都已作为字符加载 我想将所有日期列更改为日期格式 大多数日期具有 y m d 格式 有些具有 Y m d 格式 有 25 列日期 因此单独更改每一列的效率很低 我可以 df DATE1 lt as Dat
  • Firebase:如何将虚 URL 添加到云函数?

    被简短提及here https stackoverflow com questions 45850375 use custom domain for google cloud function 但现在我已经将我的 GCP 项目连接到 Fir
  • 如何在“X”秒后调用 jquery 函数

    我有一个 jquery 函数 我需要在 Iframe 中打开网站后调用它 我正在尝试在 Iframe 中打开一个网络链接 打开它后我需要调用以下函数 那么我该怎么做呢 这是我的功能
  • xcode 4.5 崩溃日志符号除应用程序行外

    我怎样才能象征一切 这是一个例子 所以我正在谈论 Thread 0 name Dispatch queue com apple main thread Thread 0 Crashed 0 CoreFoundation 0x351642cc
  • 如何在标签中的 tkinter 上制作字幕?

    我有这个源代码 from Tkinter import import tkMessageBox import time class Window Tk def init self parent Tk init self parent sel
  • 将图像文件存储在 IndexedDB 中

    我在尝试将图像文件存储在 IndexedDB 中时遇到问题 我抓取文件对象并尝试将其推送到 IndexedDB 中 但它似乎抛出错误 DOM Exception DATA CLONE ERR 25 如何将如下所示的文件对象转换为可以存储在
  • 如何在Eclipse中添加JBoss服务器?

    我是 JBoss 的新手 刚刚安装了 Eclipse 我已将一个项目添加到工作区 现在我想将其部署到 Jboss 服务器 然而 在新的服务器运行环境列表中 JBoss 不可用 我正在使用以下 Eclipse 版本 面向 Web 开发人员的
  • 从 UIViewController 返回 NSString

    我想返回一个NSString 从一个名为InputUIViewController的UIViewController 到之前的一个名为CallerUIViewController的UIViewController 它启动了InputUIVi
  • F# 图表示例

    我想使用内置功能或免费库在 F 中做一些基本的图表 我会对一个非常基本的例子感到非常非常满意 如果可能的话 饼图 示例数据 John 34 Sara 30 Will 20 Maria 16 其中整数是饼图中要表示的百分比 我最近安装了 VS
  • 使用 D3 在地图上绘制点

    我正在尝试使用基于纬度和经度的 D3 地理库在地图上绘制一些点 但是 当我将这些值传递到投影函数时 它会导致坐标超出 SVG 图像的范围 我的代码基于文档中提供了这个示例 http bl ocks org mbostock 3757119
  • 为什么在 Angular 指令的链接函数中“this”为空?

    我正在尝试使用 TypeScript 和 Angular 编写动态模板 但由于某种原因 this 关键字始终为空 因此我无法访问我的私有成员 compile 有任何想法吗 非常感谢 指示 namespace ROD Features Pla
  • 使用带有函数和 mixins 的对象(而不是原型)是否会带来一些性能损失? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 JavaScript 中执行 OOP 的一种常见方法是使用带有附加函数的对象 而不是使用内置的原型 构造函数和new操作员 Mixin 通常
  • 我的项目名称下出现错误,但不存在错误?

    基本上发生的事情是我的项目名称下出现一个错误 小红十字 就好像某个地方有错误一样 当我查看我的项目时 没有错误 当我运行我的代码时 没有错误 它工作得很好 有人可以向我解释一下如何修复它吗 这意味着什么 我正在使用 Eclipse Luna
  • Kubernetes - Pod 内的容器通信使用名称而不是“localhost”?

    来自 Kubernetesdocs http kubernetes io docs user guide pods Pod 中的应用程序都使用相同的网络命名空间 相同的 IP 和端口空间 因此可以 find 彼此并使用本地主机进行通信 是否
  • Google 登录 - 刷新时注销

    我进行了以下设置 service googleService q function q var self this this load function var deferred q defer gapi load auth2 functi
  • 选择给定点集中最远点的子集

    想象一下 你有一个 3 维 n 个点的集合 S 任意两点之间的距离是简单的欧几里得距离 您想要从该集合中选择 k 个点的子集 Q 以使它们彼此相距最远 换句话说 不存在 k 个点的其他子集 Q 使得 Q 中所有成对距离的最小值小于 Q 中的
  • 如何自动更新最大值?

    在串行代码中 更新最大值可以简单地通过以下方式完成 template
  • Winforms:SuspendLayout/ResumeLayout 还不够?

    我有一个包含一些 自定义控件 的库 本质上 我们有自己的按钮 圆角面板和一些带有一些自定义油漆的分组框 尽管 OnPaint 方法中存在 数学 但控件还是相当标准的 大多数时候 我们所做的只是绘制圆角并向背景添加渐变 我们使用 GDI 来实
  • ADO.NET 实体框架中的乐观并发

    I found MSDN 文章 http msdn microsoft com en us library bb738618 v vs 90 aspx描述了 EF 在保存更改时如何处理并发 默认情况下 对象服务保存对象 对数据库的更改没有