none
Entity Framework 5, no encuentra la base de datos RRS feed

  • Pregunta

  • Tengo una aplicacion que adquiere desde una BD sql server el modelo con EF5

    La aplicacion compila sin problemas, pero al iniciar, y llegar al siguiente codigo

      

                using (var ctx = new CentrosEntities())
                {
                    var listado = ctx.ObtenerHorasPorFecha(dtFechaHorasRegistradas.Date)
                        .ToList<ObtenerHorasPorFecha_Result>();
                    return listado;
                }

    me aparece un mensaje de error (al revisar el estado de la variable ctx que indica que no encontro la cadena de conexion

    base {System.SystemException} = {"No se encuentra ninguna cadena de conexión denominada 'CentrosEntities' en el archivo de configuración de la aplicación."}

    sin embargo, esta cadena si existe en el app.config 

     <connectionStrings>
        <add name="CentrosEntities" connectionString="metadata=res://*/Centros.csdl|res://*/Centros.ssdl|res://*/Centros.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=FCO-PC;initial catalog=Centros;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
      </connectionStrings>

    y la aplicacion muestra el form de inicio, pero obviamente sin los datos que deberian aparecer en datagridviews desplegados.

    Alguna idea que  puede estar pasando??

    Saludos

    viernes, 9 de agosto de 2013 23:10

Todas las respuestas

  • hola

    que tipo de aplciacion se trata ? es web o desktop

    el  <connectionStrings> en que archivo de config lo defines, porque si lo ahs puesto en un proyecto del tipo Class Library no va a funcionar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 10 de agosto de 2013 15:42
  • Hola Leandro, gracias por tu tiempo.

    La aplicación es desktop, y efectivamente, la capa de acceso a datos esta en un proyecto del tipo class library.

    anteriormente había comenzado todo como una prueba, y el archivo edmx estaba en el proyecto winform, y ahí funcionaba bien, al querer mover la aplicación  una capa distinta, dejo de responder. 

    en que proyecto debe ir el conection string??

    Saludos

    lunes, 12 de agosto de 2013 12:26
  • Hola Gfabres,

    La cadena de conexión debe estar en el proyecto de la App que se inicia, no en el proyecto (librería de clases) donde se ubica el acceso a datos. Si no te funciona escribe la lista de proyectos y el tipo y te indico cual es.

    Espero haberte ayudado.


    @XaviPaper
    http://geeks.ms/blogs/xavipaper

    lunes, 12 de agosto de 2013 13:56
  • Hola XaviPaper, gracias por responder.

    Mira, entiendo lo que indicas, e hice la prueba de poner en el app.config de la aplicacion principal el conextionString.

    la aplicacion es bastante sencilla, tiene 2 proyectos uno de ellos es del tipo class library, y se llama DataAccess, y es en donde se posiciona el archivo edmx con el modelo, y las clases que se agregan via referencia en el otro proyecto que es del tipo winfrom, y que se llama centros, el cual hacer referencia al otro proyecto.

    Como te mencionaba antes, puse la cadena de conexion en ese app.config de esta manera

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      </configSections>
      <connectionStrings>
        <add name="CentrosEntities" connectionString="metadata=res://*/Centros.csdl|res://*/Centros.ssdl|res://*/Centros.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=FCO-PC;initial catalog=Centros;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
      </connectionStrings>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
          <parameters>
            <parameter value="v11.0" />
          </parameters>
        </defaultConnectionFactory>
      </entityFramework>
    </configuration>

    lo que no encuentro, es el punto en donde se le indica al compilador, que busque en este proyecto winform, y no en el otro (class library)

    Sabes tu donde debo cambiar ese detalle, que me imagino es lo que me debe estar faltando para que funcione correctamente

    agradecido de tu tiempo,

    Saludos

    Gabriel Fabres

    lunes, 12 de agosto de 2013 16:49
  • Realmente tiene que indicarle donde están los ficheros de EF. Mira esto para ver si puede ayudarte http://msdn.microsoft.com/es-es/library/cc716756.aspx

    @XaviPaper
    http://geeks.ms/blogs/xavipaper

    lunes, 12 de agosto de 2013 17:37
  • Finalmente despues de mucho buscar, encontre la explicacion y una muy buena demostracion de como desarrollar un proyecto en capas en el siguiente video, en donde de forma muy clara se explica el porque de este problema. http://www.youtube.com/watch?v=vip9PsF1rvE

    Gracias a todos por su coolaboracion en el tema

    jueves, 12 de septiembre de 2013 12:20