Utilisation de EF 6.1, MVC 5, VS 2013, C #
J'ai un modèle de base de données existant conçu dans Toad DM pour SQL Server) et il est très important de le garder toujours à jour
Utilisation du modèle de données d'entité ADO.NET J'ai choisi Code d'abord de la base de données (nouvelle fonctionnalité de EF 6.1) pour générer les modèles. Remarque: Les classes de modèle et la classe DbContext ont été générées avec succès mais le fichier NO .edmx ou .tt a été généré.
Ensuite, j'ai ajouté un nouvel élément d'échafaudage: les contrôleurs MVC 5 avec des vues, à l'aide d'Entity Framework. Remarque: Succès, contrôleurs et vues générés
A partir de maintenant, je ne veux plus utiliser Code First pour mettre à jour ma base de données. Au lieu de cela, je souhaite que les modèles soient mis à jour en fonction des modifications apportées à la base de données. Que faire ensuite? Si je n'ai pas de fichier edmx, ne puis-je pas mettre à jour mes classes de modèle à partir de la base de données?
Code First de la base de données de l'assistant de modèle de données d'entité crée très bien vos classes d'entité, comme si elles avaient été créées dans le style Code d'abord. Ce que vous demandez, c'est s'il existe un moyen de garder ces classes à jour au fur et à mesure de l'évolution de votre base de données, comme dans le style EDMX "Update Model From Database". D'après ce que j'ai étudié, il est impossible d'utiliser l'outil intégré. Cependant, voici une solution de contournement que j'ai trouvée utile:
Disons que j'ai une base de données avec une table produit et une table client. À l'origine, j'avais créé une classe StoreDBContext et sélectionné le produit parmi l'un de mes objets. Maintenant, je veux ajouter la table des clients en tant que nouvelle entité au contexte existant. Voici comment procéder à l'aide de l'assistant Code en premier:
StoreDBContextTemp.cs
, et copiez les propriétés virtuelles de vos entités nouvellement ajoutées:public virtual DbSet<Customer> Customers {get; set;}
StoreDBContext.cs
classe dbcontext.Si vous ajoutez ou supprimez des tables, vous devrez ajuster manuellement les champs, mais vous n'aurez au moins pas besoin d'écrire à la main des dizaines de propriétés chaque fois qu'une nouvelle table est ajoutée au modèle.
Une autre option consiste à supprimer les classes générées automatiquement du projet et à les générer à nouveau. En suivant cette approche, nous devons nous assurer que le modèle de données (nom de classe qui hérite de DbContext) est identique à celui du modèle précédent. Le nom du modèle précédent est mis en surbrillance dans
Trois choses.
Il n'y a pas de .edmx lorsque vous utilisez Code First.
Si vous utilisez Code First Migrations, vous devez d'abord écrire le code, puis migrer les modifications vers la base de données. Cela vous aide à avoir un code beaucoup plus organisé sans code généré, ce qui est un avantage.
Il y a un plugin dans Visual Studio pour faire le contraire. Entity Framework PowerTools vous permet de sélectionner la base de données et de la mapper à des objets.
https://visualstudiogallery.msdn.Microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d
Il y a encore une chose à ajouter à la réponse de Brian Vander Plaats. À l'étape 4, vous voudrez également copier tout ce qui se trouve dans la nouvelle méthode StoreDBContextTemp.cs/OnModelCreating et l'ajouter à StoreDBContext.cs/OnModelCreating existant. Sinon, vous perdriez ces ajouts de configuration lorsque vous supprimez la nouvelle classe de contexte.