在 SQL Server 数据库中自动添加对象及其关系

2024-02-19

假设我想插入一个新的Experiment在我的 SQL Server 数据库中,使用实体框架 4.0:

  • Experiment有 1..*Tasks in it
  • Both Experiment and Task从获得EntityObject
  • 此外,还有一个数据库约束,即每个Task必须有一个“父母”Experiment链接到它

插入必须是原子的。我所说的原子性是指数据库的读者永远无法读取Experiment未完全写入数据库,例如Experiment没有Task.

到目前为止我尝试过的所有解决方案都存在这样的问题:即使只持续几秒钟,也可以读取一些不完整的实验;即实验最终会快速但不是原子地填充其任务。

进一步来说,

  • 我的 reader.exe 读入while(true)循环所有实验并转储没有任务的实验。
  • 同时我的writer.exe编写约 1000 个实验,一项一项地完成一项任务,并将它们保存到数据库中。

我找不到写我的方法ReadAllExperiments and WriteOneExperiment功能使我永远不会阅读不完整的实验。

我该怎么做呢?

PS:

我是数据库新手;我尝试了写入时具有可序列化隔离级别的事务、使用 UPDLOCK 进行读取的手动 SQL 请求等,但没有成功解决这个问题,所以我陷入了困境。

我认为相当基本且简单的需求可能会揭示出不适定问题?

问题在这里进行了单元测试:实体框架代码优先:SaveChanges 不是原子的 https://stackoverflow.com/questions/16693609/entity-framework-code-first-savechanges-is-not-atomic


在假设你是之后,以下内容实际上应该执行你的操作not使用 READ UNCOMMITTED 或类似隔离级别进行读取

using(var ctx = new MyContext())
{
    var task = new Task{};
    ctx.Tasks.Add(task);
    ctx.Experiment.Add(new Experiment{ Task = task });
    ctx.SaveChanges();
}

如果您在这种情况下使用 READ UNCOMMITTED 或类似的任务,任务将在添加实验之前显示,我认为在给定您所描述的约束的情况下,不应该存在实验可以在任务之前存在的状态。

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

在 SQL Server 数据库中自动添加对象及其关系 的相关文章

随机推荐

  • 使用 jquery 延迟对象链接多个 ajax 调用

    在寻找类似于此处描述的解决方案时 如何使用 jquery 链接 ajax 调用 https stackoverflow com questions 8612894 how to chain ajax calls using jquery l
  • 覆盖CSS属性全部:未设置

    对于我正在开发的 CSS 框架 我正在使用all unset 它本身工作得很好 foo all unset 但是 在某些情况下 我想 撤消 此规则的效果 如 foo hover all auto 然而 这显然行不通 因为没有值auto fo
  • Git 工作流程最佳实践

    愚蠢的问题 把我当作版本控制的完全新手 我是 Git 新手 我以前使用过 subversion 但只是基础知识 我了解 Git 及其分支命令的基础知识 我有一个想象的情况需要您的建议 假设我的软件当前版本是 v1 2 稳定且已发布 My S
  • 在 Visual Studio Code 中运行 python 脚本;如何让“input()”工作?

    我试图抓住一个简单的input using input 但是当我在其中运行脚本时视觉代码每当该行代码被执行时 程序就会挂起 我如何在其中运行代码视觉工作室代码并使用input task version 0 1 0 command pytho
  • 键入时禁用 Visual Studio Code 中的 linting

    前提 当我使用 Visual Studio Code 时 我希望在保存时进行 linting 并且我喜欢智能感知 尽管如此 我对 linting 感到非常恼火 又名错误和警告消息 形式为 ts jshint 这里你缺少一个分号 当我打字的时
  • EF 4.1 Code First 的复合密钥

    我试图弄清楚如何使用 EF code First 4 1 RC 拥有复合密钥 目前 我正在使用 Key 数据注释 但我无法指定多个键 如何指定复合键 这是我的例子 public class ActivityType Key public i
  • java.util.Scanner 读取剩余内容

    Using a java util Scanner例如 它是否可以返回所有剩余内容 我的情况是 一旦我阅读了一个中的多个字段String 我只想得到剩下的东西并将其存储在其他地方 例如我的内容可能包括 1 2 Some Garbage wi
  • Intellij IDEA 正则表达式字符类不能在字符范围内使用

    IDEA 不允许出现此错误 并且我无法找到关闭此类错误的选项 有谁知道如何修复错误或关闭警告 javascript 工作正常 只有 IDEA 认为这是一个问题 您正在使用以下命令创建一个范围连字符 在你的角色课程中 您应该将其移至任一端 另
  • 无符号 32 位整数的水平最小值和 SSE 中的位置

    我正在寻找一种方法来查找无符号 32 位整数的最小值及其在 SSE 中的位置 类似于 mm minpos epu16 我知道我可以通过一系列 mm min epu32 和洗牌 移位找到最小值 但这并不能让我找到位置 有人有任何很酷的方法吗
  • 使 SKScene 的背景透明不起作用...这是一个错误吗?

    有没有一种方法可以使 SKScene 的背景透明 并通过透明度将该场景呈现在另一个场景上 这个想法是让所呈现的场景的背景像这样 self backgroundColor SKColor colorWithRed 0 0f green 0 0
  • 将 HTML 表格粘贴到 Excel 中,如何在单元格中保留换行符

    我有一个简单的html表格 例如 只有一个单元格 但是当我复制dom节点并将其粘贴到excel中时 它将被识别为两行 如何使Excel获取正确的粘贴数据 table tr td 1 br 2 td tr tr tr table 我尝试添加c
  • Angular2 ngFor 跳过第一个索引[重复]

    这个问题在这里已经有答案了 如何跳过数组中的第一个索引 li user name is user age years old li 你可以使用片管 https angular io docs ts latest api common ind
  • 从 TableView 中的可编辑列动态填充 ChoiceBox

    基本上问题标题说明了一切 我有一列字符串 称为type 在表格视图和相应的数字列 称为size 每行代表一个对象CargoItem 它有两个属性type and size 两列都是可编辑的 TableView 与相应的可观察列表相关联Car
  • CFNetwork SSLHandshake 失败 iOS 9

    有使用 iOS 9 beta 1 的人遇到过这个问题吗 我使用标准 NSURLConnection 连接到 Web 服务 一旦调用 Web 服务 我就会收到以下错误 目前该功能适用 于 iOS 8 3 可能的测试版错误吗 任何想法或想法都会
  • 如何在 SonataAdmin 中创建自定义 DataGrid 过滤器

    我有一个带有许多状态代码的实体交易 我希望用户能够在 SonataAdmin 中将这些状态代码视为字符串 用户还应该能够根据这些状态代码进行过滤 Entity Transaction const TRANSACTION STATUS WAI
  • 有什么方法可以在 Phoenix 中定义自定义路线吗?

    假设我想创建一个resources通过添加一些自定义操作 rails 中的类似物是 resources tasks do member do get implement end end 这不仅会返回 7 条标准路线 还会返回 1 条新路线
  • 为什么我的本地通知在 iOS 10 中没有在前台触发?

    我试图理解为什么本地通知没有显示在前台 我相信我添加了所有正确的代码来允许此功能 但当我的应用程序位于前台时没有显示横幅 这是我添加的内容AppDelegate swift import UserNotifications UIApplic
  • 适用于 Android 的类似 iPhone 的导航点

    我必须创建一个像 iPhone 画廊一样带有导航点的图片库 查看屏幕截图 我需要这样一个小部件 看一下白点 Android 中是否有包含导航点的小部件 如果没有 我怎样才能重现这种效果 经过漫长的日子我发现从 Github 源查看寻呼机导航
  • 如何仅使用标准库将 UTC 日期时间转换为本地日期时间?

    我有一条蟒蛇datetime使用创建的实例datetime utcnow 并保存在数据库中 为了显示 我想转换datetime从数据库检索实例到本地datetime使用默认的本地时区 即 就好像datetime是使用创建的datetime
  • 在 SQL Server 数据库中自动添加对象及其关系

    假设我想插入一个新的Experiment在我的 SQL Server 数据库中 使用实体框架 4 0 Experiment有 1 Tasks in it Both Experiment and Task从获得EntityObject 此外