2012-01-23 42 views
6

我決定將Entity Connection Stringapp.config移至代碼。設置它像這樣但是經過:實體框架:無法加載指定的元數據資源

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

我在拋出了.Designer.cs的Unable to load the specified metadata resource.例外。

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

如果我定義我的實體創造者裏面,請將.Name它拋出另一個異常

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

要:

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

和它的作品:-)

+1

看起來很好的解決方案,但沒有任何危害在這樣做? –

+0

不是我所知道的。從那時起,我一直在使用它,直到今天;) – MadBoy

+0

爲我工作,雖然我有一點關注爲什麼... – NibblyPig

相關問題