2016-11-02 9 views
3

私は、データベースファーストのアプローチを使用しているEntity Frameworkとそのソリューションをどのように展開するのかについて非常に精通しています。コードの最初の移行はサーバー上で自動的に実行されますか?

基本的に、私のデータベースの第1のアプローチでは、データアクセスライブラリプロジェクトを消費するWebクライアントプロジェクトがあります。このプロジェクトは、データベースの最初のアプローチでコーディングされています。

まず、新しいテーブルを追加する(またはスキーマを変更する)SQL Serverスクリプトをいくつか書きます。

次に、EF edmxデザイナーを使用して既存のデータベースから.netを更新し、このデータアクセスレイヤーをコンパイルして、DDLリファレンスがクライアントWebプロジェクトで自動的に更新されます。

私は本番サーバへのソリューション展開するとき:

  1. まず、私は生産のSQLサーバ
  2. 次のT-SQLスクリプトを実行する必要があり、私は2つの更新のDDL(1を展開しますウェブの場合は1、データアクセス層の場合は1)。

ここでは、WebプロジェクトとEFコードファーストアプローチを使用するデータアクセスレイヤープロジェクトを含む新しいアプリケーションがあります。 EFコードの最初のアプローチは初めてです。新しいテーブルを追加するなど、データベーススキーマを変更するときはいつでも知っています。Visual Studioのパッケージ管理コンソールでコードの最初の移行を実行して、バックエンドデータベースインスタンスの変更/更新を実行する必要があります。

私の質問:

私は本番にアプリケーションをデプロイするとき、私は従うべき手順は何ですか?

EF Code Firstアプローチで作成された運用SQLサーバーはどのように更新されますか?

自動プロセスですか、またはパッケージ管理コンソールの下でVisual Studio内で手動で実行する必要がありますか?

ありがとうございました。

答えて

5

Azureを使用している場合は、以下のように自動プロセスが設定できます。エルス

enter image description here

あなたは、このように手動で行う必要があります:

あなたはデシベルスクリプトを作成する必要があり、その後本番DB上でそれを実行することができます。私が使用しnormaley Getting a SQL Script

別のオプション:

PM>アップデート - データベース-script

あなたは、このドキュメントを参照することができ

私は生産aginstマイグレーションを実行する必要がありますdb、私は私のconn文字列を本番データベースを反映するように変更し、実行した後:

PM>更新データベース

+0

は、Azureのオプションについては知りませんでした。カッコいい。しかし、他の自動方法もあります。 – BradleyDotNET

+0

あなたがAzureを使っているなら、あなたは簡単にそれをすることができます:)@BradleyDotNET – Sampath

+0

Hi Sampath。あなたの答えをありがとうございました。私は、プロダクションサーバにアプリをデプロイするときに、VS内でマイグレーションコードを実行して、データベース接続文字列をプロダクションに変更する必要があるようです。 –

1

移行にはいくつかのオプションがあります。あなたがアップデート - データベース-ConnectionString =「YourDbString」を実行することができ、それはあなたのために本番データベースに対してそれを行いますあなたは(@Sampathノートなど)の更新とデータベース-scriptを使用してスクリプトを生成することができます

  1. イニシャライザを使用できます。アプリケーションの起動時に、アプリケーション接続文字列を使用して移行を実行します。あなたの初期化ルーチンでは、このような行を置くことによってこれを行います。

    Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Configuration>()); 
    
ContextがあなたのDbContextの種類があり

Configurationは、あなたが最初の移行をした際に生成された構成クラスです。

詳細については、このMSDNの記事を参照してください:https://msdn.microsoft.com/en-us/data/jj591621.aspx

+0

あなたの3番目のオプションの問題は、毎回 'conn'を変更する必要がありますか?私は 'dev'から' prod'を意味しますか? – Sampath

+0

@Sampathはい、いいえ、プロダクションアプリがプロダクションDBと話すように接続文字列*を変更する必要があります。そうすれば、イニシャライザが動作します。 – BradleyDotNET

+0

Fourth =>あなたはdacpacを提供することができます:その解決のようなDBA – CodeNotFound

関連する問題