3

Visual Studio2012でASP.NETWebフォームアプリケーションを作成しています。C#オブジェクトをデータベースにリンクするEntity FrameworkCodeFirstコンテキストクラスがあります。ただし、このコンテキストは、データベースファーストアプローチを使用して自動的に生成されました。私は、データベースで一意のインデックスやユーザー集計などの機能を使用していますが、EF5のCodeFirst ofModelFirstアプローチではAFAIKはサポートされていません。

プロジェクトをデプロイするためにワンクリックの公開ボタンを使用しています。私のデータベースはEFデータベースとして認識され、[コードの最初の移行を実行する]チェックボックスが表示されますが、グレー表示されています。

Web公開ダイアログ

私はデータベースファーストのアプローチを使用しているので、それは問題ありません。しかし、デフォルトの接続に表示される「データベースの更新」オプションを使用して、データベーススキーマを同期したいと思います。ここで「dbDacFxWeb配置プロバイダー」セクションで説明されているように。どうやってするか?

正しく理解していれば、この目的のためにいつでも手動でMicrosoft SQLManagementStudioを使用できます。この場合、手動でそれを行う方法は?

4

2 に答える 2

3

Tom(tdykstra)は正しいです。EFCF移行を使用する代わりに、dbDacFxを使用してモデルを公開するには、web.configに新しい接続文字列を作成する必要があります。

[Web公開]ダイアログは、データベースの2種類の公開メカニズムをサポートしています。

  1. 移行によるEFCFパブリッシング
  2. dbDacFxを介したインクリメンタルDBスキーマの公開

接続文字列がEFCFコンテキストに関連付けられている場合、公開ダイアログには常に[実行されたコードの最初の移行]チェックボックスが表示されます。ストーリーをシンプルで説明しやすいものにしたかったので、このための構成オプションは作成していません。公開ダイアログを使用したくない上級ユーザーの場合は、正しい内容の公開プロファイル(.pubxml)ファイルを作成し、それをコマンドラインからの公開に使用できます。このシナリオでVS公開ダイアログをサポートするには、web.configに接続文字列を追加する必要があります。

あなたの場合、EFCFコンテキストで使用される接続文字列DatabaseEntitiesがあります。DatabaseEntities-publishに新しい接続文字列を作成する必要がありますweb.config。これは、公開中にのみ使用されます。公開先の接続文字列が、DatabaseEntitiesとDatabaseEntities-publishの両方のテキストボックスにあることを確認する必要があります。

于 2012-08-30T18:37:14.047 に答える
3

Web.configファイルのconnectionStrings要素に、異なる名前の2番目の接続文字列エントリを作成できます。これは、dbDacFxオプションを指定して公開ダイアログに表示されます。

シナリオは、移行を使用せずにCodeFirstを展開するのと似ています。http://msdn.microsoft.com/en-us/library/ee942158.aspx#deploy_code_first_without_migrationsを参照してください。

于 2012-08-30T01:28:48.190 に答える