You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

138 lines
4.6 KiB

//using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using Tiobon.Core.Common.DB.Dapper.Const;
using Tiobon.Core.Common.DB.Dapper;
using Tiobon.Core.Common.DB.Dapper.Enums;
using Tiobon.Core.Common.DB.Dapper.Extensions;
namespace Tiobon.Core.Common.DB.Dapper.DBManager;
public class DBServerProvider
{
private static Dictionary<string, string> ConnectionPool = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
public static string DefaultConnName = "defalut";
static DBServerProvider()
{
SetConnection(DefaultConnName, AppSetting.DbConnectionString);
}
public static void SetConnection(string key, string val)
{
if (ConnectionPool.ContainsKey(key))
{
ConnectionPool[key] = val;
return;
}
ConnectionPool.Add(key, val);
}
/// <summary>
/// 设置默认数据库连接
/// </summary>
/// <param name="val"></param>
public static void SetDefaultConnection(string val)
{
SetConnection(DefaultConnName, val);
}
public static string GetConnectionString(string key)
{
key = key ?? DefaultConnName;
if (ConnectionPool.ContainsKey(key))
{
return ConnectionPool[key];
}
return key;
}
/// <summary>
/// 获取默认数据库连接
/// </summary>
/// <returns></returns>
public static string GetConnectionString()
{
return GetConnectionString(DefaultConnName);
}
//private static bool _isMysql = DBType.Name == DbCurrentType.MySql.ToString();
private static bool _isMysql = false;
public static IDbConnection GetDbConnection(string connString = null)
{
if (_isMysql)
{
return new MySql.Data.MySqlClient.MySqlConnection(connString ?? ConnectionPool[DefaultConnName]);
}
return new SqlConnection(connString ?? ConnectionPool[DefaultConnName]);
}
public static IDbConnection GetMyDbConnection(string connString = null)
{
//new MySql.Data.MySqlClient.MySqlConnection(connString);
string mySql = "Data Source=132.232.2.109;Database=mysql;User ID=xx;Password=xxx;pooling=true;CharSet=utf8;port=3306;sslmode=none";
// MySqlConnector
return new MySql.Data.MySqlClient.MySqlConnection(mySql);
}
//public static VOLContext DbContext
//{
// get { return GetEFDbContext(); }
//}
//public static VOLContext GetEFDbContext()
//{
// return GetEFDbContext(null);
//}
//public static VOLContext GetEFDbContext(string dbName)
//{
// VOLContext beefContext = Utilities.HttpContext.Current.RequestServices.GetService(typeof(VOLContext)) as VOLContext;
// if (dbName != null)
// {
// if (!ConnectionPool.ContainsKey(dbName))
// {
// throw new Exception("数据库连接名称错误");
// }
// beefContext.Database.GetDbConnection().ConnectionString = ConnectionPool[dbName];
// }
// return beefContext;
//}
//public static void SetDbContextConnection(VOLContext beefContext, string dbName)
//{
// if (!ConnectionPool.ContainsKey(dbName))
// {
// throw new Exception("数据库连接名称错误");
// }
// beefContext.Database.GetDbConnection().ConnectionString = ConnectionPool[dbName];
//}
/// <summary>
/// 获取实体的数据库连接
/// </summary>
/// <typeparam name="TEntity"></typeparam>
/// <param name="defaultDbContext"></param>
/// <returns></returns>
//public static void GetDbContextConnection<TEntity>(VOLContext defaultDbContext)
//{
// //string connstr= defaultDbContext.Database.GetDbConnection().ConnectionString;
// // if (connstr != ConnectionPool[DefaultConnName])
// // {
// // defaultDbContext.Database.GetDbConnection().ConnectionString = ConnectionPool[DefaultConnName];
// // };
//}
public static ISqlDapper SqlDapper
{
get
{
return new SqlDapper(DefaultConnName);
}
}
public static ISqlDapper GetSqlDapper(string dbName = null)
{
return new SqlDapper(dbName ?? DefaultConnName);
}
public static ISqlDapper GetSqlDapper<TEntity>()
{
//获取实体真实的数据库连接池对象名,如果不存在则用默认数据连接池名
string dbName = typeof(TEntity).GetTypeCustomValue<DBConnectionAttribute>(x => x.DBName) ?? DefaultConnName;
return GetSqlDapper(dbName);
}
}