J'ai un objet de cadre à une entité et lorsque je l'ajoute à mon projet, le connectionstring
est ajouté app.config
dans la connectionstring
section, mais lorsque je veux en créer un nouveau entitycontext
et l'utiliser connectionstring
, cette erreur apparaît
entity-framework
entity-framework-4
user421413
la source
la source
Réponses:
Je soupçonne que votre problème vient du fait que vous avez plus d'un projet dans votre solution et que celui qui contient votre structure d'entité, y compris les
edmx
fichiers, n'est PAS le projet de démarrage de la solution. Dans ce cas, même si la chaîne de connexion existe dans leapp.config
projet EF , CLR ne peut toujours pas la trouver au moment de l'exécution. Par exemple, si vous avez un site Web et un projet EF dans votre solution, vous devez copier la chaîne de connexion du projet EFapp.config
vers votre site Webweb.config
. Fondamentalement, toutes les données de chaîne de connexion doivent exister dans le fichier de configuration du projet à partir duquel les threads .Net ont été lancés par CLR (c'est-à-dire votre projet de démarrage). Si ce n'est pas votre cas, ouvrez simplement votreedmx
fichier, faites un clic droit sur sa surface, sélectionnez les propriétés et copiez la chaîne de connexion et collez-la dans votreapp.config
section Chaîne de connexion. De cette façon, vous pouvez vous assurer que vous avez le bon dans votre configuration.EDIT:
Comme vous pouvez le voir ici sur Documentation sur ObjectContext Constructor , le premier paramètre est le nom de la chaîne de connexion qui est le code généré au moment où vous créez votre EDM. Si, d'une manière ou d'une autre, le nom de votre chaîne de connexion change, tout ce que vous avez à faire est de faire un clic droit sur votre modèle et de sélectionner «Mettre à jour le modèle à partir de la base de données ...», puis suivez l'assistant pour mettre à jour votre configuration et votre concepteur pour refléter cela changement.
la source
Vous devez copier la chaîne de connexion dans app.config dans votre web.config ou copier le fichier entier dans le projet qui affiche la sortie. C'est l'une des conditions pour consommer le cadre.
la source
J'ai rencontré ce problème lorsque j'ai essayé de placer ma logique de base de données personnalisée dans un .dll à utiliser par plusieurs projets dans ma solution.
Bien que le .dll contienne le fichier app.config correct, cela ne fonctionne pas. Les frameworks d'entité voulaient les informations de connexion dans le fichier app.config du .exe. Copier les informations là-bas a très bien fonctionné.
La solution de Morteza consistant à coller la chaîne de connexion directement dans le .edmx ne fonctionnait pas pour moi, car elle ne me permettait pas d'y coller la valeur - même si c'est précisément ce que je voulais pouvoir faire.
la source
Salut, j'ai eu ce problème et cela me rendait fou. Quoi qu'il en soit, j'ai finalement compris quel était le problème. La première chose que vous devez faire est de vous assurer que le
connectionstrings
inapp.config
etweb.config
sont les mêmes. Ensuite, vous devez double-cliquer sur le.edmx
fichier pour voir les tableaux. Une fois que vous êtes, cliquez n'importe où près des tables mais pas sur les tables et allez dans les propriétés. Dans la liste déroulante, sélectionnezConceptualEntityModel
et recherchez le nom du conteneur d'entité et souvenez-vous bien.Accédez ensuite au concepteur du fichier edmx et ouvrez les constructeurs. (le concepteur est le sous-dossier du fichier edmx) les constructeurs doivent avoir deux paramètres dans le paramètre BASE
C'est l'un d'eux. le premier paramètre doit avoir le nom du fichier de projet dans lequel se trouve le
.edmx
fichier. Le deuxième paramètre doit avoir le nom du nom du conteneur d'entité parmi les propriétés dont j'ai parlé plus tôt. n'oubliez pas d'agencer tous les constructeurs avec:base("", "")
Au moins c'était mon problème et mon problème a été résolu comme ça. J'espère que vous réussirez à résoudre le vôtre comme ça.
la source
J'avais une variante à ce sujet que personne ne semblait couvrir.
J'avais un projet principal avec quelques modèles et un projet de test contenant des tests unitaires. Le projet de test fonctionnait, mais s'est ensuite arrêté avec l'erreur mentionnée dans l'OP. Je n'avais pas fait de changement de nom ou de déplacement du fichier EDMX.
Beaucoup de conseils mentionnés comparaient les fichiers .config, mais mon projet n'en avait pas du tout.
En fin de compte, j'ai copié le fichier app.config du projet principal dans mon projet de test, puis cela a fonctionné. Je ne sais pas si c'est la bonne étape ou présentera des problèmes de maintenabilité lorsque des modèles supplémentaires sont ajoutés, mais au moins mes tests unitaires fonctionnent à nouveau correctement maintenant.
la source
Bien que la réponse de Morteza Manavi résout ce problème, une autre solution consiste à créer dynamiquement la chaîne de connexion et à la transmettre au constructeur de votre ObjectContext:
Cela élimine le besoin de copier les informations de la chaîne de connexion dans le fichier app.config de votre projet de démarrage, ce qui, du moins dans mon cas, n'était pas souhaitable.
la source
J'ai oublié d'ajouter providerName = "System.Data.EntityClient" comme attribut dans la chaîne de connexion. Cela a entraîné cette erreur, donc
au lieu de
la source
Je viens de constater que si une application est créée dans IIS à partir de VS2010 à deux niveaux à partir de la racine du site Web, cette erreur se produirait. Je ne sais pas pourquoi cela se produit, aurait besoin d'enquêter davantage. Par exemple, si votre application se trouve dans ce chemin:
/admin/advertiser
l'erreur apparaîtrait si vous n'avez pas/admin
de répertoire virtuel dans votre site IIS.Tout ce que j'ai fait est de créer un
admin
répertoire vide dans mon.../intepub/wwwroot
erreur a disparu.Vous constaterez que vous ne pourrez pas démarrer le débogage tant que vous n'aurez pas effectué l'étape ci-dessus.
Nous avons eu ce problème dans notre équipe dans le passé, il a fallu un certain temps pour s'en souvenir, mais c'était exactement comme ça que nous l'avons résolu avant aussi.
la source
J'utilise l'architecture n'tier et j'ai le même problème, mais celui-ci m'aide. J'espère que cela vous aidera. Tout d'abord, vous avez la même chose
connection string
sur vouslibraries
où vous pouvez accéder à la base de données comme dansapp.config
etweb.config
après cela, vous ajoutez simplement un constructeur surchargé dans le fichier .edmx (Model.context.cs) que maintenant vous avez deux constructeur, l'un est par défaut et l'autre que vous venez d'ajouter ( surchargé).la source
J'avais une bibliothèque de classes qui ne voulait pas non plus travailler avec EF. Après avoir copié le app.config (ou juste la section connectionstring) de ma bibliothèque de classes vers le projet exe, la connexion a bien fonctionné! Le fichier de configuration devrait probablement se trouver dans le même dossier que le projet exe et n'a donc pas été trouvé. Soyez donc toujours très prudent lorsqu'un fichier de configuration est utilisé dans un projet de bibliothèque de classes!
la source
Eh bien ... ce problème pourrait être aussi pour une raison très simple (stupide) ... J'ai copié un fichier d'un autre projet et j'ai oublié de changer la ConnectionString sur l'EntityDataSource ... comme j'étais au début du projet et c'est arrivé dans la page de connexion, je pensais que c'était quelque chose sur la configuration, mais c'était juste le mauvais nom de chaîne de connexion (et DefaultContainerName).
la source