Entity Framework Tracker activé DbContext
Définition
TrackerEnabledDbContext (TEDB) est une bibliothèque .net basée sur une structure d'entité. Il est créé pour suivre les modifications de la base de données.
- Cette bibliothèque enregistre les nouveaux ajouts d’enregistrements, les modifications d’enregistrements et les suppressions d’enregistrements.
- Lors de l'enregistrement des modifications d'enregistrement, il auditera les valeurs précédentes et nouvelles des champs.
- Il auditera également l'heure du changement et l'utilisateur qui a modifié / ajouté / supprimé l'enregistrement.
Configuration
Afin de suivre les entités, vous devrez spécifier les entités que vous souhaitez suivre. Vous pouvez également spécifier les propriétés à suivre, mais cela est facultatif. Si vous ne spécifiez pas les propriétés à suivre, toutes les propriétés de cette entité seront suivies.
Vous pouvez spécifier vos exigences de suivi de 3 manières.
- Annotations
- API Fluent
- Combinaison des deux
La récente introduction de l'API Fluent vous donne plus de pouvoir pour modifier / activer / désactiver le suivi, même au moment de l'exécution.
Annotations
Pour suivre une entité, placez l'annotation [TrackChanges] dans cette entité. Mais si vous ne souhaitez pas suivre la propriété Text, ajoutez simplement l'annotation [SkipTracking] .
[TrackChanges]
public class Comment
{
public int Id { get; set; }
[SkipTracking]
public string Text { get; set; }
public virtual int ParentBlogId { get; set; }
public virtual Blog ParentBlog { get; set; }
}
Cette entité aura 3 colonnes dans la table. Id, Text et ParentBlogId. Bien que la structure d'entité fonctionne même si vous ne possédez pas la propriété 'ParentBlogId', cette bibliothèque vous demandera de l'avoir si vous souhaitez suivre les clés étrangères.
API Fluent
Si vous n'aimez pas attribuer d'attributs à vos entités, vous pouvez utiliser l'API fluide pour configurer le suivi comme exemple suivant.
EntityTracker
.TrackAllProperties<NormalModel>()
.Except(x => x.Description)
.And(x => x.Id);
Notez que si vous utilisez à la fois des annotations et une api fluide, et si elles sont en conflit pour une entité ou une propriété, la configuration d'api fluide sera considérée comme une priorité élevée
Exigences
Version du framework d'entité
- Entity Framework 6.x