1

我正在为我的测试项目使用 sqllite db。

当我在事务中使用 IsolationLevel 时,一切运行完美

using (ITransaction transaction = session.BeginTransaction(IsolationLevel.ReadCommitted))

但我不想IsolationLevel.ReadCommitted在我的交易中硬编码我想放在我的连接字符串中,我试过这个

<add name="ConnectionString" connectionString="Data Source=...;ISOLATION LEVEL=IsolationLevel.ReadCommitted"/>

但错误仍然与消息"The database is locked !"

4

2 回答 2

2

没有用于此的连接字符串选项(请参阅MSDN)。在事务中指定 if (根据您的第一个示例),或SET TRANSACTION ISOLATION LEVEL在打开连接后发出语句。作为一个侧面观察:请注意,对于从池中重用的连接,隔离级别不会重置;这让我发疯......所以你可能想明确地设置隔离级别,以确保它是你所期望的,而不仅仅是底层连接使用的最后一个命令(即使是新的SqlConnection)正在使用的。

于 2012-08-20T08:36:24.443 回答
0

为什么不加

<add key="hibernate.connection.isolation" value="ReadCommitted" />

在你的休眠配置部分?

于 2012-08-21T19:20:39.440 回答