関連するビットが次のように見えるEF 4.2を使用しています。
public class MyDbContext : DbContext
{
public IDbSet<User> Users { get; set; }
public IDbSet<Membership> Memberships { get; set; }
}
public User()
{
public int Id { get; set; }
public string Email { get; set; }
public virtual Membership Membership { get; set; }
}
特定のユーザーを引き戻し、関連付けられたメンバーシップ オブジェクトを更新すると (失敗したパスワードの数を更新するなど)、メンバーシップ オブジェクトが更新されますが、ユーザー プロパティが更新されていないにもかかわらず、ユーザーも更新されます。これは、Membership オブジェクトが何らかの変更されたイベントを発生させ、親 User にバブルアップしたためですか?
これは、ユーザーをロードしてから、user.Membership ナビゲーション プロパティを使用するだけでなく、_context.Memberships.Find(userId) を使用してメンバーシップを取得しても発生します。コンテキストグラフでは、これら2つは同等だと思いますか?
変更された日付の計算値列を使用しているため、ユーザーオブジェクトの更新を停止する方法はありますか?子エンティティが変更されたときにこれが更新されないようにすることをお勧めします。理想的には、User プロパティの一部も読み取りたいので、Membership DbSet を照会するだけでなく、User オブジェクトをプルバックしたいと考えています。
親ユーザー テーブルで実行される SQL は次のとおりです。
update [dbo].[Users]
set @p = 0
where (([Id] = @0) and ([Version] = @1))