2013-03-29 69 views
6

所以我一直在使用實體框架一段時間(在我的主項目v5上)。我一直有一個問題,但永遠找不到明確的答案 - 連接字符串的名稱是否必須與我的DbContext的名稱匹配才能正確工作?連接字符串名稱和實體框架

看起來是這樣(我從來沒有做過什麼不同),但我寧願不必須提供在我的web.config「神奇字符串」爲了EF工作。在我看來,更好的做法是將DefaultConnection作爲名稱並將EF連接起來。

這裏是我的web.config(一些名字改)參考文獻:

<connectionStrings> 
    <add name="MyContext" connectionString="Data Source=|DataDirectory|MyDatabase.sdf" providerName="System.Data.SqlServerCe.4.0" /> 
</connectionStrings> 

......然後......越往下......

<entityFramework> 
    <contexts> 
     <context type="MyProject.Path.To.MyContext, MyProject.Path.To, Version=1.0.0.0, Culture=neutral"> 
     <databaseInitializer type="MyProject.Path.To.MyInitializer, MyProject" /> 
     </context> 
    </contexts> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
</entityFramework> 

任何有識之士將不勝感激。

+0

這是默認的慣例,使用命名相同,您'DbContext'類的連接字符串。 – jrummell

回答

11

有一個問題我一直有,但永遠無法找到一個明確的答案 對 - 不我的連接字符串的名稱,還要爲了EF正常工作符合我的DbContext的 名字?

號你可以通過一個連接字符串名稱到基礎構造函數的DbContext,即

public class MyDbContext : DbContext 
{ 
    public MyDbContext() 
     : base("MyConnectionStringName") 
    { 

    } 
} 

還有,如果你喜歡自己創建的連接,需要一個DbConnection參數上DbContext構造。

最後,您可以提供自己的實現IDbConnectionFactory並使用它代替app.config中指定的默認LocalDbConnectionFactory。你改變它在配置或者您在運行時進行如下設置:

Database.DefaultConnectionFactory = new MyCustomConnectionFactory();