Entity Framework: Définition de l'horodatage de la mise à jour

entity-framework

Question

Toutes nos tables de base de données ont UpdateUserID et UpdateTS. Je voudrais avoir cet ensemble si mon entité a des changements. Est-il possible que cette mise à jour soit disponible sur place de manière conditionnelle?

Si je mets manuellement UpdateTS dans le code, cela signifie que mon entité a changé et que l'objet est toujours mis à jour.

Réponse acceptée

Vous devriez pouvoir gérer l'événement SavingChanges ( exemple ici ) et effectuer la logique décrite par @sander.


Réponse populaire

J'appelle cette méthode d'extension avant d'appeler context.SaveChanges() :

public static void SetLastModified(this ObjectContext context, DateTime dateTime)
{
    DateTime now = DateTime.UtcNow;
    foreach (ObjectStateEntry entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Modified))
    {
        if (!entry.IsRelationship)
        {
            IHasLastModified lastModified = entry.Entity as IHasLastModified;
            if (lastModified != null)
                lastModified.LastModified = now;
        }
    }
}

Je peux facilement appeler ce code, car j'ai encapsulé ObjectContext dans une classe de référentiel. Si vous l'utilisez nu, vous pouvez ObjectContext.SavingChanges événement ObjectContext.SavingChanges pour effectuer une opération similaire.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow