web-dev-qa-db-fra.com

Comment mettre à jour le modèle en utilisant la première approche de base de données

J'ai d'abord utilisé la base de données EntityFramework Core pour créer un modèle comme illustré dans la documentation d'EF Core

Mais je ne sais pas comment mettre à jour le modèle lorsque la base de données a été modifiée.

39
witson

Vous pouvez ré-échafauder le modèle en exécutant la commande que vous avez exécutée à l’origine avec la commande -Force option ajoutée. Cela entraînera le remplacement du contenu du dossier spécifié. Utilisation de la console du gestionnaire de packages exemple tiré de la documentation EF Core , la commande modifiée devient:

Scaffold-DbContext "Server=(localdb)\v11.0;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force

Alternativement, si vous utilisez commandes CLI , cela devient:

dotnet ef dbcontext scaffold "Server=(localdb)\v11.0;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -f

Cependant, vous devriez envisager d'utiliser Migrations pour que votre modèle et votre schéma de base de données soient synchronisés l'un avec l'autre. De cette façon, vous apportez des modifications au modèle, puis vous les propagerez dans la base de données.

61
Mike Brind

Astuce supplémentaire

Si vous souhaitez mettre à jour les modèles de temps en temps, voici un moyen pratique de simplifier le processus.

Rendez-vous au menu Outils> Outils externes, puis Ajoutez un nouveau menu et remplissez les entrées suivantes:


Titre:

Update DbContext

Commande:

dotnet.exe

Arguments:

ef dbcontext scaffold "your-connection-string" Microsoft.EntityFrameworkCore.SqlServer --output-dir=Models --force

répertoire initial:

$(ProjectDir)

Cochez ensuite éventuellement "Utiliser la fenêtre de sortie", puis appuyez sur Appliquer et OK .

Lorsque vous revenez à Outils, ce nouveau menu devrait être présent et prêt à être réutilisé, en un seul clic!

16
Yom S.

Vous devez effectuer une migration NE PAS ré-affranchir, sinon vous perdrez tout travail effectué sur les modèles, telles que la validation des données.

1
JD Patton

Si nous avons personnaliser dans dbcontext classe E.g. ajouter LoggerFactory et après nous utilisons ('Scaffold-DbContext "Server=(localdb)\v11.0;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force'). cette commande alors toutes les modifications de personnalisation seront perdues.

0
user2890634