33

首先使用實體​​框架4.1代碼時出現此錯誤。我找不到什麼來源。實體框架代碼優先和連接字符串問題

Unable to load the specified metadata resource. 

<add name="DataContext" connectionString="metadata=res://*/GrassrootsHoopsDataContext.csdl|res://*/GrassrootsHoopsDataContext.ssdl|res://*/GrassrootsHoopsDataContext.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=myserver.com;Initial Catalog=MyDataBase;Persist Security Info=True;User ID=username;Password=password&quot;" providerName="System.Data.EntityClient" /> 
+1

順便說一句,我認爲這種類型的ConnectionStrings的「元數據。」僅適用於第一模型和數據庫第一 – Prokurors

回答

65

對於EF代碼首先,如果您使用的是SQL Server,則可以使用普通連接字符串。

<add name="DataContext" connectionString="Data Source=myserver.com;Initial Catalog=MyDataBase;Persist Security Info=True;User ID=username;Password=password" providerName="System.Data.SqlClient" /> 
+0

謝謝,最後一個正確的答案。我只浪費了一天中最好的一部分來嘗試查找或生成元數據文件... – cdonner

+0

謝謝。我有同樣的問題,但我也必須糾正我通過控制器的構造函數動態構建並傳遞到DbContext中的'ConnectionString'。 –

0

如果您爲Code First Entity Framework創建動態連接字符串,那麼您只能使用如下所示的Sql Connection String Builder創建動態連接字符串。

public static string DynamicConnectionString(SqlConnectionStringBuilder builder) 
{ 
    SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); 
    builder.DataSource = "ServerName"; 
    builder.InitialCatalog = "DatabaseName"; 
    builder.UserID = "UserId"; 
    builder.Password = "Password"; 
    builder.MultipleActiveResultSets = true; 
    builder.PersistSecurityInfo = true;  
    return builder.ConnectionString.ToString(); 
}