1

次のエンティティモデルがあります。新しいアカウントを含む新しいユーザー オブジェクトを保存しようとすると、DBUpdateException がスローされます。リレーションシップの外部キー プロパティを公開していないエンティティを保存中にエラーが発生しました。

モデルに外部キーを追加せずに、2 つのオブジェクトのマッピングを提供することは可能ですか? モデルに外部キーを含めるという考えは嫌いです。他に解決策がない場合、外部キーを使用してこの問題を解決するにはどうすればよいですか?

public class User
{
   public virtual int Id { get; set; }
   public virtual Account Account { get; set; }
}

public class Account
{
   public virtual int Id { get; set; }
}
4

2 に答える 2

2

これらのクラスのどちらかが本当に「複合型」なのか、それとも両方とも独自の対応するテーブルを持つエンティティなのか?

それらがエンティティである場合、クラス自体で外部キー プロパティを必要としないように EF を構成できます。DbContext クラスで、次のOnModelCreatingような構成コードをオーバーライドして追加します。

modelBuilder.Entity<User>().HasRequired(u => u.Account).WithRequiredPrincipal();

私がその権利を得た場合、どちらのクラスにも外部キー プロパティを必要とせずに、User と Account の間に "required:required" 関係が構成されます。

于 2013-03-04T00:26:47.913 に答える
1

Idクラスからプロパティを削除する必要があります。Accountそうしないと、Entity Framework はクラスAccountを複合型ではなくエンティティとして扱います。

于 2013-03-03T23:58:29.247 に答える