2010-05-26 113 views
0

創建SQL Server 2008數據庫後,我在Visual Studio中創建了一個Linq-to-SQL架構。接下來,在.dbml可視化編輯器(在Visual Studio 2010中)中,我添加了PK-to-FK和PK-to-PK關聯到模式。與SQL Server數據庫同步LINQ到SQL DBML架構

我如何將我在Visual Studio中創建的關聯複製到數據庫?換句話說,我如何與數據庫同步

回答

3

Linq-to-SQL是一個偉大的工具,但永遠不會依賴它來更新模式。始終通過升級使用DDL CREATE/ALTER/DROP語句的SQL腳本來應用架構更改,以從on-disk version to the current version更改已部署的架構。這樣,您可以將所有模式更改作爲源文本文件保存在版本控制下,可以從任何過去的版本升級到當前的應用程序版本,並且可以輕鬆地測試所有升級路徑,包括使用非常大的表升級部署。

更糟糕的選擇是使用SQL比較工具,它們可能會與您部署的模式不同,如vsdbcmd。這可能適用於微不足道的部署,但複製和重命名數百萬條記錄的表格將很快顯示出其惡劣的缺點。

你絕對不能做的是依賴.dbml文件作爲模式的「主」副本。這是Linq-to-SQL倡導者通常省略的一點細節,當您嘗試提供應用程序的v2並意識到您沒有升級工具時,通常會發現這種細節。

+0

那麼我應該從這裏做什麼?我還沒有任何記錄,因爲我剛開始開發這個應用程序。 – 2010-05-26 22:24:28

+0

我會告訴你我是如何做到的:我創建了一個包含腳本的SQL文本文件來部署我的應用程序的v1。該文件作爲資源嵌入到我的應用程序中,當我啓動時,我將運行此腳本(將其轉換爲一系列GO分隔的批次,然後運行每個批次)。然後,隨着我的應用程序的發展,我將添加一個腳本,將數據庫從v1升級到v1.2,然後爲v1.3增加一個新腳本。當我發佈一個新版本的應用程序時,我只需添加一個新的升級腳本。部署新應用程序時,它會檢查當前模式版本並運行所有中間升級。 – 2010-05-27 05:04:47

+1

這是在http://rusanu.com/2009/05/15/version-control-and-your-database的鏈接中描述的。除非執行升級腳本並增加模式版本,否則我不會更改數據庫模式中的任何內容。 – 2010-05-27 05:06:27