将DbConnectionFactory从.NET迁移到.NET Core

4

我正在尝试将一个小的.net framework项目迁移到.net core。但是,我花了几个小时搜索如何将下面的代码适应于.net core 2.0。但是我很不幸,因为似乎由于某种原因,System.Data.Common功能被删除了。所以,我有两个问题:

  1. How to get provider name from connection string? Do we have ConnectionStringSettings for .net core 2.0
  2. How can we get a factory base only on provider name string? Any other thought how to perform loosely coupled db connection factory

    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;
            }
        }
    }
    

你尝试在NuGet中搜索“System.Data.Common”了吗?版本4.3.0应该适用于.NET Core 2。 - Camilo Terevinto
@Camilo Terevinto,我已经将最新版本4.3.0安装到我的项目中,但我仍然无法引用DbProviderFactories。 - managerger
错误信息是什么?因为它确实存在:https://github.com/dotnet/corefx/blob/master/src/System.Data.Common/src/System/Data/Common/DbProviderFactory.cs - Camilo Terevinto
很抱歉,@Camilo Terevinto,它并不适用。我正在寻找DbProviderFactories,而您提供的参考是DbProviderFactory。这是一个抽象类,我需要以某种方式获取其实例。之前我是这样做的:DbProviderFactories.GetFactory(settings.ProviderName); - managerger
让我们在聊天中继续讨论 - managerger
显示剩余4条评论
1个回答

7

DbProviderFactories 将在 .net core 2.1 (2018年第二季度) 中推出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接