2013-12-23 169 views
4

是否有人知道Database.SqlQuery是否會引起線程不安全(如創建或註冊事務等)?Database.SqlQuery線程安全

這是一段代碼,我必須從多個線程調用 - 查詢是非常直接的,硬編碼的(沒有訪問共享的用戶代碼數據):

public virtual long GetId(string sql) 
{ 
    var newid = DbContext.Database.SqlQuery<long>(sql).First(); 
    return newid; 
} 

我的目標是在次要版本發佈期間,我們將有機會在需要時正確實施同步。

回答

1

由於ADO.NET採用connection pooling並創建新的DbContext是相對輕量級的,您可以安全地創建許多可以在使用後處理的上下文。

所以我會考慮在使用塊中創建新的DbContext而不是使用字段/屬性。

要回答你的第一個問題,像在你的問題中的代碼一樣運行一個查詢將只執行鍼對數據庫的語句,就像你用舊式的ADO.NET方式一樣。

+0

謝謝。你的答案是好的,但我手術上詢問是否有任何操作是線程不安全的,希望看到框架代碼的人可能知道。 –