簡體   English   中英

與 SQLite Dapper 的多個連接

[英]Multiple Connections to SQLite Dapper

我在 SQLite 數據庫中使用 Dapper。 我開發了一些多線程代碼,其中每個線程使用 Dapper ORM 執行一些讀寫操作。 兩個線程也可能會嘗試在同一個表上同時寫入。

我面臨的困惑是我是否必須在我的代碼中實現一些技術來使並發讀取線程安全,或者 dapper 會為我處理這個問題。

請注意,我很熟悉 SQLite 是鎖定 db 文件以進行寫入的那個,我在這里唯一關心的是 Dapper 以及它在這種情況下的作用。

正如您所說,SQLite 在 DB 文件級別實現鎖定。

Dapper 或任何其他完整或微型 ORM 都無法改變這一事實。 沒有 ORM 會為任何 RDBMS 實現線程管理或並發。 線程管理是用戶的責任。

換個方式想想。 ORM 如何知道如何實現線程?

是的; 一些 ORM 管理連接到一定級別。 但大多數情況下,它僅限於創建/打開/處置它。 ORM 不控制線程或並發。 它是由用戶來實現的。

回復您的評論:

但問題仍然是在這種情況下 dapper 會做什么,因為它可能有某種重試邏輯來嘗試再次執行查詢,以防鎖定在那里

Dapper 不會做這樣的事情。 Dapper 的工作原理與 ADO.NET 完全一樣(好吧……幾乎)。 對於任何查詢部分,Dapper 在功能上與 ADO.NET 沒有太大區別。

所以,回答你的評論,如果 ADO.NET 的某些提供者實現重試邏輯,它將被 Dapper 自動繼承。 但是,Dapper 本身並沒有實現任何這樣的邏輯。

如果我猜對了,ADO.NET 會拋出正確的異常 - Dapper 只會將該異常傳遞給您。

我希望這個答案對你有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM