Amorçage des donnéesData Seeding

Note

Cette fonctionnalité est une nouveauté d’EF Core 2.1.This feature is new in EF Core 2.1.

L’amorçage des données permet de fournir des données initiales pour remplir une base de données.Data seeding allows to provide initial data to populate a database. Contrairement à dans EF6, dans EF Core, données d’amorçage sont associée à un type d’entité dans le cadre de la configuration du modèle.Unlike in EF6, in EF Core, seeding data is associated with an entity type as part of the model configuration. Puis EF Core migrations peut calculer automatiquement les éléments insérant, mettre à jour ou supprimer la nécessité d’opérations à appliquer lors de la mise à niveau de la base de données vers une nouvelle version du modèle.Then EF Core migrations can automatically compute what insert, update or delete operations need to be applied when upgrading the database to a new version of the model.

Par exemple, vous pouvez utiliser ceci pour configurer les données de valeur initiale pour un Blog dans OnModelCreating:As an example, you can use this to configure seed data for a Blog in OnModelCreating:

modelBuilder.Entity<Blog>().HasData(new Blog {BlogId = 1, Url = "http://sample.com"});

Pour ajouter des entités ayant une relation de valeurs de clés étrangères doivent être spécifiés.To add entities that have a relationship the foreign key values need to be specified. Les propriétés de clé étrangères sont fréquemment dans l’état de clichés instantanés, pour être en mesure de définir les valeurs à une classe anonyme doit être utilisé :Frequently the foreign key properties are in shadow state, so to be able to set the values an anonymous class should be used:

modelBuilder.Entity<Post>().HasData(
    new {BlogId = 1, PostId = 1, Title = "First post", Content = "Test 1"},
    new {BlogId = 1, PostId = 2, Title = "Second post", Content = "Test 2"});

Une fois que les entités ont été ajoutées, il est recommandé d’utiliser migrations pour appliquer les modifications.Once entities have been added, it is recommended to use migrations to apply changes.

Vous pouvez également utiliser context.Database.EnsureCreated() pour créer une nouvelle base de données contenant les données d’amorçage, par exemple pour une base de données de test ou lorsque vous utilisez le fournisseur en mémoire.Alternatively, you can use context.Database.EnsureCreated() to create a new database containing the seed data, for example for a test database or when using the in-memory provider. Notez que si la base de données existe déjà, EnsureCreated() sera ni mettre à jour le schéma ni les données d’amorçage dans la base de données.Note that if the database already exists, EnsureCreated() will neither update the schema nor the seed data in the database.