2012-01-23 3 views
6

Я решил переместить Entity Connection String с app.config в код. Однако после установки его, как это:Entity Framework: Не удалось загрузить указанный ресурс метаданных

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; 
    } 

У меня есть исключение брошенного Unable to load the specified metadata resource. в .Designer.cs.

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

Если я определяю .name внутри моего Entity создателя он бросает еще одно исключение

"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"

Я знаю, что то, что я должен изменить так, что отсутствует само сгенерированный код использует новую строку подключения но где его искать?

+0

посмотреть здесь. это способ хороший ответ :) http://stackoverflow.com/questions/689355/metadataexception-unable-to-load-the-specified-metadata-resource – Phil

ответ

26

this answers После прочтения статьи и this blog я изменил:

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

To:

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

И это работает :-)

+1

Похоже, хорошее решение, но есть какой-либо вред в этом? –

+0

Не знаю. Я использую его с этого времени до сегодняшнего дня;) – MadBoy

+0

Работал для меня, хотя у меня есть немного беспокойства по поводу того, почему ... – NibblyPig

Смежные вопросы