16

Tengo dos proyectos en una solución.La conexión con nombre especificado no se encuentra en la configuración, no está destinada a ser utilizada con el proveedor de EntityClient, o no es válida.

  1. PizzaSoftware.Data
  2. PizzaSoftware.UI

En el proyecto de datos, tengo mi modelo de Entity Framework que se conecta a mi base de datos.

Mi proyecto de interfaz de usuario tiene una referencia de proyecto a los datos y así es como se ve:

enter image description here

He creado un control de usuario en la carpeta 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; 
     } 
    } 
} 

Cuando intento arrastrar este control de usuario al panel de diseño, recibo el error en el título de la pregunta.

Aquí es lo que mi cadena de conexión se ve así:

<connectionStrings> 
    <add 
     name="SaharaPizzaEntities" 
     connectionString=" 
     metadata=res://*/PizzaSoftwareEntityModel.csdl|res://*/PizzaSoftwareEntityModel.ssdl|res://*/PizzaSoftwareEntityModel.msl; 
     provider=System.Data.SqlClient; 
     provider connection string=&quot; 
      Data Source=.\SQLEXPRESS; 
      Initial Catalog=SaharaPizza; 
      Integrated Security=True; 
      MultipleActiveResultSets=True 
     &quot;" 
     providerName="System.Data.EntityClient" 
/> 

¿Cuál podría ser la causa de este error?

+0

Para aclarar, el contenido de App.config es el mismo en ** both ** projects. –

Respuesta

10

En su app.config, la conexión de cadena mirada como ..

connection string=&quot; 
     Data Source=.\SQLEXPRESS; 
     Initial Catalog=SaharaPizza; 
     Integrated Security=True; 
     MultipleActiveResultSets=True 
    &quot; 

Observe el & quot. Intenta cambiar eso por una comilla simple '

+0

Tengo el mismo mensaje de error en un proyecto, y cambiar eso no ayudó. Es una prueba/proyecto paralelo, así que si tengo una solución, me aseguraré de dejar un comentario para ayudar a otra persona. –

+10

Ok, acabo de arreglar mi proyecto. Siempre compilaba bien, el problema con el mío era de un proyecto de prueba de unidad que necesitaba que añadiera la misma cadena de conexión al archivo App.Config en el proyecto de prueba de la unidad. Todo está arreglado para mí. Todavía tengo " y eso funciona bien para mí, pero he visto el sitio msdn donde esa comilla simple (') lo arregló. De cualquier manera ... no es un error "divertido" ya que es demasiado vago. Oh, bueno –

+0

como dijo tom, agregué la misma cadena de conexión de mi app.config a mi web.config. – Jarrette

0

La cadena de conexión se ve como una cadena válida para el proveedor de EntityClient, por lo que supongo que del mensaje de excepción que "la conexión especificada no se encuentra en la configuración".

El nombre de la cadena de conexión en la configuración es "SaharaPizzaEntities". ¿Especificó explícitamente la "conexión nombrada" cuando creó su contexto de objeto derivado?

La clase de contexto de objeto generado tiene varios constructores, uno es sin parámetros:

public EntityModelContainer() : base("name=EntityModelContainer", 
    "EntityModelContainer") 

name=EntityModelContainer es el nombre de cadena de conexión que debe coincidir con la cadena de conexión en el archivo de configuración ("SaharaPizzaEntities"). Usted podría cambiar el nombre en el archivo de configuración o utilizar el segundo constructor que permite definir el nombre de cadena de conexión de forma explícita:

public EntityModelContainer(string connectionString) : base(connectionString, 
    "EntityModelContainer") 
0

Tuve el mismo problema, así que estaba usando el hilo 2 como tú y pensé que era porque en la biblioteca no funciona, entonces lo puse en el proyecto principal y luego comience a trabajar completado con éxito. Esta podría ser una solución, no es lo que necesita, pero podría resolver con este

disculpe mi inglés.

espero que esto le

19

puede ayudar Copia <connectionStrings> de app.config de PizzaSoftware.Data a web.config de PizzaSoftware.UI y añadir a la web.config

<assemblies> 
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
</assemblies> 
+0

La solución de Albert Tolokonnikov funcionó para mí, He copiado las cadenas de conexión en el archivo web.config de my entity framework project en el archivo web.config de mi proyecto en ejecución. –

2

acabo de encontrar que si se crea directorio virtual para una aplicación en IIS desde VS2010 dos niveles de la raíz del sitio web se produciría este error. No estoy seguro de por qué sucede, tendría que investigar más. Por ejemplo, si su aplicación está en esta ruta: /admin/advertiser, aparecerá el error si no tiene el directorio virtual /admin en su sitio IIS.

Todo lo que hice fue crear un directorio admin vacío en mi .../intepub/wwwroot y el error desapareció.

Descubrirá que no podrá iniciar la depuración hasta que realice el paso anterior.

Tuvimos este problema en nuestro equipo en el pasado, nos tomó un tiempo recordarlo, pero así fue como lo arreglamos antes también.

+0

Por casualidad, tuve un proyecto VS 2010 abierto para ver algún código fuente cuando esto sucedió. Al cerrarlo, desapareció el error con VS 2015. Eso está mal. – user441058

0

El problema se puede resolver fácilmente. Simplemente copie su cadena de conexión del archivo Aap.Config al Web.config, esto seguramente ejecutará sus aplicaciones. Esto funciona bien para mí.
El error ocurre cuando tiene una clase de datos/entidad en otro proyecto y páginas web en un proyecto separado.

0

También estaba enfrentando el mismo problema en mi proyecto. Estaba teniendo 3 proyectos diferentes

  1. Datos en los que he agregado el marco entidad. este proyecto tenía el archivo App.config con la cadena de conexión
  2. Presentador: con mi Presentador
  3. Vista: con interfaz de usuario.

Acabo de copiar la cadena de conexión en la configuración de la aplicación de Ver y funciona bien.

y el motivo del problema era "" "La cadena de conexión no estaba disponible localmente, donde se requería" "".

0

Aquí es una cadena de conexión de ejemplo que no funcionaba

mi cadena de error dando conexión era

<connectionStrings> 
<add name="IEMRWEBSEntities" connectionString="metadata=res://*/IemrWebs.csdl|res://*/IemrWebs.ssdl|res://*/IemrWebs.msl;provider=System.Data.SqlClient;provider connection string=&quot;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&quot;" providerName="System.Data.EntityClient" /> 

El problema es que con la ruta

ver el * utiliza en la cadena de conexión

"metadata=res://*/IemrWebs.csdl|res://*/IemrWebs.ssdl|res://* 

reemplazar * con el espacio de nombres en el que se coloca el archivo edmx

lugar el espacio de nombres en lugar de * en el archivo de appconfig

mi espacio de nombres de edmx el archivo es IemrWebs.Data.Model así que he reemplazado * con IemrWebs.Data.Modelo véase más adelante y está trabajando A continuación se muestra la cadena de conexión correcta

<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=&quot;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&quot;" providerName="System.Data.EntityClient" /> 

0

Tengo mismo problema & he intentado todo el método mencionado. finalmente lo resolví como lo mencioné. En mi caso, tengo una capa de datos y una capa de presentación por separado. en mi app.config (capa de datos) tengo una conexión como esta.

<add name="LibraryMgtSysEntities" connectionString="metadata=res://*/DataLibraryMgtSys.csdl|res://*/DataLibraryMgtSys.ssdl|res://*/DataLibraryMgtSys.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=abc;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=123;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 

en mi i conexión configurada manualmente web.config de la siguiente manera:

<add name="DefaultConnection" providerName="System.Data.SqlClient" 
connectionString="Data Source=abc; 
Initial Catalog=LibraryMgtSys; 
Integrated Security=SSPI; 
user id=sa;password=123;" /> 

me da misma excepción como se mencionó anteriormente. así que lo resolví agregando el valor de app.config en el archivo de configuración web.

mi último archivo web.config de la siguiente manera:

<connectionStrings> 
    <clear /> 
    <add name="LibraryMgtSysEntities" connectionString="metadata=res://*/DataLibraryMgtSys.csdl|res://*/DataLibraryMgtSys.ssdl|res://*/DataLibraryMgtSys.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=TILANITHOTAMUNE\SQLEXPRESS;initial catalog=LibraryMgtSys;Persist Security Info=True;user id=sa;password=testing;MultipleActiveResultSets=True&quot;" 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> 
0

creo que su archivo de configuración no está en el proyecto web, es de alguna otra DLL .... no tan seguro ... pero la cadena de conexión debe estar en la web.config del proyecto que se está ejecutando ...

Cuestiones relacionadas