Да, это неприятный побочный эффект того, что называется " Независимые ассоциации "
В EF (по крайней мере, в 3.5 SP1) отношения не считаются частью сущности, то есть существуют независимые.
Это означает, что вызов ApplyPropertyChanges(...)
влияет только на свойства, которые являются структурно частью сущности, а не на ссылки.
Так что вам нужно изменить свой код на это:
public User EditUser(User userToEdit){
//userToEdit contains values for eagerly loaded contacts entity
User originalUser = (from u in _entities.UserSet.Include("contacts")
where u.ID == userToEdit.ID
select u).FirstOrDefault();
_entities.ApplyPropertyChanges(originalUser.EntityKey.EntitySetName, userToEdit);
originalUser.Contacts = userToEdit.Contacts;
_entities.SaveChanges();
return userToEdit;
}
Предполагается, что userToEdit.Contacts является ссылкой (не коллекцией) и не является нулевым.
Надеюсь, это поможет
Alex
PS В .NET 4.0 Beta2 то, что называется Ассоциации FK , исправит эту проблему и сделает так, чтобы ваш код работал.