Entity Framework入门教程(18)---EF6中基于代码进行配置方式

时间:2023-03-09 05:44:29
Entity Framework入门教程(18)---EF6中基于代码进行配置方式

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属性标头来配置:

Entity Framework入门教程(18)---EF6中基于代码进行配置方式

注意:如果我们使用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系列教程汇总