子が変更されたときに更新される集計ルート

関連するビットが次のようになっているEF 4.2を使用しています。

public class MyDbContext : DbContext            
{        
   public IDbSet Users { get; set; }
   public IDbSet Memberships { get; set; }
}

public User()
{          
    public int Id { get; set; }        
    public string Email { get; set; }

    public virtual Membership Membership { get; set; }
}

特定のUserを取り戻して、関連付けられたMembershipオブジェクトを更新すると(失敗したパスワードのカウントを更新すると言う)、Membershipオブジェクトは更新されますが、Userプロパティは更新されていません。メンバーシップオブジェクトが何らかの変更イベントを発生させ、それが親ユーザーに吹き込まれているためですか?

これは、ユーザーを読み込み、user.Membershipナビゲーションプロパティを使用するのではなく、_context.Memberships.Find(userId)を使用してメンバーシップを取得しても発生します。私はコンテキストグラフでこれらの2つが同等であると推測していますか?

変更された日付の計算値の列を使用すると、更新されるUserオブジェクトを停止する方法はありますか?子エンティティが変更されたときに更新されないようにしたいと思います。理想的には、Userプロパティの一部を読みたいのでMembership DbSetを照会するのではなく、Userオブジェクトを取り戻したいと思っています。

親Usersテーブルで起動されるSQLは次のとおりです。

update [dbo].[Users]
set @p = 0
where (([Id] = @0) and ([Version] = @1))
0
可能な複製[EF4 - update [Table] set @p = 0 where]( stackoverflow.com/questions/6232185/…
追加された 著者 Ladislav Mrnka,
メンバーシップがユーザー集計の一部である場合、ユーザー集約ルートも変更されていることを嬉しく思います。そうでない場合、メンバーシップはユーザー集約の一部ではなく、別個の集計として扱われなければなりません(つまりユーザーの財産ではない)。サイドノート:あなたの国を公開しないでください(メンバーシップ)。 aUser.IncrementNumberOfFailedAuthenticationRequests()のようなオブジェクト指向のものを試してみてください。
追加された 著者 Yves Reynhout,
これらのメソッドは、システムの動作/ユースケースを表しており、それらの爆発が疑わしい。私はこれが問題となる例をまだ見ていません(SRPの違反や一緒に属していないものを一緒にすることなく)。 「複雑な」EFオブジェクトの有用性については、私の反応は次のとおりです。彼らは単なるデータであり、それ以上のものではありません。
追加された 著者 Yves Reynhout,
@YvesReynhout私はあなたの視点を見て、私は主にそれに同意する、多くの点でそれはユーザーの集約ルートも更新するのは正しいです。予期せぬ動作だった人がかなりいると推測するように、動作を「修正」する修正プログラムがあります。それは、彼らがそれを変更する権利だったわけではありません;)私はあなたが潜在的にあなたが望むすべての基本的なオブジェクトのすべてのプロパティのメソッドを必要とするだろうという意味で、基本的なメンバシップを更新するメソッドを持つという概念によって100%更新し、EFの複雑なオブジェクトの有用性を幾分低下させるか?
追加された 著者 Robert Roe,

答えはありません

0