首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有企业库数据( dotNet )和JSON的EnterpriseLibrary.Data.NetCore核心(控制台应用程序)

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

Stack Overflow用户
提问于 2018-11-12 13:28:14
回答 2查看 5.3K关注 0票数 2

我试着用:

EnterpriseLibrary.Data.NetCore

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

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

.NET核心2.1

我有下面的JSON

代码语言:javascript
复制
{
  "ConnectionStrings": {
    "MyDefaultConnectionName": "Server=.\\MyInstance;Database=MyDB;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
}

这段代码运行良好(在我的Program.cs dotnet控制台应用程序中)(简单地显示我的appsettings.json正在被拾取,并且看起来我的连接字符串json结构看起来是正确的。)

代码语言:javascript
复制
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‘

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

代码语言:javascript
复制
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中浪费时间)

代码语言:javascript
复制
{
  "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的。

EN

回答 2

Stack Overflow用户

发布于 2018-11-14 04:13:52

谢谢大家的解释。正如评论中所提到的@panagiotis-kanavos一样,向库添加JSON支持是一个重大的改变,需要付出很大的努力,而且我肯定不能单独这样做。

顺便说一句,我将以某种方式启动企业图书馆社区并使它再次活跃起来--我一直(而且现在)是它的粉丝,因为我个人认为它真的很方便,特别是在异常处理和Logging块方面--所以绝对添加JSON支持将是新的主要版本中的第一批更改之一。

但就目前而言,这个项目只是为了帮助那些希望在不改变基础设施的情况下将他们的旧项目转换为.Net核心的人。

最后,我很感谢有人能在社区上帮助我,因为我已经开始与微软讨论这个问题,并等待他们决定让我用新版本更新官方软件包,以防我们继续更新库。

票数 3
EN

Stack Overflow用户

发布于 2022-03-26 16:04:33

这是有办法的。

这是我的appsettings.json

代码语言:javascript
复制
{

  "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课

代码语言:javascript
复制
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,它应该工作得很好。

谢谢

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53263204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档