J'ai une application de serveur WCF en cours d'exécution Entity Framework 6.Entity Framework 6 - DataServiceContext Detect A Les changements
Mon application client consomme OData à partir du serveur via un DataServiceContext, et dans mon code client Je veux être en mesure d'appeler une méthode HasChanges() sur le contexte pour voir si des données ont changé.
J'ai essayé d'utiliser la méthode d'extension suivante:
public static bool HasChanges(this DataServiceContext ctx)
{
// Return true if any Entities or links have changes
return ctx.Entities.Any(ed => ed.State != EntityStates.Unchanged) || ctx.Links.Any(ld => ld.State != EntityStates.Unchanged);
}
Mais il revient toujours faux, même si une entité, il est suivi n'avoir des changements. Par exemple, étant donné que j'ai une entité suivie nommée Customer, le code suivant retourne toujours avant d'appeler SaveChanges().
Customer.Address1 = "Fred"
if not ctx.HasChanges() then return
ctx.UpdateObject(Customer)
ctx.SaveChanges()
Si je commente le sinon ctx.HasChanges() puis retour ligne de code, les modifications sont enregistrées avec succès et je suis heureux que l'entité a reçu le changement et est en mesure de sauvegarde le.
Il semble que le changement est se suivi par le contexte, juste que je ne peux pas déterminer ce fait de mon code.
Quelqu'un peut-il me dire comment déterminer HasChanges sur un DataServiceContext?
Peut-être que je ne comprends pas le cas d'utilisation, mais pourquoi ne pas simplement appeler SaveChanges()? S'il n'y a pas de modifications, EF ne fera rien. Vraisemblablement, EF fait quelque chose de similaire à l'interne, et vous ne faites que réinventer la roue. – Vlad274
Merci Vlad, je veux faire un dialogue contextuel pour dire "Etes-vous sûr de vouloir enregistrer les modifications" avant de sauvegarder les données. S'il n'y a pas de changements, je ne veux pas faire apparaître le dialogue. –