mardi 28 janvier 2014

Erreur : Le code généré à l'aide de modèles T4 pour le développement Database First et Model First

J'ai récemment rencontré cette erreur sur un projet asp.net MVC 4 :

Le code généré à l'aide de modèles T4 pour le développement Database First et Model First peut ne pas fonctionner correctement s'il est utilisé en mode Code First. Pour continuer d'utiliser Database First ou Model First, vérifiez que la chaîne de connexion Entity Framework est spécifiée dans le fichier de configuration de l'application en cours d'exécution. Pour utiliser ces classes, générées à partir de Database First ou Model First, avec Code First, ajoutez toute configuration supplémentaire à l'aide des attributs ou de l'API DbModelBuilder, puis supprimez le code qui lève cette exception.


Voici 2 liens que j'ai trouvé traitant du sujet :

Scénario d'apparition de l'erreur

il s'agit de mon cas :
- j'ai d'abord créer un nouveau projet mvc4
- j'ai utilisé le générateur Code-First pour la partie MemberShip provider par défaut (le simpleMemberShip)
- J'ai rajouté un projet DAL avec un EDMX.
- J"ai modifié la connexion String dans le web.config du projet Web iso celui de l'app.conf du projet de la DAL.

Pistes d'explications 

Il s'agit vraisemblablement d'un problème d'utilisation des 2 modes en // : database first et code first en voulant utiliser la même chaîne de connexion.
Ayant au préalable utiliser le "Code First" qui fonctionne avec une chaîne de connexion "standard", la partie Edmx elle fonctionne avec une chaine spécifiant bien le fonctionnement avec providerName="System.Data.EntityClient" dans sa chaîne.

solutions

Soit vous utilisez 2 chaines de connexion en simultanée, l'une pour gérer la partie code first (pour la part, l'utilisation du simpleMembership par défaut), et l'autre pour tout ce qui accédera à la BDD via les "entities" générées par l'edmx,
Soit vous partez uniquement sur du code first ou du database first, et vous utilisez une seule chaîne de connexion appropriée.
Il doit exister une solution plus subtiles; Je suis preneur si quelqu'un sait.


Aucun commentaire:

Enregistrer un commentaire