问题标签 [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.
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 重载和测试的源是否与实际正确的方式保持一致?
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
当用户加载搜索页面时,它会检查用户所在的域,然后从缓存中检索该搜索选项。
这可行吗?我只是担心如果我缓存一个对象,当我从应用程序缓存中检索它时,它不会知道它使用什么连接,并且可能会提取错误的数据。
如果可能的话,我想避免把它放在会话对象中。