NHibernate Interceptor用于修改事务级别

时间:2010-12-31 00:23:31

标签: nhibernate interceptor system.data.sqlite isolation-level

尝试使用SQLite进行单元测试工作正常,但是测试一些存储库是有问题的,因为它们使用事务。

对于使用ReadCommitted的事务,一切都很好,但是其中一些使用ReadUncommitted,看看System.Data.SQLite不支持:

if ((this._defaultIsolation != IsolationLevel.Serializable) && (this._defaultIsolation != IsolationLevel.ReadCommitted))
{
        throw new NotSupportedException("Invalid Default IsolationLevel specified");
}

我想知道,是否有可能拦截Session.BeginTransaction(...)以便我可以更改事务级别,仅用于单元测试。

更新 我的解决方案是下载System.Data.SQLite的源代码并修改异常以设置默认的隔离级别。我在这里写了一篇博客:

http://www.philliphaydon.com/2011/01/system-data-sqlite-isolationlevel-exception/

1 个答案:

答案 0 :(得分:0)

除了实施ITransactionFactoryITransaction之外,没有简单的扩展点。

将调用包装到BeginTransaction可能更容易,以避免在测试时使用ReadUncommitted。