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; } } }