3

我在Visual Studio 2010中有一個數據庫和一個數據庫項目。我推斷數據庫項目中的模式成功,但我也需要以某種方式導入一些表中的數據(國家,狀態,UserType等),它們是參考表而不是真正的數據表。在Visual Studio 2010數據庫項目中生成種子數據

有沒有辦法?

到目前爲止,我發現的唯一方法是在SQL Server Management Studio中生成數據腳本,並將此腳本放置在數據庫項目的部署後腳本文件中。

任何簡單的方法?

回答

1

這幾乎是我以前做過的。

我只想確保在您的每個語句腳本看起來像:

IF (EXISTS(SELECT * FROM Country WHERE CountryId = 1)) 
    UPDATE MyTable SET Name = 'UK' WHERE CountryId = 1 AND Name != 'UK' 
ELSE 
    INSERT INTO MyTable (CountryId, Name) VALUES (1, 'UK') 

這意味着每當您部署的核心參考數據將被插入或更新的數據庫,無論哪個是最合適的,並且您可以修改這些腳本以爲較新版本的數據庫創建新的參考數據。

您可以使用T4模板來生成這些腳本 - 我在過去做過類似的事情。

+0

是啊,這是非常喜歡我所做的事情一樣。我希望在「輸入模式」還導入數據或某事的UI提示...但我猜這只是不可.. – 2011-04-02 14:17:49

+0

不,不,我所知道的。 Datadude似乎主要關注模式,而不是數據。 – 2011-04-02 15:15:43

+0

謝謝...這似乎是我將保持參考數據的方式:) – 2011-04-03 20:34:26

2

嘗試用於SQL Server的Static Data Script Generator。它以正確的格式爲您自動執行這些後期部署腳本。這是一個免費的谷歌代碼託管項目,我們發現它對腳本編寫我們的靜態數據很有用(也可以在現有數據的頂部進行更新)。

+0

靜態數據腳本生成鼓起你運行它的第一次。然後,它暴露了我試圖爲其生成腳本的表上的一些主鍵違例未處理的異常。因人而異。 – 2011-11-28 21:15:46

+1

你確實需要使用它。是的,它確實是第一次爆炸,因爲它需要設置配置,所以它知道你想要的數據庫。 至於第二,它很可能同樣的問題,我發現。該腳本不檢查外鍵,也無法知道如何排序插入,因此它只是按照它處理它們的順序生成索引腳本。您需要手動組織它們運行的​​訂單以避免外鍵問題。主鍵違規可能意味着您正在嘗試針對已有數據的數據庫運行數據。 在anycase,由於堆幫派! – Frater 2012-04-18 01:41:00

相關問題