我在我的测试项目中使用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 !"
答案 0 :(得分:2)
此处没有连接字符串选项(请参阅MSDN)。在事务中指定if(根据您的第一个示例),或在打开连接后发出SET TRANSACTION ISOLATION LEVEL
语句。作为侧面观察:请注意,对于从池中重复使用的连接,隔离级别不会重置;这让我发疯了...所以你可能想要明确地设置隔离级别,以确保它符合你的预期,而不仅仅是底层连接使用的最后一个命令(即使对于一个新的SqlConnection
)正在使用。
答案 1 :(得分:0)
为什么不添加
<add key="hibernate.connection.isolation" value="ReadCommitted" />
在你的nhibernate配置部分中?