3

Entity Framework データ コンテキストを取得するために同じプロジェクトを参照する Web サイトと Windows サービスがあります。Windows サービスを開始するたびに、Entity Framework はデータベース列の 1 つを NOT NULL から NULL に変更する自動移行を実行します (他の変更は行われません)。その列のプロパティは [必須] とマークされており、Web サイト (モデルのまったく同じ DLL のまったく同じバージョンを指している) は、データベースがその列に対して NOT NULL であるべきであると適切に考えています。

自動移行を無効にしてみましたが、予想どおり、適用する必要のある保留中の変更がデータ モデルにあると表示されたため、サービスがクラッシュしました。

編集もう少し情報を見つけました... プロパティに [Required] 属性と [AllowHtml] 属性の両方があるため、これが発生しているようです。[AllowHtml] 属性を削除したところ、発生しませんでした。したがって、私の質問は次のようになります: 1) [AllowHtml] が [Required] で動作しないことが予期される動作ですか? 2) Web サービスがこのコードを使用している場合にのみこれが発生する可能性はありますか?ウェブサイトはコードを使用していますか? [AllowHtml]を見るとWebサービスは[Required]を完全に無視しているようです。

EF5を使用しています。

4

2 に答える 2

0

EF プロジェクトで、自動移行を無効にしてから、モデルとデータベースの同期を維持しないように EF を強制しようとしましたか?

global.asax ファイルに次を追加します。

Database.SetInitializer<dbContext>(null);

これにより、保留中の移行を適用する必要があるというメッセージが削除されます

乾杯、バーテック

于 2013-09-16T03:31:31.877 に答える