我试着用:
EnterpriseLibrary.Data.NetCore
.nuget\packages\enterpriselibrary.data.netcore\6.0.1313
https://www.nuget.org/packages/EnterpriseLibrary.Data.NetCore/
.NET核心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') (‘数据库提供程序工厂未为静态DatabaseFactory设置。通过调用DatabaseFactory.SetProviderFactory方法或通过调用DatabaseFactory.SetDatabases方法指定自定义映射来设置提供程序工厂’)时出现异常。
我找到了这个链接..。
Microsoft.Practices.EnterpriseLibrary.Data.DLL,但未在用户代码中处理
基于dotnet核心xml的“旧的”预dotnet。
我也是这个项目的网站
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
附录:
根据这些评论,我还研究了这个例子:
https://github.com/Chavoshi/EnterpriseLibrary.NetCore/tree/master/Examples
有一个例子是基于xml的,而不是基于json的。
发布于 2018-11-14 04:13:52
谢谢大家的解释。正如评论中所提到的@panagiotis-kanavos一样,向库添加JSON支持是一个重大的改变,需要付出很大的努力,而且我肯定不能单独这样做。
顺便说一句,我将以某种方式启动企业图书馆社区并使它再次活跃起来--我一直(而且现在)是它的粉丝,因为我个人认为它真的很方便,特别是在异常处理和Logging块方面--所以绝对添加JSON支持将是新的主要版本中的第一批更改之一。
但就目前而言,这个项目只是为了帮助那些希望在不改变基础设施的情况下将他们的旧项目转换为.Net核心的人。
最后,我很感谢有人能在社区上帮助我,因为我已经开始与微软讨论这个问题,并等待他们决定让我用新版本更新官方软件包,以防我们继续更新库。
发布于 2022-03-26 16:04:33
这是有办法的。
这是我的appsettings.json
{
"APP": {
"APP_NAME": "EOD.BACKUP.JOB",
"APP_AUTHOR": "Lutaaya Fauzi"
},
"LOGGING": {
"LOG_FILE_EXXT": "log",
"LOG_FILE_PRFX": "DailyEODBackUp",
"LOG_FILE_PATH": "D:\\109\\APP_LOGS\\EODDataBackUpJob"
},
"DATABASE_PROVIDERS": {
"ODBC": "System.Data.Odbc",
"MSSQL": "System.Data.SqlClient"
},
"DATABASE": {
"XVERSEDB": {
"DBMS": "ORACLE",
"CONN_STRING": "Dsn=XEPDB1; Pwd=XVERSE",
"DSN": "XEPDB1",
"PWD": "XVERSE"
},
"E4MDB": {
"DBMS": "ORACLE",
"CONN_STRING": "Dsn=XEPDB1_E4M; Pwd=E4M",
"DSN": "XEPDB1_E4M",
"PWD": "E4M"
},
"LIVEEXIMSUPPORTDB": {
"DBMS": "MSSQL",
"CONN_STRING": "Data Source=DESKTOP-NL8PUQI\\SQLEXPRESS;Initial Catalog=LIVEEXIMSUPPORTDB;User ID=sa;Password=bundestag",
"DATA_SOURCE": "DESKTOP-NL8PUQI\\SQLEXPRESS",
"DATABASE": "LIVEEXIMSUPPORTDB",
"USER": "XEPDB1",
"PASSWORD": "XVERSE"
}
}
}这是我的DBOperations.cs课
using Microsoft.Extensions.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.Odbc;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EODDataBackUpJob
{
internal class DBOperations
{
#region ... VARIABLES
// ... configuration
IConfiguration appconfig = new ConfigurationBuilder().AddJsonFile("appsettings.json").AddEnvironmentVariables().Build();
ApplicationLogger applogger = new ApplicationLogger();
private Database XVERSEDB, EXIMDB, E4MDB;
private DbCommand mycommand;
#endregion
#region ... Database Connection
public DBOperations()
{
try
{
#region ... Register Database Factories
string ODBC_PROVIDER = appconfig["DATABASE_PROVIDERS:ODBC"];
string MSSQL_PROVIDER = appconfig["DATABASE_PROVIDERS:MSSQL"];
DbProviderFactories.RegisterFactory(ODBC_PROVIDER, OdbcFactory.Instance);
DbProviderFactories.RegisterFactory(MSSQL_PROVIDER, SqlClientFactory.Instance);
DbProviderFactory ODBC_FACTORY_PROVIDER = DbProviderFactories.GetFactory(ODBC_PROVIDER);
DbProviderFactory MSSQL_FACTORY_PROVIDER = DbProviderFactories.GetFactory(MSSQL_PROVIDER);
#endregion
// ... XVERSEDB
string XVERSEDB_CONN = appconfig["DATABASE:XVERSEDB:CONN_STRING"];
XVERSEDB = new GenericDatabase(XVERSEDB_CONN, ODBC_FACTORY_PROVIDER);
// ... EXIMDB
string EXIMDB_CONN = appconfig["DATABASE:LIVEEXIMSUPPORTDB:CONN_STRING"];
EXIMDB = new GenericDatabase(EXIMDB_CONN, MSSQL_FACTORY_PROVIDER);
// ... E4MDB
string E4MDB_CONN = appconfig["DATABASE:E4MDB:CONN_STRING"];
E4MDB = new GenericDatabase(E4MDB_CONN, ODBC_FACTORY_PROVIDER);
}
catch (Exception ex)
{
string msg = ex.Message;
string stack_trace = ex.StackTrace;
applogger.LogToFile("DBOperations.DBOperations", msg);
applogger.LogToFile("DBOperations.DBOperations", stack_trace);
applogger.LogFileSeparator();
}
}
#endregion
#region ... oracle DB
public void ExecuteDBReport()
{
try
{
DataTable result = new DataTable();
////mycommand = XVERSEDB.GetStoredProcCommand("UATJUN.SP_NPA_MANUAL_PROCESS", "28/02/2022", "");
//XVERSEDB.ExecuteDataSet(mycommand);
mycommand = E4MDB.GetSqlStringCommand("SELECT * FROM E4M.CFG_BILLER");
mycommand.CommandTimeout = 5000;
result = E4MDB.ExecuteDataSet(mycommand).Tables[0];
}
catch (Exception ex)
{
string msg = ex.Message;
string stack_trace = ex.StackTrace;
applogger.LogToFile("DBOperations.ExecuteDBReport", msg);
applogger.LogToFile("DBOperations.ExecuteDBReport", stack_trace);
applogger.LogFileSeparator();
}
}
#endregion
}
}此示例涵盖通过ODBC数据源进行的oracle数据库连接,以及通过ODBC Datasource进行的MSSQL连接。
现在可以申请其他数据库,如MySQL。
对于.NET core,它应该工作得很好。
谢谢
https://stackoverflow.com/questions/53263204
复制相似问题