Amorçage des donnéesData Seeding

Note

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

Amorçage de données permet de fournir les 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, amorçage de données est associé à un type d’entité dans le cadre de la configuration de 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 insérer, 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 qui ont une relation de valeurs de clé étrangère 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 l’ombre, donc 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 de valeur initiale, 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() ni met à jour le schéma ni les données de valeur initiale de 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.