如何在RavenDB中跨多个数据库维护IDocumentSession作用域? 我的第一个想法是考虑一些工作模式,但是我所做的事情很小,很轻,我想避免过度设计我的解决方案。

如何在RavenDB中跨多个数据库维护IDocumentSession作用域? 我的第一个想法是考虑一些工作模式,但是我所做的事情很小,很轻,我想避免过度设计我的解决方案。,ravendb,Ravendb,我希望在多个RavenDB数据库中有一个事务作用域。。差不多 类WidgetFacade { void SaveData(小部件、用户) { IDocumentStore documentStore=新的documentStore{Url=”http://server:8080/" }; IDocumentSession=documentStore.OpenSession(“数据库1”); 会话存储(用户); session=documentStore.OpenSession(“数据库2”);

我希望在多个RavenDB数据库中有一个事务作用域。。差不多

类WidgetFacade { void SaveData(小部件、用户) { IDocumentStore documentStore=新的documentStore{Url=”http://server:8080/" }; IDocumentSession=documentStore.OpenSession(“数据库1”); 会话存储(用户); session=documentStore.OpenSession(“数据库2”); 会话存储(widget); session.Savechanges(); session.Dispose(); } }
你不能。会话设计为在单个数据库上运行

但是,您可以让两个会话参与同一事务

var documentStore=newdocumentstore{Url=”http://server:8080/" };
使用(var ts=new TransactionScope())
{
使用(var session=documentStore.OpenSession(“database1”))
{
会话存储(用户);
session.SaveChanges();
}
使用(var session=documentStore.OpenSession(“database2”))
{
会话存储(widget);
session.SaveChanges();
}
ts.完成();
}
如果第二个操作因任何原因失败,第一个操作也将回滚—即使您已保存更改并完成会话