2012-02-25 9 views
32

私はコードファーストを実行することができました。接続文字列を使用したコードの最初の移行

私はまだアプリケーションを開発しているので、データベースの構造はファイナライズされていないため、移行を実装する必要があります。

私はOfficial Blog Postに続き、そのUpdate-Databaseコマンドが機能しています。

ただし、これはデータベースのSQLExpressバージョンのみを更新します。データベースのプロダクションバージョンはAzure上にあり、実行時に接続文字列を指定して、Update-Databaseコマンドが機能しないようにします。

私の最終的な質問は、実行時に接続文字列が指定されている本番データベースに自動移行を適用する方法です。

Get-Help Update-Database

関連部分:

Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [<Com 
monParameters>] 

ですから、Update-Database -ConnectionStringName "MyConnectionString"を行うことができますし、それが魅力のように動作するはずですパッケージマネージャコンソールタイプに

+0

NO app.configでPMコンソールを使用していない場合は、この記事を参照してください。http://stackoverflow.com/questions/15504465/entityframework-code-first-custom-connection-string-and-migrations/16133150# 16133150 –

答えて

49

データベース初期化子がDabase.SetInitializer()で設定されている場合は、適切な接続文字列を使用してプロダクションにアプリケーションをデプロイすると、自動的にdbを最新バージョンに移行する必要があります。

私は注意することをお勧めしますが、常にバックアップします。

更新

@Alexy Strakh最近のコメントは、その答えを入れる価値は別の引数を生み出しました。

コードの最初の移行を使用して配置システムを適切に構成します(2 ConnectionString)。

  1. デフォルトのパスワード
  2. は、アプリケーションの設定システムを持っていると、必要に応じて確保するためにユニットテストを構築し、PRODとDEV接続構成について知っている、web.configファイル(PRODとDEV)での接続文字列を定義します。右の1は、*
  3. 採用config file transformation拾い、それが生産(this should be the most cutting edge way)にあなたのパッケージを展開
  4. 生産値を1にあなたのweb.configファイルを変換する必要があり
されます

あなたは開発環境から本番環境とやりとりする必要はありませんが、本当ににする必要がある場合は、実行するとすぐに元に戻す必要がある一時的な解決策にしてください。

もう1つの方法として、Web.Debug.configとWeb.Release.configを使用し、メインのweb.config(ソース管理でチェックインする唯一のもの)のテンプレートを使用することができます。

プロダクション用または個人用の開発用パスワード( の場合)を絶対にチェックインしないでください。

* DEBUGシンボルを使用して、アプリケーションの実行方法を確認できます。

+0

web.release.configで指定したデフォルトのweb.configとprod db接続でdevデータベースが指定されています。私はdevの代わりにprodを使用したい、私はそれを行うことはできますか? –

+0

是非とも、忘れずに、デベロッパー/ステージング/プロダクション用の構成ロジックを認識することは、エンティティフレームワーク(またはストレージテクノロジ)の責任ではないことに注意してください。 私はあなたが必要なのは設定ファイルの変換だと思います。 https://msdn.microsoft.com/en-us/library/dd465318%28v=vs.100%29.aspx – WDRust

+0

つまり、そのルートを下りたいと仮定します。追加の詳細や要件がある場合は、別の質問をする必要があります(私にpingしてください) – WDRust

4

Why does Entity Framework's EF Migrations Add-Migration step require a database connection string?

私は長い目で見れば少ない労力が考える解決策を持っています。 あなたが あなたのコンテキストで同じ名前で

を接続文字列を作成するかのように:ベース(「DBNAME」)

接続文字列の名前と初期カタログ一致DBNAME指定し、あなたが入力する必要はありません毎回接続文字列名。

関連する問題