7

Tengo un proyecto de 3 niveles.EF4 y cadena de conexión

1) Project.Data (archivo EDMX)
2) Project.Model()
3) Project.Console (Consola de aplicación POCO)

He añadido la cadena de conexión en el Project.Console.

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
     <add name="ProjectEntities" connectionString="metadata=res://*/Project.csdl|res://*/Project.ssdl|res://*/Project.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=PC\SQLEXPRESS;Initial Catalog=Project;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

El Project.Model se construye usando la plantilla EntityObject T4 en VS2010. Genera una clase ObjectContext, con este constructor:

public ProjectEntities() : base("name=ProjectEntities", "ProjectEntities") 
{ 
    this.ContextOptions.LazyLoadingEnabled = true; 
    OnContextCreated(); 
} 

Sólo estoy tratando de crear una instancia del objeto context, en el Project.Console:

namespace Project.Console 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      ProjectEntities pe = new ProjectEntities(); 
     } 
    } 
} 

Sin embargo, estoy consiguiendo un error de MetadataException was unhandled en el constructor. Estableciendo Unable to load the specified metadata resource.

He hecho una tonelada de investigación (Google), y encontré que parece ser un problema de vinculación en esos recursos. Parece que no puedo encontrar una resolución.

Cualquier ayuda es apreciada.

+0

leí el artículo que Craig sugirió, pero estoy todavía incierto donde tengo que colocar el archivo DLL de referencia ...? Tengo un escenario como el tuyo. Estoy asumiendo en Project.Model's app.config? Tengo mi contexto y pocos puntos separados del archivo edm en un proyecto separado como en tu caso, Project.Model. –

+0

En mi proyecto de consola, necesitaba una referencia a mis datos (EDMX) y al proyecto modelo. También requería una referencia a System.Data.Entity. –

Respuesta

3

Abra su ensamblaje con cualquier visor de recursos (por ejemplo, RedGate .NET Reflector) y verifique que el nombre del recurso de metadatos sea el mismo que el especificado en app.config.

0

favor reemplazar el * con su montaje project.data, como a continuación

<add name="ProjectEntities" connectionString="metadata=res://Project.Data/Project.csdl|res://Project.Data/Project.ssdl|res://Project.Data/Project.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=PC\SQLEXPRESS;Initial Catalog=Project;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
Cuestiones relacionadas