将DbConnectionFactory从.net迁移到.NET核心

man*_*ger 3 .net c# .net-core

我正在尝试将一个小的.net框架项目迁移到.net核心项目.但我花了几个小时搜索如何将以下代码用于.net core 2.0.但我不走运,因为似乎System.Data.Common功能因某种原因被削减了.所以,我在这里有两个问题:

  1. 如何从连接字符串中获取提供程序名称?我们是否有针对.net core 2.0的ConnectionStringSettings
  2. 我们如何只在提供者名称字符串上获得工厂基础?任何其他想法如何执行松耦合数据库连接工厂

    public class ConnectionFactory
    {
        protected readonly DbProviderFactory Factory;
    
        protected readonly string ConnectionString;
    
        public ConnectionFactory(string connectionStringName)
        {
            var settings = ConfigurationManager.ConnectionStrings[connectionStringName];
            this.Factory = DbProviderFactories.GetFactory(settings.ProviderName);
            this.ConnectionString = settings.ConnectionString;
        }
    
        public DbConnection Connection
        {
            get
            {
                var con = Factory.CreateConnection();
                con.ConnectionString = this.ConnectionString;
                return con;
            }
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

man*_*ger 5

DbProviderFactories将在.net core 2.1(2018年第二季度)中提供.