Совокупный корень обновляется при изменении потомка - PullRequest
0 голосов
/ 06 февраля 2012

Я использую 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 инициировал какое-то измененное событие, и оно всплыло до родительского пользователя?

Это происходит, даже если я загружаю пользователя, а затем получаю членство, используя _context.Memberships.Find (userId)вместо того, чтобы просто использовать свойство навигации user.Membership.Я предполагаю, что в контексте графа эти два эквивалентны?

Есть ли способ остановить обновление объекта «Пользователь», поскольку я использую столбец вычисленных значений с измененной датой, и я бы предпочел, чтобы он не обновлялся при изменении дочерней сущности.В идеале я хочу вернуть объект User, а не просто запросить членство в DbSet, так как я хочу также прочитать некоторые свойства User.

SQL, который запускается в родительской таблице Users:

update [dbo].[Users]
set @p = 0
where (([Id] = @0) and ([Version] = @1))
...