using Dapper; using Microsoft.Data.SqlClient; using Npgsql; using Oracle.ManagedDataAccess.Client; using Shentun.Utilities; using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Shentun.Peis.PlugIns { public class ColumnReferencePlugInsDbBase: ColumnReferencePlugInsBase { protected string InterfaceSql; protected string InterfaceDbType; protected string? InterfaceConnctionStr; public ColumnReferencePlugInsDbBase(string parmValue):base(parmValue) { InterfaceSql = InterfaceConfig.GetSection("Interface").GetSection("Sql").Value; InterfaceDbType = InterfaceConfig.GetSection("Interface").GetSection("DbType").Value; InterfaceConnctionStr = InterfaceConfig.GetSection("Interface").GetSection("ConnectionStrings").Value; } protected DbConnection CreateInterfaceDbConnect() { DbConnection conn ; if (string.IsNullOrWhiteSpace(InterfaceConnctionStr)) { throw new ArgumentException("数据连接设置中的DbType不能为空"); } InterfaceDbType = InterfaceDbType.ToLower(); if (InterfaceDbType == "sqlserver") { conn = new SqlConnection(InterfaceConnctionStr); } else if (InterfaceDbType == "postgres") { conn = new NpgsqlConnection(InterfaceConnctionStr); } else if (InterfaceDbType == "oracle") { conn = new OracleConnection(InterfaceConnctionStr); } else { throw new ArgumentException("数据连接设置中的DbType不支持"); } return conn; } public override async Task> GetInterfaceCodeValuesAsync() { using (DbConnection conn = CreateInterfaceDbConnect()) { var list = (await conn.QueryAsync(InterfaceSql)).ToList(); foreach (var item in list) { item.SimpleCode = LanguageConverter.GetPYSimpleCode(item.DisplayName); } return list; } } } }