3

そのため、localhost で動作する MVC4 プロジェクトがあり、それを共有環境にアップロードする時が来ました。

共有ホスティング環境を使用しているため、組み込みの初期化子を使用できません。そこで、mdf ファイル (.bak) のバックアップを作成し、実稼働環境にアップロードしました。すべてが正しく見えました...テーブルはすべてそこにありました..しかし、アプリケーションを実行すると、次の例外が発生します:

データベースが作成されてから、「YourContext」コンテキストをサポートするモデルが変更されました。Code First Migrations を使用してデータベースを更新することを検討してください ( http://go.microsoft.com/fwlink/?LinkId=238269 )。


うまくいきました!

カスタム初期化子を追加しました。

public class ProductionInitializer : IDatabaseInitializer<AvariceContext>
{
    public void InitializeDatabase(AvariceContext context)
    {
    }
}

解決策は...ハックですが、機能します。誰かが光を当てることができれば、私はそれを感謝します.

4

2 に答える 2

0

「うまくいきました!カスタム初期化子を追加しました。」

これが機能する理由:... EF ではわずかな違いが見られるにもかかわらず、データベースにアクセスできます。コードは IDatabaseInitializer を実装し、初期化または最新バージョンへの MIGRATE の可能性 (空のメソッド) を無視します。したがって、Ef は DB が正しくないと判断し、とにかく続行します。

安定した状態の EF アクセスに対する長期的な見方ではありません。最新バージョンへの移行を機能させることを検討します。

共有ホスティング環境を使用しているため、組み込みのイニシャライザーを使用できません。」

なぜだめですか ?

于 2013-02-19T15:04:15.440 に答える
0

データベースを作成してから EF モデルを更新していないことが確実な場合は、_MigrationHistory テーブルを削除するだけです。これは、データベースとモデルが同期していることを確認するために使用されますが、概説したシナリオでは機能しません。

将来的には、以下のように開発環境で実行する update-database コマンドのフラグに「-script」を追加することで、EF の移行機能を引き続き使用できます。これにより、本番データベースで実行できる移行スクリプトが生成されます。

> update-database -script
于 2013-02-19T06:24:03.190 に答える