master
wet 3 years ago
parent 335b2f384e
commit 647e3975cc

@ -6,35 +6,32 @@ using Microsoft.Extensions.Configuration;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.Threading.Tasks; using System.Threading.Tasks;
using Common;
using Microsoft.EntityFrameworkCore;
namespace Shared.Repository namespace Shared.Repository
{ {
/// <summary> /// <summary>
/// Dapper帮助类 /// Dapper帮助类
/// </summary> /// </summary>
public sealed class DapperDBBase : IDapperDBBase public class DapperDBBase : DbContext, IDapperDBBase
{ {
private string sqlConnection; private string sqlConnection;
private readonly IConfiguration _configuration;
/// <summary>
/// public DapperDBBase()
/// </summary>
/// <param name="configuration"></param>
public DapperDBBase(IConfiguration configuration)
{ {
_configuration = configuration; sqlConnection = sysOptionConfig.YsWebconfig.DapperDbString;
sqlConnection = configuration.GetConnectionString("OpenAuthDBContext");
} }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public IDbConnection GetConn() public IDbConnection GetConn(string type = null)
{ {
if (string.IsNullOrEmpty(sqlConnection)) if (string.IsNullOrEmpty(sqlConnection))
sqlConnection = _configuration.GetConnectionString("OpenAuthDBContext");
sqlConnection = sysOptionConfig.YsWebconfig.DapperDbString;
IDbConnection conn = new SqlConnection(sqlConnection); IDbConnection conn = new SqlConnection(sqlConnection);
conn.Open(); conn.Open();
return conn; return conn;
@ -470,29 +467,78 @@ namespace Shared.Repository
} }
return iResult; return iResult;
} }
//以下为使用方法 /// <summary>
//public async Task<Users> GetUserDetailAsync(int Id) /// 开启事务
//{ /// </summary>
// string detailSql = @"SELECT ID, UserName, Password, Gender, Birthday, CreateDate, IsDelete FROM [dbo].[Users] WHERE Id=@Id"; /// <param name="conn"></param>
// return await base.Detail(Id, detailSql); /// <returns></returns>
//} public IDbTransaction BeginTransaction(IDbConnection conn)
{
//public async Task<List<Users>> GetUsersAsync() IDbTransaction tran = conn.BeginTransaction();
//{ return tran;
// string selectSql = @"SELECT userName,Password,Gender ,Birthday ,CreateDate ,IsDelete FROM [dbo].[Users]"; }
// return await base.Select(selectSql);
//} /// <summary>
/// 提交事务
//public async Task PostUserAsync(Users entity) /// </summary>
//{ /// <param name="tran"></param>
// string insertSql = @"INSERT INTO [dbo].[Users](Id, UserName, Password, Gender, Birthday, CreateDate, IsDelete) VALUES(@Id, @UserName, @Password, @Gender, @Birthday, @CreateDate, @IsDelete)"; /// <param name="conn"></param>
// await base.Insert(entity, insertSql); public void Commit(IDbTransaction tran, IDbConnection conn)
//} {
tran.Commit();
//public async Task PutUserAsync(Users entity) }
//{
// string updateSql = "UPDATE [dbo].[Users] SET UserName=@UserName, Password=@Password, Gender=@Gender, Birthday=@Birthday, CreateDate=@CreateDate, IsDelete=@IsDelete WHERE Id=@Id"; /// <summary>
// await base.Update(entity, updateSql); /// 回滚事务
//} /// </summary>
/// <param name="tran"></param>
/// <param name="conn"></param>
public void Rollback(IDbTransaction tran, IDbConnection conn)
{
tran.Rollback();
}
/// 数据库连接名
private static string _connection = string.Empty;
/// 获取连接名
private static string Connection
{
get { return _connection; }
set { _connection = value; }
}
/// 定义一个标识确保线程同步
private static readonly object locker = new object();
private static DapperDBBase uniqueInstance;
/// <summary>
/// 获取实例,这里为单例模式,保证只存在一个实例
/// </summary>
/// <returns></returns>
public static DapperDBBase GetInstance()
{
// 双重锁定实现单例模式,在外层加个判空条件主要是为了减少加锁、释放锁的不必要的损耗
if (uniqueInstance == null)
{
lock (locker)
{
if (uniqueInstance == null)
{
uniqueInstance = new DapperDBBase();
}
}
}
return uniqueInstance;
}
} }
} }

@ -112,6 +112,9 @@ namespace Common
/// </summary> /// </summary>
public int ShopPower { get; set; } = 2; public int ShopPower { get; set; } = 2;
public string DapperDbString { get; set; }
#region jwt认证配置 #region jwt认证配置
/// <summary> /// <summary>
/// jwt发行者 /// jwt发行者

File diff suppressed because it is too large Load Diff

@ -14,7 +14,7 @@ namespace Common.Repository.Interface
/// ///
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
IDbConnection GetConn(); IDbConnection GetConn(string type=null);
/// <summary> /// <summary>
/// 无参数存储过程 /// 无参数存储过程
/// </summary> /// </summary>

@ -12,8 +12,11 @@
// <summary>仓储接口</summary> // <summary>仓储接口</summary>
// *********************************************************************** // ***********************************************************************
using Common.Repository.Core;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System; using System;
using System.Collections.Generic;
using System.Data;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -89,4 +92,8 @@ namespace Common.Repository.Interface
#endregion #endregion
} }
} }

@ -1,11 +1,13 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace djy.Model.Ams namespace djy.Model.Ams
{ {
[Table("AMS_Cntrno")]
public class AMS_Cntrno public class AMS_Cntrno
{ {
/// <summary> /// <summary>

@ -1,11 +1,13 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace djy.Model.Ams namespace djy.Model.Ams
{ {
[Table("AMS_House")]
public class AMS_House public class AMS_House
{ {
/// <summary> /// <summary>

@ -1,12 +1,14 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace djy.Model.Ams namespace djy.Model.Ams
{ {
public class AMSMaster [Table("AMS_Master")]
public class AMS_Master
{ {
/// <summary> /// <summary>
/// 主键 /// 主键

@ -2,11 +2,9 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
namespace djy.Model.Ams namespace AMSDto
{ {
public class AMSDto
{
}
public class AMSSaveDto public class AMSSaveDto
{ {

@ -1,17 +0,0 @@
using djy.Model.Ams;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace djy.IService.Ams
{
public interface IAms
{
void SaveInfo(AMSSaveDto Dto);
}
}

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using djy.Model;
using Common;
using AMSDto;
namespace djy.Paas.IService
{
/// <summary>
/// 账单中心模块
/// </summary>
public interface IAmsService:IsBase
{
/// <summary>
///保存单据
/// </summary>
/// <returns></returns>
public void SaveInfo(AMSSaveDto dto);
}
}

@ -0,0 +1,43 @@
using AMSDto;
using djy.Paas.IService;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Dapper;
using System.Data;
using System.Data.SqlClient;
using Common;
using djy.Model.Ams;
using Shared.Repository;
namespace djy.Service.Ams
{
/// <summary>
/// AMS
/// </summary>
public class AmsService : ServBase, IAmsService
{
DapperDBBase dapper = new DapperDBBase();
public async void SaveInfo(AMSSaveDto dto)
{
AMS_Master master = dto.MapTo<AMS_Master>();
using (var transaction = dapper.BeginTransaction(dapper.GetConn()))
{
master.CreateTime = DateTime.Now;
var gid = await dapper.InsertByEntityAsync(master);
transaction.Rollback();
}
}
}
}

@ -1,25 +0,0 @@
using Common.Repository;
using Common.Repository.Interface;
using djy.IService.Ams;
using djy.Model.Ams;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace djy.Service.Ams
{
public class ServiceAms : IAms
{
private IDapperDBBase dapperDB;
public void SaveInfo(AMSSaveDto Dto)
{
}
}
}

@ -8,11 +8,9 @@ using System.Reflection;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using djy.Paas.IService; using djy.Paas.IService;
using Swashbuckle.AspNetCore.Swagger;
using Swashbuckle.AspNetCore.SwaggerGen;
using djy.Model; using djy.Model;
namespace djy_AmsApi.Controllers namespace djy.Service
{ {
/// <summary> /// <summary>
@ -177,6 +175,17 @@ namespace djy_AmsApi.Controllers
/// </summary> /// </summary>
protected string GetLoginName { get { return GetClaimsValue("loginname"); } } protected string GetLoginName { get { return GetClaimsValue("loginname"); } }
/// <summary>
/// 获取登录公司名称
/// </summary>
protected string GetLoginComptName { get { return GetClaimsValue("COMNAME"); } }
/// <summary>
/// 获取登录公司id
/// </summary>
protected string GetLoginCompId { get { return GetClaimsValue("CompId"); } }
/// <summary> /// <summary>
/// 获取登录类型 /// 获取登录类型
/// </summary> /// </summary>
@ -305,4 +314,7 @@ namespace djy_AmsApi.Controllers
} }
} }

@ -0,0 +1,74 @@
// ***********************************************************************
// Assembly : FairUtility
// Author : Yubao Li
// Created : 08-27-2015
//
// Last Modified By : Yubao Li
// Last Modified On : 08-27-2015
// ***********************************************************************
// <copyright file="AutoMapperExt.cs" company="">
// Copyright (c) . All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using AutoMapper;
using System;
using System.Collections;
using System.Collections.Generic;
namespace djy.Service
{
public static class AutoMapperExt
{
/// <summary>
/// 类型映射
/// </summary>
public static T MapTo<T>(this object obj)
{
if (obj == null) return default(T);
var config = new MapperConfiguration(cfg => cfg.CreateMap(obj.GetType(), typeof(T)));
var mapper = config.CreateMapper();
return mapper.Map<T>(obj);
}
/// <summary>
/// 集合列表类型映射
/// </summary>
public static List<TDestination> MapToList<TDestination>(this IEnumerable source)
{
Type sourceType = source.GetType().GetGenericArguments()[0]; //获取枚举的成员类型
var config = new MapperConfiguration(cfg => cfg.CreateMap(sourceType, typeof(TDestination)));
var mapper = config.CreateMapper();
return mapper.Map<List<TDestination>>(source);
}
/// <summary>
/// 集合列表类型映射
/// </summary>
public static List<TDestination> MapToList<TSource, TDestination>(this IEnumerable<TSource> source)
{
var config = new MapperConfiguration(cfg => cfg.CreateMap(typeof(TSource), typeof(TDestination)));
var mapper = config.CreateMapper();
return mapper.Map<List<TDestination>>(source);
}
/// <summary>
/// 类型映射
/// </summary>
public static TDestination MapTo<TSource, TDestination>(this TSource source, TDestination destination)
where TSource : class
where TDestination : class
{
if (source == null) return destination;
var config = new MapperConfiguration(cfg => cfg.CreateMap(typeof(TSource), typeof(TDestination)));
var mapper = config.CreateMapper();
return mapper.Map<TDestination>(source);
}
}
}

@ -9,6 +9,9 @@ using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Common; using Common;
using System.Data;
using Shared.Repository;
namespace djy.Service namespace djy.Service
{ {
/// <summary> /// <summary>
@ -27,7 +30,7 @@ namespace djy.Service
/// <summary> /// <summary>
/// 账单中心库 /// 账单中心库
/// </summary> /// </summary>
public const string BillCenter = "billcenter"; public const string AMSCenter = "AMS";
/// <summary> /// <summary>
/// 日志库 /// 日志库
/// </summary> /// </summary>
@ -44,8 +47,6 @@ namespace djy.Service
/// </summary> /// </summary>
public static IdleBus<IFreeSql> DbBus=new IdleBus<IFreeSql>(TimeSpan.FromSeconds(20)); public static IdleBus<IFreeSql> DbBus=new IdleBus<IFreeSql>(TimeSpan.FromSeconds(20));
//public static IFreeSql DbBus.Get(DbList.djypublicedb);
/// <summary> /// <summary>
/// RedisDB /// RedisDB
/// </summary> /// </summary>
@ -74,7 +75,6 @@ namespace djy.Service
else else
{ {
DbBus.Register(item.SysKey, () => new FreeSqlBuilder().UseConnectionString((DataType)item.DataType, item.ConnString) DbBus.Register(item.SysKey, () => new FreeSqlBuilder().UseConnectionString((DataType)item.DataType, item.ConnString)
// .UseAutoSyncStructure(sysOptionConfig.YsWebconfig.IsDev)
.UseAutoSyncStructure(false) .UseAutoSyncStructure(false)
.UseNoneCommandParameter(true) .UseNoneCommandParameter(true)
.UseMonitorCommand(cmd => .UseMonitorCommand(cmd =>
@ -90,17 +90,13 @@ namespace djy.Service
return true; return true;
} }
///// <summary>
///// 数据库初始化
///// </summary>
//public static ReturnResult<string> DbInit()
//{
// var rs = new ReturnResult<string>();
// DbBus.Get(DbList.djypublicedb).CodeFirst.SyncStructure<tb_BaoguanContainer>();
// DbBus.Get(DbList.djypublicedb).CodeFirst.SyncStructure<tb_BaoguanDecList>();
// rs.OK("生成成功!");
// return rs;
//}
} }
} }

@ -122,7 +122,7 @@ namespace djy.Service
return count > 0 ? true : false; return count > 0 ? true : false;
} }
} }

@ -1,24 +1,27 @@
using Common; using AMSDto;
using Common.Repository.Interface; using Common;
using djy.Model.Ams; using djy.Service;
using djy.Service.Ams; using djy.Service.Ams;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System; using System;
namespace djy_AmsApi.Controllers namespace djy_AmsApi.Controllers
{ {
public class AmsController : ApiBase [AllowAnonymous]
{ public class AmsController : ApiBase
private ServiceAms ams; {
AmsService ser =new AmsService();
[HttpPost("Add")] [HttpPost("Add")]
public Response Add(AMSSaveDto Dto) public Response Add(AMSSaveDto Dto)
{ {
var result = new Response(); var result = new Response();
try try
{ {
ams.Add(Dto);
ser.SaveInfo(Dto);
} }
catch (Exception ex) catch (Exception ex)
{ {

@ -18,6 +18,9 @@ using System.Net.Mime;
using AutoMapper; using AutoMapper;
using djy_AmsApi; using djy_AmsApi;
using djy.Service; using djy.Service;
using Common.Repository.Interface;
using Shared.Repository;
namespace djy_AmsApi namespace djy_AmsApi
{ {
@ -71,7 +74,7 @@ namespace djy_AmsApi
} }
//automapper //automapper
services.AddAutoMapper(typeof(AutoMapperConfig)); services.AddAutoMapper(typeof(AutoMapperConfig));
//ÈÎÎñÅäÖà //ÈÎÎñÅäÖÃ
services.AddHangfire(config => { services.AddHangfire(config => {
config.UseRedisStorage(sysOptionConfig.YsWebconfig.Redis, new Hangfire.Redis.RedisStorageOptions { Prefix = "hf_"+sysOptionConfig.YsWebconfig.WebName,InvisibilityTimeout=TimeSpan.FromHours(1) }); config.UseRedisStorage(sysOptionConfig.YsWebconfig.Redis, new Hangfire.Redis.RedisStorageOptions { Prefix = "hf_"+sysOptionConfig.YsWebconfig.WebName,InvisibilityTimeout=TimeSpan.FromHours(1) });
@ -98,8 +101,8 @@ namespace djy_AmsApi
x.UseDashboard(); x.UseDashboard();
}); });
} }
services.AddSwaggerGen(c => services.AddSwaggerGen(c =>
{ {
c.SwaggerDoc("v1", new OpenApiInfo { Title = "djy_AmsApi", Version = "v1" }); c.SwaggerDoc("v1", new OpenApiInfo { Title = "djy_AmsApi", Version = "v1" });

@ -28,13 +28,14 @@
"Rbmq_UserName": "djy_paas", "Rbmq_UserName": "djy_paas",
"Rbmq_Password": "123qwe", "Rbmq_Password": "123qwe",
"Rbmq_Sqlhost": "Data Source =192.168.1.205,1433; Initial Catalog=TestDjyLogs; Persist Security Info=True; User ID =test; Password=test123;pooling=true", "Rbmq_Sqlhost": "Data Source =192.168.1.205,1433; Initial Catalog=TestDjyLogs; Persist Security Info=True; User ID =test; Password=test123;pooling=true",
"DapperDbString": "Data Source =123.234.225.158,28000; Initial Catalog=DevAMS; Persist Security Info=True; User ID =dev; Password=dev123;pooling=true;max pool size=2",
"DataConnList": [ "DataConnList": [
{ {
"SysKey": "AMS", "SysKey": "AMS",
"TitleName": "账单数据库", "TitleName": "AMS",
"Index": 100, "Index": 100,
"DataType": 1, "DataType": 1,
"Status": 0, "Status": 0,

@ -27,17 +27,17 @@
"Rbmq_UserName": "admin", "Rbmq_UserName": "admin",
"Rbmq_Password": "admin", "Rbmq_Password": "admin",
"Rbmq_Sqlhost": "Data Source =172.31.85.154; Initial Catalog=djy_logs; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true", "Rbmq_Sqlhost": "Data Source =172.31.85.154; Initial Catalog=djy_logs; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true",
"DapperDbString": "Data Source =123.234.225.158,28000; Initial Catalog=DevAMS; Persist Security Info=True; User ID =dev; Password=dev123;pooling=true;max pool size=2",
"DataConnList": [ "DataConnList": [
{ {
"SysKey": "billcenter", "SysKey": "AMS",
"TitleName": "账单数据库", "TitleName": "AMS",
"Index": 100, "Index": 100,
"DataType": 1, "DataType": 1,
"Status": 0, "Status": 0,
"ConnString": "Data Source =172.31.85.154; Initial Catalog=BillCenter; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true;max pool size=2" "ConnString": "Data Source =123.234.225.158,28000; Initial Catalog=DevAMS; Persist Security Info=True; User ID =dev; Password=dev123;pooling=true;max pool size=2"
}, },
{ {
"SysKey": "djydb", "SysKey": "djydb",

@ -27,17 +27,16 @@
"Rbmq_UserName": "admin", "Rbmq_UserName": "admin",
"Rbmq_Password": "admin", "Rbmq_Password": "admin",
"Rbmq_Sqlhost": "Data Source =172.31.85.154; Initial Catalog=djy_logs; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true", "Rbmq_Sqlhost": "Data Source =172.31.85.154; Initial Catalog=djy_logs; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true",
"DapperDbString": "Data Source =123.234.225.158,28000; Initial Catalog=DevAMS; Persist Security Info=True; User ID =dev; Password=dev123;pooling=true;max pool size=2",
"DataConnList": [ "DataConnList": [
{ {
"SysKey": "billcenter", "SysKey": "AMS",
"TitleName": "AMS",
"TitleName": "账单数据库",
"Index": 100, "Index": 100,
"DataType": 1, "DataType": 1,
"Status": 0, "Status": 0,
"ConnString": "Data Source =172.31.85.154; Initial Catalog=BillCenter; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true;max pool size=2" "ConnString": "Data Source =123.234.225.158,28000; Initial Catalog=DevAMS; Persist Security Info=True; User ID =dev; Password=dev123;pooling=true;max pool size=2"
}, },
{ {
"SysKey": "djydb", "SysKey": "djydb",
@ -46,8 +45,6 @@
"Index": 100, "Index": 100,
"DataType": 1, "DataType": 1,
"Status": 0, "Status": 0,
// "ConnString": "Data Source =172.17.0.3; Initial Catalog=djy_PaasData; Persist Security Info=True; User ID =sa; Password=QDdjy2021*;pooling=true",
//"ConnString": "Data Source =djypaas.myshipping.net,5099; Initial Catalog=djy_PubliceData; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true""ConnString": "Data Source =djypaas.myshipping.net,5099; Initial Catalog=djy_PubliceData; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true"
"ConnString": "Data Source =172.31.85.154,1433; Initial Catalog=djy_PubliceData; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true" "ConnString": "Data Source =172.31.85.154,1433; Initial Catalog=djy_PubliceData; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true"
}, },
@ -57,8 +54,6 @@
"Index": 100, "Index": 100,
"DataType": 1, "DataType": 1,
"Status": 0, "Status": 0,
// "ConnString": "Data Source =172.17.0.3; Initial Catalog=djy_logs; Persist Security Info=True; User ID = sa; Password=QDdjy2021*;pooling=true",
//"ConnString": "Data Source =djypaas.myshipping.net,5099; Initial Catalog=djy_logs; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true"
"ConnString": "Data Source =172.31.85.154,1433; Initial Catalog=djy_logs; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true" "ConnString": "Data Source =172.31.85.154,1433; Initial Catalog=djy_logs; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true"
}, },
@ -69,9 +64,6 @@
"Index": 100, "Index": 100,
"DataType": 1, "DataType": 1,
"Status": 0, "Status": 0,
// "ConnString": "Data Source =172.17.0.3; Initial Catalog=MYSHIPPINGTEST8; Persist Security Info=True; User ID =sa; Password=QDdjy2021*;pooling=true",
//"ConnString": "Data Source =172.31.85.154; Initial Catalog=MYSHIPPINGTEST8; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true",
//"ConnString": "Data Source =djypaas.myshipping.net,5099; Initial Catalog=DsPingTai; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true",
"ConnString": "Data Source =172.31.85.154,1433; Initial Catalog=DsPingTai; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true" "ConnString": "Data Source =172.31.85.154,1433; Initial Catalog=DsPingTai; Persist Security Info=True; User ID =sa; Password=QDdjy#2020*;pooling=true"
} }

Loading…
Cancel
Save