具有企业库数据(EnterpriseLibrary.Data.NetCore)和JSON的dotNet核心(控制台应用程序)

时间:2018-11-12 13:28:15

标签: c# .net-core enterprise-library

我正在尝试使用:

EnterpriseLibrary.Data.NetCore

.nuget \ packages \ enterpriselibrary.data.netcore \ 6.0.1313

https://www.nuget.org/packages/EnterpriseLibrary.Data.NetCore/

.NET Core 2.1

我有以下JSON

{
  "ConnectionStrings": {
    "MyDefaultConnectionName": "Server=.\\MyInstance;Database=MyDB;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
}

并且此代码工作正常(在我的Program.cs dotnet控制台应用程序中)(简单地显示出正在拾取我的appsettings.json,并且看起来我的连接字符串json结构看起来正确。

using Microsoft.Extensions.Configuration;

            IConfiguration config = new ConfigurationBuilder()
                    .SetBasePath(System.IO.Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                    .Build();


            string conString = Microsoft
               .Extensions
               .Configuration
               .ConfigurationExtensions
               .GetConnectionString(config, "MyDefaultConnectionName");

            Console.WriteLine("MyDefaultConnectionName.conString='{0}'", conString);

我看到:

  

MyDefaultConnectionName.conString ='Server =。\ MyInstance; Database = MyDB; Trusted_Connection = True; MultipleActiveResultSets = true'

但是,我使用代码的尝试失败:

using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data;
using System.Data.Common;

    public DataSet GetADataSet()
    {
        DataSet returnDs = null;
        string sql = "Select * from dbo.MyTable";

        try
        {

            DatabaseProviderFactory factory = new DatabaseProviderFactory();
            Database db = DatabaseFactory.CreateDatabase("MyDefaultConnectionName");
            DbCommand dbc = db.GetSqlStringCommand(sql);
            returnDs = db.ExecuteDataSet(dbc);
        }
        catch (Exception ex)
        {
            string temp = ex.Message;
            throw ex;
        }

        return returnDs;
    }

例外是:

在运行“从dbo.MyTable中选择*”时发生异常。 .SetDatabases方法。')

我找到了此链接。...

Microsoft.Practices.EnterpriseLibrary.Data.DLL but was not handled in user code

“基于”较旧的dotnet核心xml前版本。

我也去过项目网站

https://github.com/Chavoshi/EnterpriseLibrary.NetCore

但找不到有效的示例

... 关于我上面的代码行:

DatabaseProviderFactory myFactory =新的DatabaseProviderFactory();

和错误消息:

DatabaseFactory.SetProviderFactory

myFactory没有方法SetProviderFactory

........

我尝试过...(但是我知道它确实与xml属性不同(以后的读者,请不要在下面的json上浪费时间)

{
  "ConnectionStrings": {
    "MyDefaultConnectionName": "Server=.\\MyInstance;Database=MyDB;Trusted_Connection=True;MultipleActiveResultSets=true",
    "providerName": "System.Data.SqlClient"
  }
}

使用什么神奇的语法糖

https://github.com/Chavoshi/EnterpriseLibrary.NetCore

使用dotnet核心控制台应用程序?使用JSON

APPEND:

根据评论,我也跟踪了这个示例:

https://github.com/Chavoshi/EnterpriseLibrary.NetCore/tree/master/Examples

一个例子是基于xml的,而不是基于json的。

1 个答案:

答案 0 :(得分:2)

谢谢大家的解释。正如@ panagiotis-kanavos在评论中还提到的那样,向库中添加JSON支持是一项重大更改,需要大量的努力,并且可以肯定,我无法单独完成它。

顺便说一句,我将以某种方式启动Enterprise Library Community并使它再次生效-就像我一直(并且一直)喜欢它一样,因为我个人认为它非常方便,特别是在 Exception Handling中 Logging 块-因此,绝对添加JSON支持将是新主要版本中的第一批更改之一。

但是目前,该项目只是在帮助那些希望将旧项目转换为.Net Core的人,而他们所面临的挑战却更少,而无需更改基础架构。

最后,我很高兴有人能在社区中为我提供帮助,因为我已经开始与Microsoft讨论此主题,并等待他们的决定让我用新版本更新官方软件包,以防万一。继续更新库。