1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/x_discoverer-Vue.NetCore

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
DBServerProvider.cs 6.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
283591387@qq.com Отправлено год назад 57a3eb9
using Dm;
using Microsoft.EntityFrameworkCore;
using MySqlConnector;
using Npgsql;
using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using VOL.Core.Configuration;
using VOL.Core.Const;
using VOL.Core.Dapper;
using VOL.Core.EFDbContext;
using VOL.Core.Enums;
using VOL.Core.Extensions;
namespace VOL.Core.DBManager
{
public partial class DBServerProvider
{
private static Dictionary<string, string> ConnectionPool = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
private static readonly 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);
}
public static IDbConnection GetDbConnection(string connString = null)
{
if (connString == null)
{
connString = ConnectionPool[DefaultConnName];
}
if (DBType.Name == DbCurrentType.MySql.ToString())
{
return new MySqlConnection(connString);
}
if (DBType.Name == DbCurrentType.PgSql.ToString())
{
return new NpgsqlConnection(connString);
}
if (DBType.Name == DbCurrentType.DM.ToString())
{
return new DmConnection(connString);
}
if (DBType.Name == DbCurrentType.Oracle.ToString())
{
return new OracleConnection(connString);
}
return new SqlConnection(connString);
}
/// <summary>
/// 扩展dapper 获取MSSQL数据库DbConnection,默认系统获取配置文件的DBType数据库类型,
/// </summary>
/// <param name="connString">如果connString为null 执行重载GetDbConnection(string connString = null)</param>
/// <param name="dapperType">指定连接数据库的类型:MySql/MsSql/PgSql</param>
/// <returns></returns>
public static IDbConnection GetDbConnection(string connString = null, DbCurrentType dbCurrentType = DbCurrentType.Default)
{
//默认获取DbConnection
if (connString.IsNullOrEmpty() || DbCurrentType.Default == dbCurrentType)
{
return GetDbConnection(connString);
}
if (dbCurrentType == DbCurrentType.MySql)
{
return new MySqlConnection(connString);
}
if (dbCurrentType == DbCurrentType.PgSql)
{
return new NpgsqlConnection(connString);
}
if (dbCurrentType == DbCurrentType.DM)
{
return new DmConnection(connString);
}
if (dbCurrentType == DbCurrentType.Oracle)
{
return new OracleConnection(connString);
}
return new SqlConnection(connString);
}
public static VOLContext DbContext
{
get { return GetEFDbContext(); }
}
public static VOLContext GetEFDbContext()
{
return GetEFDbContext(null);
}
public static VOLContext GetEFDbContext(string dbName)
{
VOLContext context = Utilities.HttpContext.Current.RequestServices.GetService(typeof(VOLContext)) as VOLContext;
if (dbName != null)
{
if (!ConnectionPool.ContainsKey(dbName))
{
throw new Exception("数据库连接名称错误");
}
context.Database.GetDbConnection().ConnectionString = ConnectionPool[dbName];
}
return context;
}
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);
}
/// <summary>
///
/// </summary>
/// <param name="dbCurrentType">指定数据库类型:MySql/MsSql/PgSql</param>
/// <param name="dbName">指定数据连串名称</param>
/// <returns></returns>
public static ISqlDapper GetSqlDapper(DbCurrentType dbCurrentType, string dbName = null)
{
if (dbName.IsNullOrEmpty())
{
return new SqlDapper(dbName ?? DefaultConnName);
}
return new SqlDapper(dbName, dbCurrentType);
}
public static ISqlDapper GetSqlDapper<TEntity>()
{
//获取实体真实的数据库连接池对象名,如果不存在则用默认数据连接池名
string dbName = typeof(TEntity).GetTypeCustomValue<DBConnectionAttribute>(x => x.DBName) ?? DefaultConnName;
return GetSqlDapper(dbName);
}
}
}

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/x_discoverer-Vue.NetCore.git
git@gitlife.ru:oschina-mirror/x_discoverer-Vue.NetCore.git
oschina-mirror
x_discoverer-Vue.NetCore
x_discoverer-Vue.NetCore
master