2014-06-11 31 views
0

我正在爲.NET項目建立一個連接工廠,我想問問最佳的方法是什麼。 我有一個問題,因爲表LOCKS(或他們說),因此我負責設置一個新的數據層(希望)沿着其他解決方案小問題。SQL連接/命令正確管理(避免表LOCKS)?

現在,代碼:

public sealed class ConnectionFactory 
{ 
    //Will be SQL only 
    private static SqlConnection sqlConnection = null; 
    private static string connectionString = ConfigurationManager.ConnectionStrings["Development"].ConnectionString; 

    public static SqlConnection GetConnection() 
    { 
     if(sqlConnection == null) 
     { 
      sqlConnection = new SqlConnection(); 
      sqlConnection.Open(); 
     } 
     return sqlConnection; 
    } 
} 

我將主要使用的程序,但可能有一個或另一個奇怪的要求,如果需要,我們將鍵入查詢,所以我覺得我有以某種方式添加一個SqlCommand:

private static SqlCommand sqlCommand = null; 

public static SqlCommand GetCommand() 
{ 
    //Check if sqlConnection is not null (omitted) 
    if(sqlCommand == null) 
    { 
     sqlCommand = sqlConnection.CreateCommand(); 
    } 
    return sqlCommand; 
} 

但是,該命令應該是靜態的嗎?或者我應該每次創建一個新的查詢將被執行? 思考避免鎖大多是否可以由多個命令或只有多個連接引起?我如何避免並正確處理這個問題?

回答

0

我相信「NOLOCK」會在這種情況下工作...

FROM [table] with (nolock) 

每當你做一個直接查詢。

+0

我會開始將它用於查詢和過程,但在需要鎖的情況下,是否可以正確管理連接/命令來解決它?我在想,如果我只使用一個命令並且應用程序發送另一個請求,那麼在當前命令完成後該命令將「排隊」以運行(就像它是一個用戶同時運行多個查詢一樣) – Danicco