5

プロジェクトにコードファースト移行を実装していますが、パッケージマネージャーコンソールで常にAdd-MigrationとUpdate-Databaseを使用する必要はありません。データベースの更新が自動的に行われるようにしたいと思います。

このため、これを行うためにweb.configファイルを更新しました。データベースを削除しましたが、何らかの理由でアプリケーションを起動してもデータベースが作成されません。私は何か間違ったことをしていますか?

これが私のweb.configです

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <contexts>
      <context type="AuctionService.DataAccess.AuctionContext, AuctionService.DataAccess">
        <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[AuctionService.DataAccess.AuctionContext, AuctionService.DataAccess], [AuctionService.DataAccess.Migrations.Configuration, AuctionService.DataAccess]], EntityFramework">
        </databaseInitializer>
      </context>
    </contexts>
  </entityFramework>

編集

私のコードはWCFサービスにあり、このサービスをデバッグしたときにこれを取得しました

サーバーでリクエストの処理中にエラーが発生しました。例外メッセージは次のとおりです。'保留中の変更があり、自動移行が無効になっているため、現在のモデルに一致するようにデータベースを更新できません。保留中のモデル変更をコードベースの移行に書き込むか、自動移行を有効にします。自動移行を有効にするには、DbMigrationsConfiguration.AutomaticMigrationsEnabledをtrueに設定します。

4

1 に答える 1

5

クラスのコンストラクターでAutomaticMigrationsEnabledプロパティが に設定されていることを確認してください。trueAuctionService.DataAccess.Migrations.Configuration

それが行われると、データ損失の可能性がある場合にも例外が発生する可能性があります。AutomaticMigrationDataLossAllowedプロパティを に設定すると、これを無視できますtrue

例えば:

internal sealed class Configuration : DbMigrationsConfiguration<AuctionContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        // AutomaticMigrationDataLossAllowed = true; // You may want this also, but be careful.
    }
}

これを .config ファイルで設定できるかどうかはわかりません (これに関するドキュメントが見つかりません)。

最初に移行を設定するときに、コマンドを実行することで、生成された構成クラスにそのプロパティを設定させることができると思いますEnable-Migrations –EnableAutomaticMigrations

于 2012-11-04T06:09:15.403 に答える