NHibernate SQLite on Mono并发问题:数据库文件被锁定

发布于 2024-09-14 06:42:02 字数 316 浏览 3 评论 0原文

我有一个应用程序,正在从 MSSQL 和 .NET 移植到 SQLite 和 Mono。我正在使用 NHibernate、FluentNHibernate、NHibernateLINQ 和 SQLite。

当我测试只有一个人连接的应用程序时,一切正常,但当其他人开始使用该应用程序时,它就会中断并抛出 SQLite 异常,提示“数据库文件已锁定”。

我知道 SQLite 在写入时会锁定数据库并返回繁忙状态,我猜也许我没有正确配置 NHibernate 来处理这个问题,但到目前为止我在网上找不到任何有帮助的信息。好像我是唯一有这个问题的人。我是吗?有什么想法吗?

谢谢

I have an application I'm porting from MSSQL and .NET to SQLite and Mono. I'm using NHibernate, FluentNHibernate, NHibernateLINQ and SQLite.

When I test the application with only one person connected everything works OK, but the moment somebody else starts using the app it breaks and throws an SQLite Exception saying "Database File is Locked".

I know that SQLite locks the database when a write is being made and returns a busy status, I'm guessing maybe I haven't configured NHibernate correctly to handle this, but I can't find any information online that has helped so far. It's like I'm the only person with this problem. Am I ? Any ideas ?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

二智少女 2024-09-21 06:42:02

我怀疑你的问题不是 FNH 本身。

我在我的 FNH / SQLite 项目(.NET,而不是 Mono)中遇到了类似的问题。在我出于其他原因重构一些会话管理代码后,它神秘地自行修复了。 (主要的更改是对所有数据库访问使用事务,并确保所有事务和会话对象都得到正确处置)。

此链接讨论了由缺少 Dispose 引起的类似问题。我怀疑这可能是我的问题,但不确定。 (祈祷问题不会再次出现!)。

另一个值得尝试的好来源是 数据库文件在 SQLite 提交期间被莫名其妙地锁定

I suspect your problem is not FNH per se.

I had a similar problem in my FNH / SQLite project (.NET, not Mono). It mysteriously fixed itself after I refactored some of the session management code for other reasons. (The main changes were to use Transactions for ALL DB access, and to ensure all Transaction and Session objects were properly Disposed).

This link discusses a similar problem that was caused by a missing Dispose. I suspect that may have been my problem, but am not sure. (Just keeping my fingers crossed that the problem does not reappear!).

Another good source of things to try is Database file is inexplicably locked during SQLite commit

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文