using Learun.Ioc;
using Microsoft.Practices.Unity;
using System.Configuration;
namespace Learun.DataBase.Repository
{
///
/// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
/// Copyright (c) 2013-2018 北京泉江科技有限公司
/// 创建人:陈彬彬
/// 日 期:2017.03.04
/// 描 述:数据库建立工厂
///
public class DbFactory
{
///
/// 连接基础库
///
///
public static IDatabase GetIDatabase()
{
string providerName = ConfigurationManager.ConnectionStrings["BaseDb"].ProviderName;
return GetIDatabaseByIoc(GetDbType(providerName).ToString(), "BaseDb");
}
///
/// 连接数据库
///
/// 连接字符串
/// 数据库类型
///
public static IDatabase GetIDatabase(string connString, DatabaseType dbType)
{
return GetIDatabaseByIoc(dbType.ToString(), connString);
}
///
/// 连接数据库
///
/// 连接字符串
/// 数据库类型
///
public static IDatabase GetIDatabase(string connString, string dbType)
{
return GetIDatabaseByIoc(dbType, connString);
}
///
/// 连接数据库
///
/// 连接配置名称
///
public static IDatabase GetIDatabase(string name)
{
string providerName = ConfigurationManager.ConnectionStrings[name].ProviderName;
return GetIDatabaseByIoc(GetDbType(providerName).ToString(), name);
}
///
/// 连接数据库
///
/// 数据库类型
/// 连接字符串
///
private static IDatabase GetIDatabaseByIoc(string name, string connString)
{
return UnityIocHelper.Instance.GetService(name, new ParameterOverride(
"connString", connString));
}
///
/// 获取数据库类型
///
/// 驱动名称
///
private static DatabaseType GetDbType(string providerName)
{
DatabaseType dbType;
switch (providerName)
{
case "System.Data.SqlClient":
dbType = DatabaseType.SqlServer;
break;
case "MySql.Data.MySqlClient":
dbType = DatabaseType.MySql;
break;
case "Oracle.ManagedDataAccess.Client":
dbType = DatabaseType.Oracle;
break;
default:
dbType = DatabaseType.SqlServer;
break;
}
return dbType;
}
}
}