Initial_commit_SecMPS_v2
This commit is contained in:
67
api_sqlsugar/VolPro.Core/Generic/GenericDbProviderFactory.cs
Normal file
67
api_sqlsugar/VolPro.Core/Generic/GenericDbProviderFactory.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using VolPro.Core.Configuration;
|
||||
using VolPro.Core.Const;
|
||||
using VolPro.Core.DBManager;
|
||||
using VolPro.Core.EFDbContext;
|
||||
using VolPro.Core.Extensions.AutofacManager;
|
||||
using VolPro.Core.UserManager;
|
||||
|
||||
namespace VolPro.Core.Generic
|
||||
{
|
||||
/// <summary>
|
||||
/// 通用数据库操作工厂,根据 DBServer/dbType 返回具体实现
|
||||
/// </summary>
|
||||
public interface IGenericDbProviderFactory
|
||||
{
|
||||
IGenericDbProvider GetProvider(string table = null);
|
||||
IGenericDbProvider Provider { get; }
|
||||
}
|
||||
|
||||
public class GenericDbProviderFactory : IGenericDbProviderFactory, IDependency
|
||||
{
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
|
||||
public IGenericDbProvider Provider
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetProvider();
|
||||
}
|
||||
}
|
||||
public GenericDbProviderFactory(IServiceProvider serviceProvider)
|
||||
{
|
||||
_serviceProvider = serviceProvider;
|
||||
}
|
||||
|
||||
public IGenericDbProvider GetProvider(string table = null)
|
||||
{
|
||||
table ??= GenericTableAsyncLocal.CurrentTableName;
|
||||
string dbServer = TableColumnContext.TableInfo
|
||||
.Where(x => x.TableName == table).Select(s => s.DBServer)
|
||||
.FirstOrDefault() ?? typeof(SysDbContext).Name;
|
||||
|
||||
string dbType = DbRelativeCache.GetDbType(dbServer) ?? DBType.Name;
|
||||
IGenericDbProvider provider = null;
|
||||
switch (dbType)
|
||||
{
|
||||
case "MySql":
|
||||
provider = new GenericMySqlProvider();
|
||||
break;
|
||||
case "PgSql":
|
||||
provider = new GenericPgSqlProvider();
|
||||
break;
|
||||
//case "Oracle":
|
||||
// provider = new GenericOracleProvider();
|
||||
// break;
|
||||
case "MsSql":
|
||||
provider = new GenericSqlServerProvider();
|
||||
break;
|
||||
default:
|
||||
throw new Exception("数据库暂未支持");
|
||||
}
|
||||
return provider;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user