我正在使用帶有SignalR的EFCore SQLite。EF Core + SignalR多客戶端:「無法回滾 - 沒有事務處於活動狀態」
當有許多客戶在同一時間連接,數據庫不能改變(插入/更新)了,這個異常拋出:「無法恢復 - 無成交活躍」
。客戶查詢連接包含其信息的參數,則:
- 查看數據庫,如果clientName存在,則更新其信息。否則,添加新的。
- 連接後,客戶端名稱調用GetData(),返回所有客戶端的信息等等。
- 大約有100個客戶端同時連接。
日誌:
An exception occurred in the database while iterating the results of a query.
System.InvalidOperationException: A second operation started on this context before a previous operation completed. Any instance members are not guaranteed to be thread safe.
然後
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 5: 'database is locked'.
之後,當我嘗試插入或更新的東西:
Cannot rollback - No transaction is active
有沒有解決辦法?這隻發生在有50個客戶端+的生產環境中,因此開發時很難進行調試。
任何幫助將不勝感激!