web-dev-qa-db-fra.com

Modèle de mise à jour de la structure d'entité à partir de la base de données ne générant pas la classe cs pour la table récemment ajoutée dans la classe tt

J'utilise le framework d'entité 5 avec Visual Studio 2012. 

J'ai un modèle existant. Maintenant, je veux ajouter une nouvelle table à ce modèle existant. Pour cela, j'ai ouvert le fichier edxm et en utilisant un clic droit, j'ai mis à jour le modèle avec succès. 

Maintenant, dans "Model Browser" sous "EntityTypes" pour model, je peux voir que le nom de la table existe. Mais dans l'Explorateur de solutions, le fichier .cs généré automatiquement pour la table que j'ai ajoutée récemment dans le fichier .tt n'est pas affiché. 

J'ai essayé "exécuter l'outil personnalisé" mais il n'a pas généré la classe. Vous avez également redémarré Visual Studio, mais le résultat est identique.

Quelqu'un peut-il m'aider? 

Merci

9
Dev

Problèmes

  1. Si vous avez le nom de la table tblEmployee dans la base de données, mais après l'ajout du 'Modèle de données d'entité', vous avez modifié Entity tblEmployee en Employee dans le fichier EDMX, puis enregistrez-le et générez-le. Mais les classes pour le nom modifié ne sont pas générées automatiquement dans le fichier Model1.tt.
  2. Lorsque " Mettre à jour le modèle à partir de la base de données " pour ajouter une nouvelle table, le même problème se produit.
  3. Également non disponible dans MVC lors de la création d'une vue avec Model Class/Créer un contrôleur avec des actions à l'aide de EntityFramework

Ce problème concerne les premières versions de VS2012.Ce problème est résolu dans la version mise à niveau de VS2012.

Solution

nous avons la solution pour cela avec la première version de VS2012 & EF 5.0

Suivre les étapes

  1. Cliquez avec le bouton droit de la souris sur Model1.tt et sélectionnez "Exécuter l'outil personnalisé", puis cliquez sur Créer. Les classes sont générées.
  2. Cliquez avec le bouton droit de la souris sur Model1.Context.tt et sélectionnez "Exécuter l'outil personnalisé", sauvegardez et générez maintenant voir la propriété IN La classe de contexte est générée comme

    public DbSet<Employee> Employees { get; set; } 
    

Solution Save and Build

Model1Context context=new Model1Context();
List<Employee> empList= context.Employees.ToList();

Cela a fonctionné pour moi . Mais gardez à l’esprit que EF 6.0 n’est toujours pas en mesure de réaliser un échafaudage lors de la création d’un contrôleur et d’une vue à l’aide de entityframework dans MVC avec cette version de VS2012 . Vous devez utiliser EF 5.0 ou mettre à jour VS2012 avec. nouvelle mise à jour.

21
Dnyneshwar

Résolu moi-même. 

Le problème était dans les fichiersfichier. Context.tt etfichier.tt. 

Le nom du fichier de diagramme pour la variable const string inputFile spécifié dans les deux fichiers était différent du fichier de diagramme existant ( .edmx file). Mis à jour avec le nom de fichier de diagramme existant, puis modèle mis à jour à partir de la base de données. Travaille bien maintenant. 

4
Dev

Dans ce cas, ce que je fais est que je viens de supprimer le modèle excitant, puis cliquez sur Ajouter et ajoutez simplement votre table nouvellement ajouté pour là!

S'il s'agit d'un bogue lié au fichier edmx situé dans un dossier, le problème est résolu: téléchargez et installez VS 2012 Update 1. Vous pouvez l'obtenir auprès de:

http://www.Microsoft.com/visualstudio/eng/downloads#d-visual-studio-2012-update

4
Neel

J'ai ajouté la clé primaire à la nouvelle table. Cela résout le problème.

0
alexey