簡體   English   中英

如何在VSTS持續集成內自動化Entity Framework數據庫遷移

[英]How to automate Entity Framework database migration within VSTS continuous integration

我遇到這種情況:我想在Azure上將軟件發布到生產環境中,但是必須同時將代碼優先的數據庫遷移應用於Azure SQL數據庫。 在沒有新數據庫模式的情況下推送新軟件版本的過程中(反之亦然),一段時間內軟件將引發異常The model backing the 'BlogContext' context has changed since the database was created.

我的軟件是在Visual Studio Team Services中使用持續集成將git commits推送到分支時部署的,因此,我確實需要一種同時運行update-database的方法。

看來可以使用Visual Studio中的手動發布(通過選中“更新數據庫”框,如下所示)來完成此操作,但是我需要使其自動化。

在此處輸入圖片說明

如果您不關心數據,只需刪除dbo .__ MigrationHistory表

希望這可以幫助。

您可以直接控制部署過程嗎(Team Services可以提供幫助,或者Octopus,Jenkins等)? 如果是這樣,請在代碼之前部署數據庫。 如果我不使用實體框架,那將是這樣做的方式。 即使使用實體框架,我也會假設相同。

默認情況下,使用CreateDatabaseIfNotExists<TContext>初始化實體框架上下文。 如果數據庫架構不同於EF模型,則錯誤The model backing the 'BlogContext' context has changed since the database was created. 將被觸發。

通過向您的數據庫上下文添加構造Database.SetInitializer<context>(null); 不會觸發模型錯誤。 這意味着您可以在部署包含新數據庫上下文的應用程序的新版本之前,將架構更改部署到生產中,而不會引起模型錯誤,這不會造成停機時間。

利用appSetting,以便生產代碼將使用null初始化程序。

暫無
暫無

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

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