实体框架数据库优先:时间戳列不起作用

2024-01-01

使用数据库优先方法,我希望每当我尝试更新一个(过时的)实体时,我的应用程序都会抛出并发异常,而数据库中的相应行已被另一个应用程序/用户/会话更新。

我在 .Net 4.5 上使用实体框架 5。相应的表有一个时间戳列来维护行版本。


我过去通过向您希望执行并发检查的表添加时间戳字段来完成此操作。 (在我的示例中,我添加了一个名为 ConcurrencyCheck 的列)

这里有两种并发模式,具体取决于您的需要:

1 并发模式:固定:

然后在模型中重新添加/刷新表。为了固定并发,确保将表导入模型时将并发模式设置为固定:如下所示:

然后捕获这个:

    try 

    { 

    context.SaveChanges(); 

    } 

    catch (OptimisticConcurrencyException ex) { 


////handle your exception here...

2.并发模式:无

如果您希望处理自己的并发检查,即引发通知用户的验证,甚至不允许进行保存,那么您可以将并发模式设置为“无”。

1.确保您更改了并发模式在您刚刚添加的新列的属性中"None".2. 要在您的代码中使用它,我将创建一个变量来存储您要检查保存的屏幕上的当前时间戳。

private byte[] CurrentRecordTimestamp 
        { 
            get 
            { 
                return (byte[])Session["currentRecordTimestamp"]; 
            } 

            set 
            { 
                Session["currentRecordTimestamp"] = value; 

            } 
        }

1.在页面加载时(假设您使用的是asp.net而不是上面没有提到的mvc/razor),或者当您使用您希望编辑的数据填充屏幕时,我会在编辑的ConcurrencyCheck值下提取当前记录到您创建的这个变量中。

 this.CurrentRecordTimestamp = currentAccount.ConcurrencyCheck;

然后,如果用户保持记录打开,而其他人同时更改它,然后他们也尝试保存,您可以将之前保存的时间戳值与现在的并发值进行比较。

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

实体框架数据库优先:时间戳列不起作用 的相关文章

  • Java 8:并行 FOR 循环

    我听说 Java 8 提供了很多关于并发计算的实用程序 因此我想知道并行给定 for 循环的最简单方法是什么 public static void main String args Set
  • 断点会停止所有线程吗?

    如果我的程序中有两个线程同时运行 并在其中一个线程上设置了断点 那么当遇到此断点时 另一个线程也会停止 还是会继续执行 我用 Java 编写并使用 NetBeans 断点可以选择它们的行为方式 挂起单个线程或所有线程
  • 将 Java 字符串转换为 sql.Timestamp

    收到以下格式的字符串 YYYY MM DD HH MM SS NNNNNN 时间戳来自 DB2 数据库 我需要将其解析为 java sql Timestamp 并且不丢失任何精度 到目前为止 我一直无法找到现有的代码来解析远至微秒的数据 S
  • 如何将存储过程结果映射到自定义类?

    我在用entity framework 5我已经添加了两个存储过程到我的 edmx model 第一个存储过程返回一个字符串 如果我在 Visual Studio 中打开模型浏览器 我可以更改Returns a Collection Of节
  • 将单独的月、日和年值转换为时间戳

    我有月份值 1 12 日期值 1 31 和年份值 2010 2011 2012 我还有一个小时值和一个分钟值 我怎样才能把这个给strtotime 它可以以某种方式将其转换为时间戳吗 当您已经知道年月和日期时 为什么将字符串转换为日期 us
  • Laravel - 停止并发访问记录

    在 Laravel 中 有什么方法可以停止同时与同一条记录交互 例如 如果用户 A 正在编辑一条记录 那么我同时需要阻止用户 B 编辑同一条记录 注意 我在 Laravel 5 2 中使用 SESSION DRIVER file 目前大约有
  • 为什么 EF 5.0 在编译为 sql 时不支持此 EF 4.x LINQ 语法?

    我有一些代码最近从 EF 4 2 升级到 EF 5 0 实际上是 EF 4 4 因为我在 Net 4 0 上运行 我发现我必须更改查询的语法 我很好奇为什么 让我从问题开始 我有一个由客户端定期填充的事件日志表 对于每个事件日志 都会在报告
  • ConcurrentHashMap 内部是如何工作的?

    我正在阅读有关 Java 并发性的 Oracle 官方文档 我想知道Collection由返回 public static
  • Hashmap并发问题

    我有一个哈希图 出于速度原因 我希望不需要锁定 假设我不介意过时的数据 同时更新它和访问它会导致任何问题吗 我的访问是获取 而不是迭代 删除是更新的一部分 是的 这会导致重大问题 一个例子是向散列映射添加值时可能发生的情况 这可能会导致表重
  • 使用连接池后如何处理过多的并发连接?

    Scenario 假设您有一个拥有大量流量的网站或应用程序 即使使用数据库连接池 性能也会受到真正的打击 站点 应用程序甚至可能崩溃 因为并发连接太多 Question 人们有什么选择来处理这个问题 我的想法 我在想有这个问题的人可以创建多
  • 在 Java EE 中手动启动新线程安全吗?

    对于在会话范围内的 JSF 托管 bean 中生成线程是否安全 我找不到明确的答案 线程需要调用无状态 EJB 实例 依赖注入到托管 bean 上的方法 背景是我们有一份需要很长时间才能生成的报告 由于我们无法更改服务器设置 这导致 HTT
  • 如何在oracle中将日期转换为时间戳(DD-MON-YYYY HH24:MI:SS.FF格式)?

    我尝试了下面的查询 但它不起作用 select TO TIMESTAMP ColumnName Data type Date DD MON YYYYHH24 MI SS FF from TableName where Changedate
  • 是否有一种更简单的方法可以并行运行命令,同时在 Windows PowerShell 中保持高效?

    此自我回答旨在为那些受困于 Windows PowerShell 并由于公司政策等原因而无法安装模块的用户提供一种简单且高效的并行替代方案 在 Windows PowerShell 中 built in可用的替代方案local并行调用是St
  • 什么是竞争条件?

    编写多线程应用程序时 最常见的问题之一是竞争条件 我向社区提出的问题是 竞赛条件是什么 你如何检测它们 你如何处理它们 最后 如何防止它们发生 当两个或多个线程可以访问共享数据并且它们试图同时更改它时 就会出现竞争条件 由于线程调度算法可以
  • 如何从纪元微秒或纳秒创建 Java Instant?

    我正在尝试标准化我的项目的时间戳格式 其中源以微秒精度报告 我试图找出是否有一种干净或最小的方法不需要使用手写常量 感谢您的建议 这是我能想到的最干净的 static Instant getInstantFromMicros long mi
  • 什么是“非阻塞”并发?它与普通并发有何不同?

    什么是 非阻塞 并发 它与使用线程的普通并发有何不同 为什么不在所有需要并发的场景中都使用非阻塞并发呢 使用非阻塞并发有开销吗 我听说Java中可以实现非阻塞并发 我们是否应该在特定场景下使用此功能 将这些方法之一与集合一起使用是否有区别或
  • cudaDeviceScheduleBlockingSync 和 cudaDeviceScheduleYield 之间有什么区别?

    正如这里所说 如何减少 CUDA 同步延迟 延迟 https stackoverflow com questions 11953722 how to reduce cuda synchronize latency delay 等待设备结果有
  • 在Windows cmd中获取精确到毫秒的系统时间

    我试图在 Windows cmd 中将系统时间精确 到毫秒 我知道可以使用以下方法获得厘秒精度 echo time 我发现其他问题提出了完全相同的问题 但没有答案可以完全回答该问题 这是我到目前为止发现的 该解决方案仅适用于厘秒精度 与我上
  • .NET 或 Windows 同步原语性能规范

    我目前正在写一篇科学文章 我需要非常准确地引用 有人可以向我指出 MSDN MSDN 文章 一些已发表的文章来源或一本书 我可以在其中找到 Windows 或 NET 同步原语的性能比较 我知道这些是按性能降序排列的 互锁 API 关键部分
  • Scala 中用于阻止调用的 Future

    The Akka文档说 you may be tempted to just wrap the blocking call inside a Future and work with that instead but this strate

随机推荐

  • 强制在子方法之前执行父方法,无需显式调用

    我正在开发一个 C 应用程序 但遇到了一个问题 我有一个从抽象类 A 派生的类 B 它具有一些事件处理方法 第三个类 C 派生自 B 并且必须重新实现 B 的一些方法 有没有一种方法可以在调用 C 的方法之前隐式调用 B 的方法 类图 cl
  • 要在 R 中列出的文本文件

    我有一个很大的文本文件 每行都有可变数量的字段 每行中的第一个条目对应于一个生物途径 每个后续条目对应于该途径中的一个基因 前几行可能看起来像这样 path1 gene1 gene2 path2 gene3 gene4 gene5 gene
  • O(n) 算法查找 n² 隐式数字的中位数

    问题 输入是一个 不一定是排序的 序列 S k1 k2 kn 由 n 个任意数字组成 考虑 min ki kj 形式的 n 个数的集合 C 其中 1 O n 时间和O n 空间算法求 C 的中位数 到目前为止 我通过检查 C 的不同集合 S
  • 如何正确对齐跨度和输入元素?

    我想对齐一个 span 元素和 span
  • 使用 WPF 的 ShowDialog 打开表单时出现异常

    我有一个 WPF 应用程序 当尝试使用以下命令打开表单时ShowDialog 我在一台机器上遇到了下面这个奇怪的异常 知道可能是什么问题吗 异常消息 操作已中止 HRESULT 异常 0x80004004 E ABORT 异常堆栈跟踪 在
  • 如何在不编写自己的程序的情况下将某些文件上传到 Azure Blob 存储?

    我创建了一个 Azure 存储帐户 我有一个 400 MB 的 zip 文件 我想将其放入 Blob 存储中以供以后使用 我怎样才能在不编写代码的情况下做到这一点 有一些接口吗 免费工具 Visual Studio 2010 安装Azure
  • 使用命名空间时找不到 SimpleXMLElement

    我正在尝试在 Wordpress 中创建一个小部件 但在创建 SimpleXMLElement 对象时遇到了问题 这是代码 namespace GenieKnows Search class GenieKnows Search Widget
  • 诊断无法停止的应用程序

    我们的Windows应用程序经常挂在内存中 我正在尝试使用windbg来跟踪 下问题 我对 Windbg 很陌生 需要一些建议 我 已经开始阅读高级 Windows 调试 该应用程序是用 VB 编写的 C 和 COM 对象的混合体 偶尔当
  • iOS 部署目标设置为 iOS 4.2。该应用程序可以在运行早期版本 iOS 的设备上运行吗?

    如果应用程序在 Xcode 中编译 其 iOS 部署目标设置为 iOS 4 2 它是否可以在运行早期版本 iOS 的设备上运行 该应用程序不具有 iOS 4 独有的功能 我全新安装了 Snow Leopard 和 XCode 3 2 5 并
  • 如何从 html 页面调用 javascript 模块 (type=module) 中声明的函数

    我正在努力使用 javascript 模块 我有一个 html 文件和一个 JS 模块 我在 javascript 文件中定义了一个函数 我想从我的 HTML 页面调用该函数 这是我的代码 索引 html
  • 使用 Reactor 的非阻塞 ReentrantLock

    我需要限制同时处理同一资源的客户端数量所以我尝试实现模拟 lock lock try do work finally lock unlock 但以非阻塞方式使用 Reactor 库 我有这样的东西 但我有一个问题 有一个更好的方法吗或者也许
  • Groovy:将 XML 元素从一个文档复制到另一个文档

    我是 Groovy 新手 遇到了一个简单的问题 我想做的就是从一个 XML 文件中提取某些元素并用它创建一个新文件 这是一个示例 XML 让我们使用 Maven pom 文件
  • 在子数组之间移动行

    我有许多子数组 比如 2 个 为了简单起见 每个子数组具有相同的行数和列数 子数组中的每个位置都由 1 10 中的数字占据 我想做的是根据某种移动速率 m 0 1 在子数组之间随机移动行 m 0 对应于不移动 而 m 1 表示所有子数组中的
  • 初始化的只读字段为空,为什么?

    谁能解释一下为什么private readonly Int32 array new 8 7 5 can be null 在这个例子中 它有效 并且 array总是不是null 但在我的公司代码中我有类似的代码并且 array总是null 所
  • 来自命令行的 Behat“base_url”

    我想知道是否可以通过命令行设置base url 例子 bin behat base url http google fr 为了灵活性 我想避免创建新的配置文件并在每次必须测试新的 url 时通过命令行传递它 这里有什么技巧可以做到这一点吗
  • 使用 Spring MVC 的 Twitter Bootstrap

    我想将 Twitter Bootstrap 与现有的 Spring MVC 项目集成 搜索返回抽象结果 没有概述如何将以 UI 为中心的 Bootstrap 与 Spring MVC 集成的教程或文章 集成框架所涉及的配置步骤是什么 Tha
  • scala zip 列表到元组

    使用 JodaTime 尝试将 List LocalDate 转换为 Tuple2 JodaTime JodaTime 这样我就可以像这样进行多重分配 val expire now List row expireDate new JodaD
  • 在批处理文件中,组合两个字符串以创建组合路径字符串

    我需要获取两个字符串并将它们组合成批处理文件中的单个路径字符串 类似于 NET 中的 Path Combine 方法 例如 无论字符串是 C trunk 和 ProjectName Project txt 还是 C trunk 和 Proj
  • 页面加载时未使用哪些 javascript 文件

    是否可以找出网页上未使用的 javascript 文件 而无需添加控制台日志或调试或删除它们以查看是否出现问题 我正在寻找一个工具 或者命令行脚本或firefox插件等 例如 假设我将这些包含在标题中 在页面
  • 实体框架数据库优先:时间戳列不起作用

    使用数据库优先方法 我希望每当我尝试更新一个 过时的 实体时 我的应用程序都会抛出并发异常 而数据库中的相应行已被另一个应用程序 用户 会话更新 我在 Net 4 5 上使用实体框架 5 相应的表有一个时间戳列来维护行版本 我过去通过向您希