【问题标题】:Set provider name manually in DbContext constructor在 DbContext 构造函数中手动设置提供者名称
【发布时间】:2017-06-22 06:06:43
【问题描述】:

我需要将连接字符串存储在 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 分配给上下文。我该怎么做?

【问题讨论】:

    标签: entity-framework dbcontext dataprovider


    【解决方案1】:

    可以在 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)

    【讨论】:

      猜你喜欢
      • 2015-08-11
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      相关资源
      最近更新 更多