问题标签 [shareddbconnectionscope]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1140 浏览

subsonic - SubSonic2.2 SharedDbConnectionScope 和 TransactionScope 事务混淆

啊!!!

SharedDbConnectionScope 和 TransactionScope 对象似乎有点混淆,以便将您的 SubSonic 查询包装在事务中。

文档建议指定 using SharedDbConnectionScope 包裹在 using TransactionScope ...

然后这里的其他问题,例如Subsonic: Using SharedDbConnectionScope with TransactionScope 似乎被破坏了表明文档是错误的,这两个对象应该是相反的......

但是查看源代码我更加困惑。

在 SqlQuery.cs 代码文件中,它有许多 ExecuteTransaction 重载。例如...

嗯...有趣...匹配文档但是... ts.Complete() 调用在哪里?

那应该如何提交交易?据我所知,它总是会回滚。所有的 ExecuteTransaction 重载都是一样的!

但这里是真正的踢球者......

在 TransactionWithDtcOffTests.cs 代码中有一些很好的测试,除了它们设置了 SharedDbConnectionScope 和 TransactionScope 的另一种方式!

我还没有机会运行 SubSonic 2.2 的测试,但我认为有人有并且他们通过了..

最后...

有人可以给我关于如何设置 SubSonic2.2 中的事务的明确答案吗?文档真的错了吗?ExecuteTransaction 重载和测试的源是否与实际正确的方式保持一致?

0 投票
0 回答
349 浏览

c# - SubSonic 2.2 + SharedDbConnectionScope

我在 StackOverflow 上看到过帖子(第一第二)说 SubSonic 2.2 的 SharedDbConnectionScope 不适用于 TransactionScope。

我们还能在其他情况下依赖 SharedDbConnectionScope 吗?我想知道在使用以下代码时是否应该关注(其中 ProviderName 不是项目类型的默认提供程序):

在我的系统中,它看起来工作正常,但我想我可能让它在极少数情况下尝试保存到错误的数据库(可能不相关)。

谢谢!

0 投票
1 回答
285 浏览

caching - 亚音速、SharedDbConnectionScope 和 ApplicationState

我正在考虑将 Subsonic 与多租户 ASP.net Web 应用程序一起使用。有多个数据库(每个客户端/实例一个)。用户使用其用户名的域后缀登录(例如 user@tenant1、user@tenant2)。

然后,自定义成员资格提供程序将确定用户正在使用哪个数据库,并针对它进行身份验证。webapp 中所有用户发起的调用都将包含在 SharedDbConnectionScope 调用中,但是我有一个关于缓存亚音速项目的问题。

基本上每个实例都会有一些很少更改的记录(搜索选项/配置)。我想在 Application_Start 事件中读取这些内容,并将它们缓存到 ApplicationState 中。

在 Application_Start 事件中,它将遍历每个客户端数据库,使用 SharedDbConnectionScope 连接到每个 DB,并创建这些缓存记录(例如 Application('tenant1_search_obj') = subsonic_object

当用户加载搜索页面时,它会检查用户所在的域,然后从缓存中检索该搜索选项。

这可行吗?我只是担心如果我缓存一个对象,当我从应用程序缓存中检索它时,它不会知道它使用什么连接,并且可能会提取错误的数据。

如果可能的话,我想避免把它放在会话对象中。