EF6中基於代碼進行配置方式
我們以前對EF進行配置時是在app.config/web.config下的<entityframework>節點下進行配置的,EF6引進了基於代碼的配置方法。我們可以根據喜好來選擇使用哪種配置方法,當同時使用代碼和配置文件進行配置時,最終使用的是配置文件中的配置(配置文件比代碼配置的優先級更高)。
1.代碼配置步驟
下邊看一個代碼配置的栗子,首先我們要新建一個集成DbConfiguration的類
public class FE6CodeConfig : DbConfiguration { public FE6CodeConfig() { //define configuration here } }
使用配置有兩種方法:
①修改app.config文件設置codeConfigurationType:
<entityFramework codeConfigurationType="EF6DBFirstTutorials.FE6CodeConfig, EF6DBFirstTutorials"></entityFramework>
②通過DbConfigurationType屬性標頭來配置:
注意:如果我們使用MySql數據庫的話,屬性標頭設置為 [DbConfigurationType(typeof(MySqlEFConfiguration))]
2.幾個常用的配置項
public class FE6CodeConfig : DbConfiguration { public FE6CodeConfig() { //設置默認的數據庫連接池 this.SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlConnectionFactory()); //設置數據庫提供者 this.SetProviderServices("System.Data.SqlClient", System.Data.Entity.SqlServer.SqlProviderServices.Instance); //設置數據庫初始化器(僅支持codeFirst模式) this.SetDatabaseInitializer<SchoolDBEntities>(new CustomDBInitializer<SchoolDBEntities>()); } }
對應的配置文件:
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> <contexts> <context type="EF6DBFirstTutorials.SchoolDBEntities, EF6DBFirstTutorials" > <databaseInitializer type="EF6DBFirstTutorials.CustomDBInitializer , EF6DBFirstTutorials"> </databaseInitializer> </context> </contexts> </entityFramework>
EF系列目錄鏈接:Entity Franmework系列教程匯總