MongoDB 交易

2024-03-04

我在 C# 中有如下方法:

private void Save(object)
{
   mongoCollection.Save(object);
   someotherRelationaldb.Save(object);
}

我有两个数据库,我必须在其中保存一个对象。一种是 MongoDB,另一种是关系数据库 SQL 服务器。如果关系数据库上的提交失败,我想回滚MongoDB保存(我想保持保​​存的顺序)。使用 C# 驱动程序回滚的正确方法是什么?


你不能。
做到这一点的唯一方法是包装someotherRelationaldb.Save(object);在 try catch 中,并在 catch 中执行mongoCollection.Remove

您可能需要一个已知的标识符属性object然后可以做类似的事情:

mongoCollection.Remove(Query.EQ("_id", object.Id));

因此,您的 Save 方法看起来有点像:

private void Save(object)
{
   mongoCollection.Save(object);

   try
   {
      someotherRelationaldb.Save(object);
   }
   catch
   {
      mongoCollection.Remove(Query.EQ("_id", object.Id));
   }
}

另一种方法是将标志属性存储在object已更新after成功写入someOtherRelationaldb

这也不完全理想,但您可以修改查询以仅返回文档,其中IsPersisted标志是真的。

尽管我不这么认为,但这些方法在严重分片的环境中都不会发挥良好作用。

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

MongoDB 交易 的相关文章

  • 是否有可能劫持标准输出

    我正在尝试使用 C 重定向 Windows XP 上已运行进程的标准输出 我知道如果我自己生成进程 我可以做到这一点 但对于这个应用程序 我更喜欢一个 监听器 我可以附加到另一个进程 这在纯 Net 中可能吗 如果不可能 在 Win32 中
  • 深拷贝和动态转换 unique_ptr

    假设我有一个如下所示的类 class A virtual A class B public A class C public A 我还有一个 unique ptr 向量 它是这样声明的 std vector
  • 将字符串作为 PChar 从 CSharp 传递到 Delphi DLL

    我正在尝试将字符串从 C 传递到 Delphi 构建的 DLL Delphi DLL 需要 PChar 这是Delphi导出 procedure DLL Message Location PChar AIntValue integer st
  • 平滑手绘曲线

    我有一个允许用户绘制曲线的程序 但这些曲线看起来不太好 它们看起来摇摇欲坠 而且是手绘的 所以我想要一种能够自动平滑它们的算法 我知道平滑过程中存在固有的模糊性 因此它不会每次都完美 但这种算法似乎确实存在于多个绘图包中 并且它们工作得很好
  • 最新 .Net MongoDb.Driver 的连接问题

    我创建了一个 MongoLab 沙箱数据库 我与 MongoChef 连接 效果很好 我通过 Nuget 安装了 MongoDB Driver 2 2 2 我编写了一些简单的 C 演示代码 但就是无法使其工作 连接字符串是直接从 Mongo
  • 在没有 epsilon 的情况下可以将浮点数与 0.0 进行比较吗?

    我知道 要比较两个浮点值 需要使用一些 epsilon 精度 因为它们并不精确 但是 我想知道是否存在边缘情况 我不需要那个 epsilon 特别是 我想知道这样做是否总是安全的 double foo double x if x lt 0
  • C# 无法捕获 SerializationException

    我的程序在加载序列化文件的部分遇到问题 如果文件无法反序列化 我希望很好地失败 但由于某种原因 我的程序将中断而不是进入 catch 子句 这是我的代码 using FileStream fs new FileStream openFile
  • Linq 合并列表

    我的课 public class Foo public int A get set public List
  • 在Spring-Boot中,我们如何在同一个项目中连接两个数据库(Mysql数据库和MongoDB)?

    我正在尝试创建一个 Spring Boot 项目 其中我有一个要求 我想连接到不同的数据库 MySql 和 MongoDB 我是否需要做一些特殊的事情来连接到这两个数据库 或者 spring boot 会自动计算出自己连接到这两个数据库 我
  • 更改 Xamarin.Forms 应用中顶部栏和底部栏(ControlsBar、StatusBar)的颜色

    无论如何 即使后面需要特定于平台的代码 也可以更改顶部栏 蓝色的 和底部栏 黑色的 的颜色吗 我希望添加对浅色和深色模式的支持 因此我希望能够在运行时更改它 有可能的 Android Using Window SetStatusBarCol
  • 如何构建一棵与或树?

    我需要一个支持 与 和 或 的树结构 例如 给定一个正则表达式 如ab c d e 我想把它变成一棵树 所以 一开始我们有两个 或 分支 它可以向下ab or c d e 如果你低头ab分支 你得到两个节点 a and b or a其次是b
  • Type.GetInterfaces() 仅适用于声明的接口

    首先 像这样的问题有很多 也许有些OP甚至在问同样的问题 问题是这些问题的答案 无论是否接受 都没有真正回答这个问题 至少我找不到 如何确定类直接声明的接口 而不是由父级或声明的接口继承的接口 e g interface I interfa
  • C++ 中是否有与 PHP 的explode() 函数等效的函数? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 中分割字符串 https stackoverflow com questions 236129 splitting a string in c 在 PHP 中 explode 函数将获取一个字
  • 如何检测应用程序正在运行的 .NET 版本?

    我尝试使用Environment Version ToString 确定目标计算机上正在使用什么 NET 框架 但安装了 4 0 版本时 它说我正在使用 NET 2 0 如何检测目标计算机上正在运行的 NET Framework 版本 En
  • GET Ajax 在响应中返回 html 代码而不是 json 对象

    我有一个 ajax get 请求 如下所示 我正在使用 Nodejs Express 向 openshift 中的 server js 发出 GET 请求 但是 我在响应方法中获取 html 内容而不是 json 对象 这两个请求都是针对同
  • “1个未解决的外部”C++

    我已经检查了所有文件之间的连接以及类和函数定义 但每次我尝试运行我的程序时 它都会阻止我并告诉我它有 1 个未解析的外部 该程序应该打开多个文件 一个 学生 文件和一个 成绩 文件 从中读取数据 然后使用 查询文件 来查找数据 找到查询中要
  • Xcode 7 调试器不会中断内联标头函数

    过去五年我一直在各种 C 项目中使用 Xcode 没有出现这个问题 今天 我打开了一个较旧的项目 大约 2 年前 并尝试通过在该函数中放置一个活动断点来调试头文件中的内联函数 由于某种原因 调试器不会中断此代码 但是 如果我在调用该函数的
  • 卸载程序

    我正在尝试使用此代码卸载程序 但它似乎不起作用 我尝试过其他答案 但似乎也不起作用 有人可以帮助我吗 我正在尝试按给定名称 displayName 卸载该程序 例如 我给出 displayName Appname 那么此代码应该从我的计算机
  • 当我的进程被终止时到底会发生什么?

    我有一个包含本机代码和托管代码的混合进程 在 Windows Server 2003 上运行 当我从进程资源管理器中终止进程时 它会进入 100 cpu 的状态 并在消失之前保持这种状态一段时间 有时甚至 10 分钟 在此期间我无法 杀死
  • 为什么在构造函数中设置字段是(或不是)线程安全的?

    假设您有一个像这样的简单类 class MyClass private readonly int a private int b public MyClass int a int b this a a this b b public int

随机推荐

  • 存根 [[SomeClazz alloc] init] 不起作用,但接受的答案说它应该起作用

    我测试的功能非常简单 implementation MyHandler void processData DataService service DataService alloc init NSDictionary data servic
  • Flutter 应用程序名称可以国际化吗?

    刚接触 flutter 有没有办法将我的应用程序名称国际化 我发现其他应用程序也可以做到这一点 我能够按照此处的指南将应用程序中的字符串国际化 https phrase com blog posts flutter localization
  • 来自 JS 和 HTML 导入的相对路径资源

    我有一个 聚合物 Web 组件 我希望人们能够以跨源资源共享 CORS 方式访问该组件 这工作得很好 只是我不确定如何为该组件内的 JS 代码中的图像和 JSON 文件等资源提供相对路径 它们被解释为相对于包含页面 而不是相对于 HTML
  • 仅当调整窗口大小时,图层支持的 OpenGLView 才会重绘

    我有一个带有类型主视图的窗口NSView和一个子视图 它是NSOpenGLView谁的名字是CustomOpenGLView 的子类NSOpenGLView是通过一个获得Custom View在 Interface Builder 中并将其
  • Mongodb聚合5分钟

    我有 IoT 传感器 它们每秒发送事件 并将事件存储在 MongoDB 中 格式如下 id stp 23 HP 1261 0 1357 0 1337 0 1250 0 1269 0 1134 0 1219 0 1269 0 1166 0 1
  • 架构独立的实体框架代码优先迁移

    我在使用针对 Oracle 数据库的实体框架迁移时遇到了麻烦 因为架构名称包含在迁移代码中 并且对于 Oracle 架构名称也是用户名 我的目标是拥有独立于模式的 Code First 迁移 能够拥有一组用于测试和生产环境的迁移 我已经尝试
  • Chartjs 条形图悬停时显示旧数据

    我有一个使用 Chart js 创建的条形图 页面加载时一切正常 但是当我使用日期范围选择器更改时间范围时 会出现故障 新数据已引入 但当我将鼠标悬停在其上时 会显示旧数据 我是 javascript 新手 所以我希望得到一些帮助 看起来我
  • 如何在不将可执行文件重命名为 iexplore.exe 的情况下获得 WebBrowser 控件的最大性能?

    我正在编写一个本机应用程序 它在嵌入式中执行大量 CSS3 动画网页浏览器控件 http msdn microsoft com en us library aa752040 28v vs 85 29 aspx 但动画在独立版 IE10 中更
  • 如何在使用变量之前测试变量是否已经初始化?

    因此 假设您有一个带有变量的应用程序 当您独立加载它时 即当您使用if name main 此外 当客户端导入应用程序以在另一个应用程序中使用时 将调用一个方法 该方法还将实例化该变量 我想做的是在定义变量之前测试变量是否已经被实例化 这样
  • Git 因致命错误而失败,拒绝使用 Git 推送合并不相关的历史记录

    我在本地做了一些更改 我正在尝试将其推送到 GitHub 我读过我可以使用 allow unrelated histories 但我只看到了演示如何执行此操作的示例pull 这不是我需要的 我需要使我的本地目录成为master 我尝试了以下
  • Android 上的 HttpURLConnection 失败

    已解决 请参阅下面的评论 我有一个实现分段文件上传的类 该代码适用于我尝试过的每个 Java 客户端 Android 除外 并且它是我的 Android 应用程序中唯一不能与我的后端服务很好地配合的 HTTP 请求代码 连接响应代码是 1
  • 调试无法与 Android Studio 一起使用的 C++/本机库模块(使用 Cmake)

    我在调试库模块的 C 文件时遇到问题 这在一般情况下可能吗 如果应用程序项目包含 C 代码 则调试工作正常 但我想将 C 代码移至库模块 启动会话时出现错误消息 现在启动本机调试会话 注意力 未找到符号目录 请检查您的本机调试配置 我的 l
  • 不同功能的样本数量不同

    plot x 3 x 2 5 x 12 是否可以设置x 3只有 2 个样本并且x 2 5 x 12比如说同一个图中有 1000 个样本 这是可以做到的 但不是开箱即用的 第一个变体使用临时文件来保存一个低采样率的函数 并稍后将其与高分辨率函
  • Android Studio - 未找到 SDK - 设置向导失败 - 防火墙代理

    言归正传 我处于公司防火墙后面 我必须手动下载 Android Studio 的 zip 文件 并将其提取到我的计算机上的程序文件 Windows 10 中 当我启动工作室时 我的对话工作室需要检索 SDK 我尝试这样做 但在这 3 个 z
  • 如何在 iOS 上制作爆炸动画?

    我有一款 iOS 游戏 当球击中目标时就会爆炸 动画爆炸的最佳方式是什么 如果您正在寻找简单的东西 制作一系列动画爆炸的图像 将它们添加到 UIImageView 并启动动画 像这样的事情 UIImage image0 UIImage im
  • SoapUI:如何将指纹作为 SecurityTokenReference 添加到 wss SIGNATURE 条目

    我有一个关于soapUI的问题 我正在尝试将 ws security 标头添加到包含签名的肥皂请求中 为此 我在项目首选项中使用了soapUI 对话框 WS Security Configurations 它按预期工作 但我的服务器应用程序
  • 如何验证 AWS SigV4 签名

    我有一个服务器将接收带有 SigV4 授权标头的请求 并且基于 SigV4 的验证 我将授予数据访问权限 我们如何验证SigV4 我一直在尝试获取用于验证 SigV4 的文档 但无法获取它 有什么办法可以反编译签名并检查身份验证然后授权吗
  • 使用 PHP 正则表达式从字符串中删除换行符

    如何使用 PHP 从字符串中删除换行符 string str replace PHP EOL string or string str replace array n r string
  • 通过 PostMessage 发送/接收字符串

    尽管网上已经有一些资源可以解决这个粗略的主题 但我仍然没有找到适合我的答案 我希望我的同事之间能有充分的沟通VB net过程和我的C 过程 我希望能够发送一个字符串到and来自C 过程 但目前我需要实现 Sending一个字符串到C 处理并
  • MongoDB 交易

    我在 C 中有如下方法 private void Save object mongoCollection Save object someotherRelationaldb Save object 我有两个数据库 我必须在其中保存一个对象