6

VS2012 MVC4 ソリューション (EF5) があります。コーディングするときは、同じマシンに SQL Express がインストールされたパーソナル コンピューターを使用します。会社に更新プログラムを公開する必要があるたびに、パッケージ (.zip) を作成し、このパッケージを会社の IIS にインポートします (私の開発コンピューターからはアクセスできません)。会社の IIS サーバーにソリューションを公開するたびに、データベース全体を再作成します。それは過去に...

ここで、ソリューションを変更し、Code First Migrations を使用します。必要に応じて (エンティティが変更された場合)、「パッケージ マネージャー コンソール」(Update-Database) を使用してローカル データベースを更新します。

私の質問: 会社の IIS でデータベースを更新するにはどうすればよいですか?

説明ページ ( http://msdn.microsoft.com/en-us/library/dd465337.aspx ) に以下のスクリーンショットが表示されますが、VS2012 で公開ウィザードを開いたときに同じ画面が表示されません。

以下は、ドキュメント ページに表示される画面です。

ここに画像の説明を入力

以下は私が持っている画面です:

ここに画像の説明を入力

どんな助けでも大歓迎です。

4

3 に答える 3

7

このチェック ボックスを有効にするには、Properties\YourProject - WebDeploy.pubxml を編集して PublishDatabaseSettings を探します。

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="Namespace.Models.YourDBClass" Order="1" Enabled="True">
      <Destination Path="your-connection-string-goes-here" />
      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="Namespace.Models.YourDBClass, AssamblyName" MigrationConfiguration="Namespace.Migrations.Configuration, Assambly" Origin="Convention" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>

Namespace.Models.YourDBClass を DbContext を継承するクラスごとに変更し、Namespace.Migratins.Configuration を移行構成の名前空間に合わせて変更し、Assambly を Assambly 名で変更します。

そのチェックボックスが表示される発行ウィザードを保存して開きます。

その助けを願って

于 2012-11-14T22:13:51.797 に答える
5

私もこれが起こるのを見てきました。展開ツールが EF の存在を識別するためにどのヒューリスティックを使用するかはわかりませんが、オプションは散発的に表示されます。

パブリッシュ ツールの機能は簡単に複製できます。web.config ファイル (または web.config.release の変換) でデータベース初期化子を指定して、移行を実行できます。次のようになります (変換の場合)。

 <entityFramework>
     <contexts xdt:Transform="Insert">
       <context type="PlantonDbContextName, PlantonAssemblyName">
         <databaseInitializer
           type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[
               [PlantonDbContextName, PlantonAssemblyName], 
               [PlantonConfigurationName, PlantonAssemblyName]
             ], EntityFramework" />
       </context>
     </contexts> 
 </entityFramework>

ジェネリックは構成ファイルでは醜いですが、コードで初期化子を設定することもできます: http://msdn.microsoft.com/en-us/library/hh829293(v=vs.103).aspx

それが役立つことを願っています。

于 2012-11-06T13:49:39.330 に答える
1

突き刺して質問させてください:

これは以前はVS2010プロジェクトでしたか?:-)

変換プロセスはVS2010をVS2012にアップグレードし、公開プロファイルをそのまま維持するためには機能しないため、私は尋ねます。編集が多すぎます。

最善の策は、既存の公開プロファイル(ファイル)を削除して、新しい公開プロファイルを再作成することです。

ただし、最初にOdeの回答で適切なEFコンテキストを指定するようにしてください。公開ウィザードは、プロファイルを作成する前にコンテキストを確認できる必要があります。

エンティティフレームワークコードの最初のデータ移行がVS2012Web配置で機能しない

于 2012-12-26T02:01:25.017 に答える