2012-03-30 3 views
1

データベースエンティティを生成するために、Entity Framework 4.3のDbContextを使用しています。私の質問はデータベースを変更するときです。自動生成されたコードがどのように更新されるのですか? EFは、NoからYesへのnullの許可など、データベースルールを格納する場所はどこですか。 データベースからのモデル更新機能を.EDMXというファイルから使用すると、テーブルの許容nullルールが更新されていないようです。どのように私はデータベースの変更の問題を解決することができます。これらのルールをすべて保存するコードはどこにありますか。データベースの変更を伴うDbContext

エラーメッセージ:

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. 

しかし、私はすべてのEF自動生成されたファイルを削除して、再びそれを再生成するとき、ルールが更新されるようです。しかし、私はそれが開発期間中に問題を解決する良い方法ではないと思った。

+0

テーブルを変更するだけの場合は、EFデザインから削除して再追加することができます。私はEFの更新が信頼できないと判断しました。まだ間違ったアプローチのようです... – kaj

答えて

1

.EDMXファイルのデータベースからモデルを更新する機能を使用すると、 のように見えるテーブルの許容nullルールが更新されません。

これは正しい動作です。

  • データベース定義(モデルブラウザでのみ表示)
  • クラス定義(それはあなたがデザイナーに見えるものである)
  • 定義間のマッピング(それはあなたがマッピングの詳細を見るものです:EDMXファイルは、3つの部分を持っていますあなたは、データベースからUpdateを使用する場合)

デザイナーが完全にデータベースの定義を交換し、マッピングし、クラス定義に新しいテーブルやカラムを追加します。削除や変更を試みることは決してありません。これは、クラス定義がカスタマイズ可能であるためです。あなたが変更を加えたら、デザイナーがそれらに触れることは望ましくありません。データベースからの更新には実際の状態しかありません。あなたが行った変更や、データベースを変更して単純により良い方法を使用するために発生した変更はわかりません。何も修正せずに不一致を修正してください。

+0

私の場合、素晴らしい説明のためにありがとう、 "削除し、" EF 4.3でnullを変更できるように解決する唯一の方法はありますか? – Timeless

+0

いいえ。データベースの変更に応じてプロパティの構成を変更することもできます。 –

+0

こんにちは、EFでも必要なすべてのフィールドを取得しますか?例:var name = context.UserAccount.SingleOrDefault(u => u.LoginEmail == "[email protected]")。 //電子メールアドレスが[email protected]に等しいユーザーの名前を取得したいだけです。これは正しい動作ですか?大きなデータを扱うときのパフォーマンスは?任意の代替方法?どうもありがとう ! – Timeless

関連する問題