簡體   English   中英

ASP.NET中重用MS Access遷移到SQL Server的數據庫連接的最佳做法是什么?

[英]What is the best practice in ASP.NET for re-using a database connection for MS Access migrating to SQL server?

在具有大約5個使用相同數據庫的Web方法的ASP.NET Web服務(C#4.0)中打開和重用數據庫連接的最佳實踐是什么? 理想情況下,MS Access和SQL Server的答案是相同的。

  1. 全球私人變量:

    一種。 優點:如果更改數據庫提供商,則易於維護

    缺點:不能使用'using'子句,連接可能會保持打開太長時間 - 連接保持打開多長時間?

  2. 將db連接作為方法參數傳遞:

    一種。 優點:可以在不需要時使用'using'子句關閉連接

    缺點:煩人的維護和傳遞param無處不在

  3. 在任何方法中根據需要使用using子句打開和關閉連接:

    一種。 問題:這是最慢的,因為您必須多次重新打開相同的連接嗎? 或者因為幕后連接池這不慢? 因此,這可能是最好的做法......?

    問題:連接池是否僅與SQL Server相關,因此不適用於MS Access?

起初我正在考慮使用全局私有變量(OleDbConnection),因為我在Web方法和支持方法中使用與主數據庫的連接,並且將在不久的將來從MS Access遷移到SQL服務器並且將是容易做出改變。

但是在閱讀了一些文章之后,比如在使用ASP.NET和Web服務時最有效地獲取SQL連接

似乎我可以隨時隨地使用'using'子句創建一個新的連接,而不會受到性能影響?

ASP.Net 匯集了數據庫連接,因此您不必擔心這些低級別的詳細信息。 看看這篇MSDN文章的技巧3

最佳做法是根本不重復使用Connection對象。

public void GetEmployees() As List<Employee> {
    var employees = new List<Employee>();
    using (var connection = new SqlConnection(Configuration.ConnectionString)) {
        using (var command = connection.CreateCommand()) {
            command.CommandText = "SELECT * FROM dbo.Employee";
            connection.Open();
            using (var reader = command.ExecuteReader()) {
                while (reader.Read()) {
                    employees.Add(Employee.CreateRecordFromOpenReader(reader));
                }
            }
        }
    }

    return employees;
}

然后,如果您需要來自任何用途的交易,請設置DTC並執行此操作。

using (var scope = new TransactionScope()) {
    var employees = GetEmployees();
    employees.Map((e) => e.Status = Status.Active);
    scope.Complete();
}

暫無
暫無

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

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