J'ai deux projets dans une solution.
Dans le projet de données, j'ai mon modèle Entity Framework qui se connecte à ma base de données.
Mon projet d'interface utilisateur a une référence de projet aux données et voici à quoi il ressemble:
J'ai créé un contrôle utilisateur dans le dossier UserControls.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PizzaSoftware.Data;
namespace PizzaSoftware.UI.UserControls
{
public partial class AutoCompleteTextBox : UserControl
{
AutoCompleteStringCollection completeCollection = new AutoCompleteStringCollection();
public AutoCompleteTextBox()
{
InitializeComponent();
}
private void AutoCompleteTextBox_Load(object sender, EventArgs e)
{
CustomerRepository repo = new CustomerRepository();
var customers = repo.FindAllCustomers().ToList();
foreach (var customer in customers)
{
completeCollection.Add(customer.Name);
}
txtSearchBox.AutoCompleteMode = AutoCompleteMode.Suggest;
txtSearchBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
txtSearchBox.AutoCompleteCustomSource = completeCollection;
}
}
}
Lorsque j'essaie de faire glisser ce contrôle utilisateur dans le volet de conception, le message d'erreur s'affiche dans le titre de la question.
Voici à quoi ressemble ma chaîne de connexion:
<connectionStrings>
<add
name="SaharaPizzaEntities"
connectionString="
metadata=res://*/PizzaSoftwareEntityModel.csdl|res://*/PizzaSoftwareEntityModel.ssdl|res://*/PizzaSoftwareEntityModel.msl;
provider=System.Data.SqlClient;
provider connection string="
Data Source=.\SQLEXPRESS;
Initial Catalog=SaharaPizza;
Integrated Security=True;
MultipleActiveResultSets=True
""
providerName="System.Data.EntityClient"
/>
Qu'est-ce qui pourrait causer cette erreur?
Dans votre app.config, votre chaîne de connexion ressemble à ..
connection string="
Data Source=.\SQLEXPRESS;
Initial Catalog=SaharaPizza;
Integrated Security=True;
MultipleActiveResultSets=True
"
Remarquez le & quot. Essayez de changer cela en un seul devis '
Copiez <connectionStrings>
depuis App.Config de PizzaSoftware.Data vers web.config à partir de PizzaSoftware.UI et ajoutez-le à web.config
<assemblies>
<add Assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</assemblies>
Je viens de constater que si le répertoire virtuel d'une application est créé dans IIS à partir de VS2010 à deux niveaux à partir de la racine du site Web, cette erreur se produirait. Vous n'êtes pas sûr de savoir pourquoi cela se produit, il faudrait enquêter davantage. Par exemple, si votre application se trouve dans le chemin suivant: /admin/advertiser
, l'erreur apparaît si vous n'avez pas le répertoire virtuel /admin
dans votre IIS site.
Tout ce que j'ai fait est créé un répertoire admin
vide dans mon .../intepub/wwwroot
et l'erreur a disparu.
Vous constaterez que vous ne pourrez pas commencer le débogage avant d'avoir effectué l'étape ci-dessus.
Nous avions eu ce problème dans notre équipe dans le passé, il nous a fallu du temps pour nous en souvenir, mais c’est exactement comme nous l’avons réglé auparavant.
La chaîne de connexion ressemble à une chaîne valide pour le fournisseur EntityClient. Par conséquent, je suppose que le message d'exception indique que "la connexion nommée spécifiée est introuvable dans la configuration".
Le nom de la chaîne de connexion dans la configuration est "SaharaPizzaEntities". Avez-vous spécifié la "connexion nommée" de manière explicite lorsque vous créez votre contexte d'objet dérivé?
La classe de contexte d'objet généré a plusieurs constructeurs, l'un d'eux est sans paramètre:
public EntityModelContainer() : base("name=EntityModelContainer",
"EntityModelContainer")
name=EntityModelContainer
est le nom de la chaîne de connexion qui doit correspondre à la chaîne de connexion de votre fichier de configuration ("SaharaPizzaEntities"). Vous pouvez changer le nom dans le fichier de configuration ou utiliser le second constructeur qui permet de définir explicitement le nom de la chaîne de connexion:
public EntityModelContainer(string connectionString) : base(connectionString,
"EntityModelContainer")
J'ai eu le même problème et j'ai essayé toutes les méthodes mentionnées. enfin je l'ai résolu comme mentionné. Dans mon cas, j'ai une couche de données et une couche de présentation séparées. dans mon app.config (couche de données), j'ai une connexion comme celle-ci.
<add name="LibraryMgtSysEntities" connectionString="metadata=res://*/DataLibraryMgtSys.csdl|res://*/DataLibraryMgtSys.ssdl|res://*/DataLibraryMgtSys.msl;provider=System.Data.SqlClient;provider connection string="data source=abc;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=123;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
dans mon web.config
j'ai configuré manuellement la connexion comme suit:
<add name="DefaultConnection" providerName="System.Data.SqlClient"
connectionString="Data Source=abc;
Initial Catalog=LibraryMgtSys;
Integrated Security=SSPI;
user id=sa;password=123;" />
cela me donne la même exception que celle mentionnée ci-dessus. donc je l'ai résolu en ajoutant la valeur app.config dans le fichier de configuration Web.
mon fichier web.config
final comme suit:
<connectionStrings>
<clear />
<add name="LibraryMgtSysEntities" connectionString="metadata=res://*/DataLibraryMgtSys.csdl|res://*/DataLibraryMgtSys.ssdl|res://*/DataLibraryMgtSys.msl;provider=System.Data.SqlClient;provider connection string="data source=TILANITHOTAMUNE\SQLEXPRESS;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=testing;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
<add name="DefaultConnection" providerName="System.Data.SqlClient"
connectionString="Data Source=abc;
Initial Catalog=LibraryMgtSys;
Integrated Security=SSPI;
user id=sa;password=123;" />
</connectionStrings>
Voici un exemple de chaîne de connexion qui ne fonctionnait pas
mon erreur en donnant la chaîne de connexion était
<connectionStrings>
<add name="IEMRWEBSEntities" connectionString="metadata=res://*/IemrWebs.csdl|res://*/IemrWebs.ssdl|res://*/IemrWebs.msl;provider=System.Data.SqlClient;provider connection string="data source=192.168.0.25;initial catalog=IEMRWEBSSitecore_Custom;persist security info=True;user id=IEMRWEBS;password=aDn16s!$AaS;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
Le problème est avec le chemin
voir le * utilisé dans la chaîne de connexion
"metadata=res://*/IemrWebs.csdl|res://*/IemrWebs.ssdl|res://*
remplacez * par l'espace de noms dans lequel votre fichier edmx est placé
placez l'espace de nom au lieu de * dans votre fichier appconfig
mon espace de nom de fichier edmx est IemrWebs.Data.Model . J'ai donc remplacé * par IemrWebs.Data.Model, voir ci-dessous et il fonctionne . La chaîne de connexion correcte est indiquée ci-dessous.
<connectionStrings>
<add name="IEMRWEBSEntities" connectionString="metadata=res://IemrWebs.Data.Model/IemrWebs.csdl|res://IemrWebs.Data.Model/IemrWebs.ssdl|res://IemrWebs.Data.Model/IemrWebs.msl;provider=System.Data.SqlClient;provider connection string="data source=192.168.0.25;initial catalog=IEMRWEBSSitecore_Custom;persist security info=True;user id=IEMRWEBS;password=aDn16s!$AaS;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
Le problème peut facilement être résolu. Copiez simplement votre chaîne de connexion du fichier Aap.Config
au fichier Web.config
, cela exécutera sûrement vos applications. Cela fonctionne correctement pour moi.
L'erreur se produit lorsque vous avez une classe de données/entité dans un autre projet et des pages Web dans un projet séparé.
J'avais le même problème, donc j'utilisais le fil 2 comme vous et je pensais que c'était parce que dans la bibliothèque ne s'exécutait pas, je le mettais dans le projet principal et le commençais ensuite pour que le travail soit achevé avec succès. ] Cela pourrait être une solution, pas ce dont vous avez besoin, mais vous pourriez résoudre avec cette
veuillez excuser mon anglais.
J'espère que cela pourra vous aider
Je faisais également face au même problème dans mon projet. J'avais 3 projets différents
Je viens de copier la chaîne de connexion dans la configuration d'application de View et cela fonctionne bien.
et la raison du problème était "" "La chaîne de connexion n'était pas disponible localement, où elle était requise" "".
Je pense que votre fichier de configuration ne se trouve pas dans le projet Web, il se trouve dans une autre DLL .... pas si sûr ... mais votre chaîne de connexion doit être dans le fichier web.config du projet en cours d'exécution ...