如何在SQLite中使用Entity Framework設置線程模式?

entity-framework-core multithreading sqlite

我正在使用SQLite和Entity Framework Core(RC1)。

我讀過, SQLite支持三種不同的線程模式:單線程,多線程和序列化

如何在運行時設置我想用於數據庫的模式?

一般承認的答案

Microsoft.Data.Sqlite引用了官方的SQLite NuGet包。該軟件包包含一個使用SQLITE_THREADSAFE=1 (序列化)編譯的SQLite版本。 Microsoft.Data.Sqlite目前沒有公開API來改變它, System.Data.SQLite也沒有。

另請參見aspnet / EntityFramework#5466


熱門答案

它是通過使用適當的標誌集打開數據庫來完成的。 SQLITE_OPEN_NOMUTEX用於多線程或SQLITE_OPEN_FULLMUTEX序列化。通過C接口可以看到標誌設置:

https://www.sqlite.org/c3ref/c_open_autoproxy.html

因此,如果您沒有直接使用C接口,那麼您將受到EF的支配以及他們是否決定支持數據庫打開時的標誌設置。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow