Entity Framework API Modifier le suivi et les entrées de référence
-
26-10-2019 - |
Question
Vous cherchez à écrire un code de vérification générique sur ma sous-classe DbContext.
foreach (var entry in this.ChangeTracker.Entries<MyClass>())
{
if (entry.State == EntityState.Modified)
{
var entityProperties = entry.Entity.GetType().GetProperties();
foreach (var entityProperty in entityProperties)
{
DbMemberEntry propertyEntry = entry.Member(property.Name);
if (propertyEntry is DbPropertyEntry)
{
// IsModified available
}
else if (propertyEntry is DbReferenceEntry)
{
// IsModified not available
}
}
}
}
1) Si je change seulement une propriété de référence, la valeur entry.State est "Inchangé".
2) Même si le point 1 a été réglé sur « modifié », la classe DbReferenceEntry ne semble pas avoir une propriété IsModified, ni une valeur d'origine.
Je suppose que cela est possible parce que EF doit être suivi de cette.
Quelqu'un peut-il aider?
Merci, Ben
La solution
Oui Entrée de référence (propriété de navigation) ne suit pas les changements. Il est de la responsabilité de la propriété de clé étrangère (en cas d'association de clé étrangère) ou des changements de suivi des objets distincts d'association indépendante. Dans l'API ObjectContext vous pouvez obtenir ces objets par ObjectStateManager
mais il semble que DbContext API ne dispose pas de cette disposition. J'ai posé une question à ce sujet sur .