我正在尝试使用:
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的。
答案 0 :(得分:2)
谢谢大家的解释。正如@ panagiotis-kanavos在评论中还提到的那样,向库中添加JSON支持是一项重大更改,需要大量的努力,并且可以肯定,我无法单独完成它。
顺便说一句,我将以某种方式启动Enterprise Library Community并使它再次生效-就像我一直(并且一直)喜欢它一样,因为我个人认为它非常方便,特别是在 Exception Handling中和 Logging 块-因此,绝对添加JSON支持将是新主要版本中的第一批更改之一。
但是目前,该项目只是在帮助那些希望将旧项目转换为.Net Core的人,而他们所面临的挑战却更少,而无需更改基础架构。
最后,我很高兴有人能在社区中为我提供帮助,因为我已经开始与Microsoft讨论此主题,并等待他们的决定让我用新版本更新官方软件包,以防万一。继续更新库。