2013-08-24 55 views
1

我有一個網站,我正在開發使用SQL Azure數據庫。我希望能夠使用本地託管在調試機器上的數據庫測試我的網站,這樣我的設計人員就可以處理樣式和內容,而無需處理啓動Azure模擬器和與外部服務通信的開銷,因爲他是通常在沒有連通性的地區。如何爲我的Azure網站實施本地測試數據庫?

我想這將是可以提取的.sql腳本來創建數據庫,並執行他們每試運行,但是這似乎有些單調乏味。同樣,我不確定配置這些部署細節的最佳方式是爲了在開發和已發佈的配置之間切換。我是一個新的Web開發人員,在一個相當大的項目上削減我的牙齒。

使用ASP.NET MVC4並有MSSQL 2012安裝了它的價值。

回答

1

您可以在SQL Azure數據庫導出爲.bacpac格式,然後將其導入到SQL Server數據庫。它將創建所有表格並填充數據。您無需在每次測試運行中都執行該操作,只需執行一次操作,並且您將擁有適合調試需求的正確數據庫。

調試和發佈之間的切換(或者,如果你願意,你可以將其重命名,例如本地與生產)的配置和使用不同的web.config文件(或配置的轉換)是使用不同的設置工作的好辦法。

如果你想在你的VCS中存儲你的數據庫腳本(數據庫結構或數據) - 你可以使用實體框架遷移(新花哨的方式)或單獨的項目「SQL Server數據庫」類型(老派但經過驗證的方式: ))。

此外,EF遷移允許您輕鬆地在每次運行時重新創建數據庫(使用不同的名稱)(用於單元測試目的)然後您可以使用SQL Express文件實例(請注意,它僅適用於本地工作,能夠訪問AFAIK SQL Express實例)

+0

這是一個相當有用的答案。我一直在試圖避免EF爲各種各樣的原因和我實際使用短小精悍的OR映射。我從來沒有接觸過的配置轉換所以這是我需要研究的東西。是否有一種很好的方法來導出創建和更新的創建腳本,以便它們可以每次執行? – Firoso

+0

好吧,您可以使用SQL數據庫項目方式 - 將項目分離sql腳本,你可以生成完整的腳本或數據庫差異從它。您也可以將您的數據庫反向工程設計回工程。當VS爲數據庫部署生成一個腳本時,它會將所有檢查放在「如果存在並且創建新對象時丟棄對象」。 –

+0

請記住,它可能會在創建新表之前刪除表,並且可能會丟失數據。設置中應該有複選框 - 如果數據可能發生鬆動,請不要部署。並且tbh存儲大量數據並不方便 - 它使用sql批量插入來創建後填充表。所以一些用戶\角色或字典的預填充列表是好的,但不是100k條目表。 –