猿教程 Logo

基于代码的配置

阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效:去购买

Entity Framework 6引入了基于代码的配置。 现在,您可以使用代码配置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>

设置Database 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>

设置数据库初始化器:

您可以使用基于代码的配置设置数据库初始化程序(仅限Code-First),如下所示:

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>
阿里云服务器,每月低至7.8元,项目演示即建站必备,比腾讯云更便宜,并且不需学生认证,从此链接购买有效: 去购买


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/entity/code-based-configuration.html