在DbContext构造函数中手动设置提供程序名称

时间:2017-06-22 06:06:43

标签: entity-framework dbcontext dataprovider

我需要将连接字符串存储在除web.config之外的其他位置。货币我使用.json文件来存储它,并使用静态类来读取它。

这是我的数据背景 -

public partial class MyDatabaseContext : DbContext
{
    public MyDatabaseContext() : base()
    {            
        Database.Connection.ConnectionString = GlobalConfig.ConnectionString;
    }
}

这是GlobalConfig类

public static class GlobalConfig
{
    public static string ConnectionString
    {
        get
        {
            return "Server=MyServer; Database=MyDb; Integrated Security=SSPI;";
        }
    }
}

我需要将提供程序名称System.Data.SqlClient分配给上下文。我怎么能在这里做到这一点?

1 个答案:

答案 0 :(得分:0)

可以在DbContext构造函数中加载 DbConfiguration

定义一个实现DbConfiguration的类(在本例中为Oracle)

     public class AppDbConfiguration : DbConfiguration
{
    public AppDbConfiguration()
    {            
        // use code based configuration
        SetDefaultConnectionFactory(new OracleConnectionFactory());
        SetProviderServices("Oracle.ManagedDataAccess.Client",EFOracleProviderServices.Instance);
        SetProviderFactory("Oracle.ManagedDataAccess.Client", new OracleClientFactory());

    }
}

在您的上下文中使用

    public AppDbContext(string connString) : base(connString)
    {
        DbConfiguration.SetConfiguration(new AppDbConfiguration());     

    }

不要忘记为您的提供商安装当前包(在此示例中为nuget包管理器提供的ODP.net)