【译】第38节---EF6-基于代码的配置
原文:http://www.entityframeworktutorial.net/entityframework6/code-based-configuration.aspx
EF6引入了基于代码的配置。你仍可以使用以前在app.config的<entityframework>节点中配置的代码来配置Entity Framework相关设置。
但是,app.config优先于基于代码的配置。 换句话说,如果在代码和配置文件中都设置了配置选项,则使用配置文件中的设置。
我们来看看如何使用Entity Framework 6实现基于代码的配置。
首先,需要创建一个派生DbConfiguration(System.Data.Entity.DbConfiguration)类的新类:
public class FE6CodeConfig : DbConfiguration { public FE6CodeConfig() { //define configuration here } }
现在,可以在配置文件中设置codeConfigurationType,如下所示:
<entityFramework codeConfigurationType="EF6DBFirstTutorials.FE6CodeConfig, EF6DBFirstTutorials"> </entityFramework>
或者可以使用上下文类中的DbConfigurationType属性来设置基于代码的配置类:

注意:EF不支持在同一AppDomain中使用多个配置类。 如果使用此属性为两个上下文设置不同的配置类,则会抛出异常。
现在,可以在构造函数中使用DbConfiguration的不同方法,如下所示:

让我们看看如何使用基于代码的配置以及配置文件进行不同的设置。
设置默认连接工厂
基于代码的配置:
public class FE6CodeConfig : DbConfiguration { public FE6CodeConfig() { this.SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlConnectionFactory()); } }
基于配置文件:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
设置数据库Provider
基于代码的配置:
public class FE6CodeConfig : DbConfiguration { public FE6CodeConfig() { this.SetProviderServices("System.Data.SqlClient", System.Data.Entity.SqlServer.SqlProviderServices.Instance); } }
基于配置文件:
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
设置数据库初始化
基于代码的配置:
public class FE6CodeConfig : DbConfiguration { public FE6CodeConfig() { this.SetDatabaseInitializer<SchoolDBEntities>(new CustomDBInitializer<SchoolDBEntities>()); } }
基于配置文件:
<entityFramework>
<contexts>
<context type="EF6DBFirstTutorials.SchoolDBEntities, EF6DBFirstTutorials" >
<databaseInitializer type="EF6DBFirstTutorials.CustomDBInitializer , EF6DBFirstTutorials">
</databaseInitializer>
</context>
</contexts>
</entityFramework>

浙公网安备 33010602011771号