我们有几个依赖于交易的测试。我们现在正试图从RavenDB 2.5迁移到3.0,并且这样做所有使用事务的测试都开始失败。我们使用NUnit作为我们的测试框架。
我写了一个我们得到的错误的小例子:
[TestFixture]
public class TransactionTest : RavenTestBase
{
[Test]
public void TransactionTest1()
{
using (var store = NewDocumentStore(configureStore: ConfigureTestStore))
{
using (var transaction = new TransactionScope())
{
using (var session = store.OpenSession())
{
session.Store(new SampleData { Id = "RavenDB" });
session.SaveChanges();
transaction.Complete();
}
}
}
}
public void ConfigureTestStore(EmbeddableDocumentStore documentStore)
{
documentStore.RunInMemory = true;
documentStore.Configuration.RunInUnreliableYetFastModeThatIsNotSuitableForProduction = true;
documentStore.EnlistInDistributedTransactions = true;
}
}
public class SampleData
{
public string Id { get; set; }
}
这导致例外:
System.InvalidOperationException : The database <system> cannot be used with distributed transactions
我可以设置:
documentStore.EnlistInDistributedTransactions = false;
但是,我的交易都没有实际运作。上面的测试在RavenDB 2.5中运行良好。是不是也不应该在RavenDB 3中工作?
旧版本:2.5.2874 新版本:3.0.3690
答案 0 :(得分:0)
我也在https://groups.google.com/forum/?hl=sv#!topic/ravendb/2fHg48KkuZM
中发布了这个问题艾恩德回答说。解决方案是使用esent来运行测试而不是voron。
我添加了这个设置:
documentStore.Configuration.DefaultStorageTypeName = "esent";