2012-01-23 10 views
6

Postanowiłem przenieść Entity Connection String z app.config w celu zakodowania. Jednak po ustawieniu go tak:Entity Framework: Nie można załadować określonego zasobu metadanych.

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

mam wyjątek rzucony Unable to load the specified metadata resource. w .Designer.cs.

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

Gdybym zdefiniować pola .Name wewnątrz mojego Entity twórcy rzuca inny wyjątek

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

wiem, że czegoś brakuje, że muszę zmienić siebie tak, że wygenerowany kod wykorzystuje nowy ciąg połączenia ale gdzie go szukać?

+0

zobaczyć tutaj. to jest dobra odpowiedź :) http://stackoverflow.com/questions/689355/metadataexception-unable-to-load-te-specified-metadata-resource – Phil

Odpowiedz

26

Po przeczytaniu artykułu i this blogthis answers Zmieniłem:

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

Do:

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

I to działa :-)

+1

Wygląda na to, że dobre rozwiązanie, ale czy istnieje jakakolwiek szkoda w robieniu tego? –

+0

Nie, że wiem. Używam go od tamtego czasu do dziś;) – MadBoy

+0

Pracowałem dla mnie, chociaż mam trochę obaw, dlaczego ... – NibblyPig

Powiązane problemy