2012-01-23 18 views
6

Decidí mover Entity Connection String de app.config al código. Sin embargo después de su puesta en marcha como esto:Entidad Marco: no se puede cargar el recurso de metadatos especificado

public static string GetConnectionString() { 
     string connection = ""; 

     SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder(); 
     sqlBuilder.DataSource = dbServer; 
     sqlBuilder.InitialCatalog = dbInitialCatalog; 

     sqlBuilder.IntegratedSecurity = false; 
     sqlBuilder.UserID = dbUserName; 
     sqlBuilder.Password = dbPasswWord; 
     sqlBuilder.MultipleActiveResultSets = true; 

     EntityConnectionStringBuilder entity = new EntityConnectionStringBuilder(); 
     // entity.Name = "EntityBazaCRM"; 
     entity.Metadata = @"res://*/Data.System.csdl|res://*/Data.System.ssdl|res://*/Data.System.msl"; 

     entity.Provider = "System.Data.SqlClient"; 
     entity.ProviderConnectionString = sqlBuilder.ToString(); 

     connection = entity.ToString(); 

     return connection; 
    } 

Tengo una excepción lanzada Unable to load the specified metadata resource. en .Designer.cs.

/// <summary> 
    /// Initialize a new EntityBazaCRM object. 
    /// </summary> 
    public EntityBazaCRM(string connectionString) : base(connectionString, "EntityBazaCRM") 
    { 
     this.ContextOptions.LazyLoadingEnabled = true; 
     OnContextCreated(); 
    } 

Si defino .Nombre dentro de mi creador Entidad se lanza otra excepción

"Other keywords are not allowed when the 'Name' keyword is specified." (System.ArgumentException) Exception Message = "Other keywords are not allowed when the 'Name' keyword is specified.", Exception Type = "System.ArgumentException"

Sé que me falta algo que tengo que cambiar para que el código generado utiliza auto nueva cadena de conexión pero ¿dónde buscarlo?

+0

ver aquí. esta es una manera buena respuesta :) http://stackoverflow.com/questions/689355/metadataexception-unable-to-load-the-specified-metadata-resource – Phil

Respuesta

26

Después de leer el artículo y this answersthis blog he cambiado:

entity.Metadata = @"res://*/Data.System.csdl|res://*/Data.System.ssdl|res://*/Data.System.msl"; 

Para:

entity.Metadata = "res://*/"; 

y funciona :-)

+1

Parece buena solución, pero ¿hay algún daño ¿al hacer esto? –

+0

No es que yo sepa. Lo estoy usando desde ese momento hasta hoy;) – MadBoy

+0

Funcionó para mí, aunque tengo un poco de preocupación sobre por qué ... – NibblyPig

Cuestiones relacionadas