【发布时间】:2018-11-12 13:28:14
【问题描述】:
我正在尝试使用:
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;
}
例外是:
运行'Select * from dbo.MyTable' ('MyDefaultConnectionName') ('Database provider factory not set for the static DatabaseFactory. 设置提供者工厂调用 DatabaseFactory.SetProviderFactory 方法或通过调用 DatabaseFactory 指定自定义映射时出现异常.SetDatabases 方法。')
我找到了这个链接....
Microsoft.Practices.EnterpriseLibrary.Data.DLL but was not handled in user code
到“旧的”基于 dotnet 核心 xml 的版本。
我也做过项目网站
https://github.com/Chavoshi/EnterpriseLibrary.NetCore
但找不到工作示例
..... 关于我上面的代码行:
DatabaseProviderFactory myFactory= new 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
追加:
基于cmets,我也追过这个例子:
https://github.com/Chavoshi/EnterpriseLibrary.NetCore/tree/master/Examples
一个例子是基于 xml,而不是基于 json。
【问题讨论】:
-
你检查example code了吗?
-
@DavidG。这有点帮助。我看到有些方法是静态方法,而不是实例方法。但现在我得到:数据库“DefaultConnection”的连接字符串不存在或没有有效的提供者。请参阅我的“未来读者”,在那里我尝试找到在 json 中设置 providerName 的方法,就像在 xml 中所做的那样。
-
@DavidG .. 你给出的例子....有点帮助。我指出该示例是基于 xml 的。查看兄弟文件:github.com/Chavoshi/EnterpriseLibrary.NetCore/blob/master/…
-
是的,几天前我确实看到了那个例子。 (在:github.com/Chavoshi/EnterpriseLibrary.NetCore/tree/master/… 给出的单个示例)它是基于 xml 的。这才是主要问题,让世界快乐的~json~魔法酱是什么。
-
那不是微软的企业图书馆数据访问组件,那是某人的带有克隆代码和文本的仓库。你为什么首先使用它?当 ADO.NET 2.0 出现时,contained almost all of the old EntLib's data access patterns。结果,Entlib Data 被放弃了。为什么在 ADO.NET 提供自己的
DbProviderFactories.GetFactory(providerName);等时使用DatabaseFactory.CreateDatabase?
标签: c# .net-core enterprise-library