首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存中的NEventStore和Sqlite

内存中的NEventStore和Sqlite
EN

Stack Overflow用户
提问于 2011-10-22 03:39:21
回答 1查看 1K关注 0票数 3

我正在尝试使用JSON序列化和在内存模式下运行的Sqlite对EventStore持久性进行单元测试。在EventStore初始化期间,我得到了一个“没有这样的表:提交”异常。我猜想这是因为EventStore以某种方式关闭了连接并打开了一个新的连接,导致它看到一个新的内存中的Sqlite实例(sans提交表)。有没有办法让这件事起作用呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-28 19:42:38

SQLite实现很有趣,特别是当您使用":memory:“连接字符串时。围绕实现的验收测试取决于数据库在操作之间不会“消失”。

EventStore的基本设计将每个离散的操作分离为单独的操作,该操作:

根据配置,在环境连接(如果有)中登记连接打开connection

  • Builds IDbCommand

  • Executes IDbCommand

  • Evaluates results

  • Disposes

  • (将其释放回pool)

  • Completes

  • (当没有任何异常发生时) TransactionScope

您遇到的问题是,对EventStore的每次调用都会打开和关闭连接。

现在,有一种方法可以绕过这个问题,因为我希望支持显式地使用相同的IDbConnection,而无需将其释放回池。EventStore v3.0 (处于发布候选阶段)有一个方法调用,该方法调用使用相同的连接,并避免在每次操作后断开连接:

代码语言:javascript
复制
ConfigurationConnectionFactory.OpenScope("SQLite"); // SQLite = app.config connection key

只需将此代码添加到"using_the_persistence_engine“验收测试类中,即可完成所有工作:

代码语言:javascript
复制
private static IDisposable scope;

将此作为第一行添加到"Establish context“中:

代码语言:javascript
复制
scope = ConfigurationConnectionFactory.OpenScope("SQLite");

最后,"Cleanup everything“中的最后一句应该是:

代码语言:javascript
复制
scope.Dispose();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7854446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档