本文描述 Visual Studio 2005 中基於檔案的資料庫方式與設計師如何建立與使用這些資料庫,具體內容包括:Visual Web Developer 與資料、本地與伺服器資料庫、建立本地資料庫、繫結至本地資料庫、部署本地資料庫。
VWD 2005 包含 SQL Server 2005 Express Edition,它是 SQL Server 2005 免費版本,目標用戶是希望用簡單資料庫解決方案建立應用程式的非專業或熱衷開發者。因 SQL Server Express 支援完整 SQL Server 程式設計模型(如 SQLCLR、T-SQL、預存程序、檢視、觸發器、XML 資料型別),可用來了解這些技術,並確保應用程式能在更高層級平台運行(如 SQL Server 企業版)。SQL Server Express 易於下載安裝(小於 36MB),Visual Studio 2005 和 Visual Web Developer 2005 也包含它。
Visual Studio 包含資料庫管理工具,如資料庫瀏覽器 和查詢建構器,可用來管理 SQL Server Express 資料庫。Visual Studio 還支援新的基於檔案的資料庫,用於建立 SQL Server Express 資料庫並作為專案一部分。同時,Visual Studio 2005 和 SQL Server 2005 Express 為建立與部署資料驅動 Web 應用程式提供完整解決方案,包含下列特性:
本文描述 Visual Studio 2005 中基於檔案的資料庫方式與設計師如何建立與使用這些資料庫。
Visual Web Developer 為 Web 應用程式使用資料庫提供大量工具。可使用資料庫瀏覽器輕易連接資料庫並建立或檢視資料庫關係圖或結構。還可使用查詢建構器對話框與查詢結果表格查詢資料庫與資料填充。建立新資料庫(使用本地檔案)也作為專案資料項目提供。
一旦在 Visual Web Developer 中連接資料庫,可將資料庫表直接拖放到頁面上,建立資料繫結 GridView 控制項。Visual Web Developer 自動建立關聯資料來源控制項,並根據資料表配置其選取、更新、插入和刪除操作。此快捷操作節省手動建立資料來源大量工作,也可根據需要輕易用適合的資料繫結控制項取代 GridView。
你可能已熟悉基於伺服器的資料庫與連接字串。此情況下,資料庫伺服器(如 SQL Server 2005)將資料庫名稱與伺服器維護的資料庫檔案關聯。可透過指定伺服器名稱、資料庫名稱和憑證連接基於伺服器的資料庫,例如:
"server=(local)\SQLExpress;database=Pubs;Integrated Security=true"
但 Visual Studio 2005 還支援本地資料庫概念,它是加入當前 Web 應用程式 App_Data 目錄中的一個檔案。在 App_Data 目錄儲存資料檔案是安全的,因這目錄內容永不回應用戶請求。此目錄也是儲存 XML 檔案和其他資料存儲的推薦位置。本地 SQL Server Express 資料庫帶 .MDF 副檔名(如 "MyDatabase.MDF"),是 SQL Server 支援的標準檔案格式。連接伺服器時,資料庫還有關聯日誌檔案(如 "MyDatabase_log.LDF")。資料庫檔案與日誌檔案位置必須在一起。
可透過使用相對路徑連接字串將本地檔案資料庫自動附加到 SQL Server Express。相對路徑確保應用程式遷移到任何其他地方時不會中斷資料庫連接。Web 應用程式中相對路徑連接字串如下:
"server=(local)\SQLExpress;AttachDbFileName=|DataDirectory|
MyDatabase.mdf;Integrated Security=true;User Instance=true"
上述連接字串還有兩個額外屬性。AttachDbFileName 指定連接開啟時動態附加到伺服器上的資料庫檔案位置。雖此屬性可接受資料庫完整路徑(如使用 |DataDirectory| 語法),但執行時此路徑會被應用程式 App_Data 目錄取代。這也保證應用程式遷移到其他位置時連接不中斷。第二個屬性 User Instance=true,指定 SQL Server Express 附加資料庫方式。此情況下,SQL Server Express 為了將資料庫附加到新實例,建立新進程,在開啟連接用戶身分下運行。ASP.NET 應用程式中,此用戶是本地 ASPNET 帳號或預設 Network Service,視作業系統而定。為安全附加非系統管理員帳號(如 ASP.NET 帳號)提供的資料庫檔案,建立獨立 SQL Server 用戶實例是必要的。
請注意:因預設所有 ASP.NET 應用程式運行在同一進程下,故所有應用程式會將本地資料庫附加到同一 SQL Server Express 實例。這意謂著不管應用程式最初附加哪個資料庫,所有應用程式對附加到此實例的所有資料庫擁有相同存取權限。為隔離不同應用程式,必須讓每個應用程式運行在不同工作進程或應用程式集區(IIS 6 中)中。因這原因,本地 SQL Server 資料庫主要為方便開發,而非用於取代共享主機環境下基於伺服器的資料庫。
另一要點:不允許兩個用戶同時連接本地資料庫。Visual Studio 設計應用程式時,設計師自動釋放連接,以保證 Visual Studio 和 ASP.NET 能共享資料庫檔案(如設計師中除錯運行中的應用程式)。