Fermer

mars 24, 2020

Comment utiliser la propriété Shadow dans Entity Framework Core


Apprenez à utiliser la propriété shadow (également connue sous le nom de propriété Navigation, Auditable ou Tracking) dans Entity Framework Core.

Introduction

Dans cet article, je vais vous montrer comment utiliser la propriété shadow dans Entity Framework Core , mais avant cela, nous verrons comment nous l'utilisons actuellement. Cet article couvre les sujets suivants:

  • Qu'est-ce que la propriété shadow
  • L'ancienne façon d'utiliser et d'accéder
  • La nouvelle façon d'utiliser et d'accéder

Qu'est-ce que la propriété shadow?

Les propriétés shadow dans EF Le noyau ne fait pas partie de votre modèle de classe d'entité mais fait partie de votre modèle EF Core et est mappé avec vos colonnes de base de données. La propriété Shadow est également appelée propriété Navigation, Auditable ou Tracking. (Voir la documentation .)

La table de base de données contient les propriétés d'ombre portant les noms CreatedDate, DeletedDate, UpdatedDate, etc. Elle ne peut pas être créée avec les annotations de données.

L'ancienne façon d'utiliser et d'accéder

À l'ancienne, nous créions une classe ou une interface et héritée de notre classe d'entité et sur la base de cela, les propriétés de suivi ou de navigation étaient ajoutées à la table de base de données comme illustré dans le code ci-dessous.

– Classe d'entité de base de données avec suivi hérité ou interface vérifiable.

 classe publique Shadow: ITracking
{
     public int Id {get; ensemble; }
     chaîne publique Content {get; ensemble; }
     public DateTime CreatedDate {get; ensemble; }
}

– Interface vérifiable ou de suivi que nous utilisons pour la date de création, la date de mise à jour, etc.

 Interface publique ITracking
{
    DateTime CreatedDate {get; ensemble; }
}

– Définition de la valeur de la propriété de navigation ou de suivi dans notre exemple, c'est-à-dire CreatedDate .

 var model = new Shadow ();
model.Content = "Ancienne façon de définir";
model.CreatedDate = DateTime.Now; // définition de la valeur

– Obtention de la valeur de la propriété de navigation ou de suivi dans notre exemple, c'est-à-dire CreatedDate .

 var res = db.Shadows.FirstOrDefault ();

if (res! = null)
{
    Console.WriteLine ("ID d'enregistrement ajouté: - {0}", res.Id);
    Console.WriteLine ("Contenu de l'enregistrement ajouté: - {0}", res.Content);
    Console.WriteLine ("Added record CreatedDate - {0}", res.CreatedDate); // obtention de la valeur
}

La table de base de données nouvellement créée Ombres avec les propriétés de suivi ou de navigation CreatedDate ci-dessous utilise l'ancienne méthode avant Entity Framework Core:

La nouvelle façon d'utiliser et d'accéder

Dans la nouvelle façon, c'est-à-dire dans EF Core, nous n'avons pas besoin de créer une classe ou une interface distincte et d'hériter dans chaque classe d'entité de base de données. Nous devons l'ajouter dans la méthode de remplacement OnModelCreating de DbContext comme indiqué dans le code ci-dessous.

– Dans le noyau EF, nous n'avons besoin que de la classe d'entité de base de données.

 public article de classe
{
    public int Id {get; ensemble; }
    chaîne publique Name {get; ensemble; }
    chaîne publique Description {get; ensemble; }
}

– Pour une entité de base de données unique ou sélectionnée, vous pouvez ajouter la navigation ou la propriété shadow comme code ci-dessous.

 override protégé void OnModelCreating (ModelBuilder modelBuilder)
{
    // création de propriétés de navigation ou d'ombre pour une seule entité
    modelBuilder.Entity 
(). Property ("CreatedDate"); }

– Pour plusieurs entités de base de données, vous pouvez ajouter la propriété de navigation ou d'ombre comme code ci-dessous.

 override protégé void OnModelCreating (ModelBuilder modelBuilder)
{
    // création de propriétés de navigation ou d'ombre pour toutes les entités
    foreach (var entityType dans modelBuilder.Model.GetEntityTypes ())
    {
        modelBuilder.Entity (entityType.ClrType)
            .Property  ("CreatedDate");
    }
    base.OnModelCreating (modelBuilder);
}

– Définition de la valeur de la propriété de navigation ou de suivi dans notre exemple, c'est-à-dire CreatedDate .

 var nwArticle = new Article ();
nwArticle.Name = "Propriété de l'ombre";
nwArticle.Description = "Nouvelle façon de définir";
db.Entry (nwArticle) .Property ("CreatedDate"). CurrentValue = DateTime.Now;
 // définition de la valeur

– Obtention de la valeur de la propriété de navigation ou de suivi dans notre exemple, c'est-à-dire CreatedDate .

 var res = db.Articles.FirstOrDefault ();

if (nwFirstOrDefault! = null)
{
    Console.WriteLine ("ID d'enregistrement ajouté: - {0}", res.Id);
    Console.WriteLine ("Contenu de l'enregistrement ajouté: - {0}", res.Name);
    Console.WriteLine ("Description de l'enregistrement ajouté - {0}", res.Description);
    Console.WriteLine ("Ajout de l'enregistrement CreatedDate - {0}", db.Entry (res) .Property ("CreatedDate"). CurrentValue); // obtenir la valeur
}

La table de base de données nouvellement créée Articles avec les propriétés de suivi ou de navigation CreatedDate est affichée ci-dessous à l'aide de la méthode EF Core:

Vous pouvez également télécharger cet exemple de ici .

Conclusion

Dans cet article, nous avons discuté de la propriété shadow dans Entity Framework Core, de l'ancienne façon de l'utiliser et de la façon d'y accéder, et de la façon d'utiliser EF Core. dans un exemple simple. Si vous avez des suggestions ou des questions concernant cet article, contactez-moi.

"Apprenez-le, partagez-le."





Source link