2011-10-26 130 views
2

有沒有辦法將連接字符串傳遞給DbContext構造函數。 我真的很討厭在應用程序或web.config中配置設置的想法DbContext和連接字符串(提供程序沒有返回ProviderManifestToken字符串)

當你想引用你的dll包含你的EF模型時,你必須知道複製那個愚蠢的配置,而不是讓它在一箇中心位置,並具有構造函數訪問該設置,無論在哪裏去。

這是可能的還是我們被迫忍受這種挫折?並非每個EF模型都存在於Web應用程序或exe文件中。

感謝

UPDATE: 我認爲這是錯誤相關的配置文件中缺少連接字符串。我傳遞了一個SqlConnection對象,它給了我同樣的錯誤。爲什麼會發生這種錯誤?

回答

2

您可以使用帶有可以是連接字符串的字符串的DbContext constructor重載。

string connectionString = "metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=\"data source=localhost;initial catalog=Test;integrated security=True;multipleactiveresultsets=True;App=EntityFramework\""; 
using (DbContext db = new DbContext(connectionString)) 
{ 
    var m = db.Set<Main>().Take(1).First(); 
    Console.WriteLine(m.Id); 
} 
+1

這是我在做什麼,但每次我不針對我的本地\ SQLEXPRESS實例會引發和錯誤:'提供者未返回ProviderManifestToken string.' –

+0

不知道爲什麼你得到這個錯誤。我從配置文件複製了連接字符串,創建了一個'DbContext'並且它工作。將編輯答案以包含用於比較的代碼。 –

+0

您是否需要在連接字符串中指定元數據文件才能使其工作?我認爲POCO方法不需要任何這種元數據。我爲現有數據庫傳遞了一個普通的SQL Server連接字符串,我不打算修改其結構。 –

相關問題