89 lines
3.1 KiB
C#
89 lines
3.1 KiB
C#
using System.Configuration;
|
||
using Learun.Ioc;
|
||
using Microsoft.Practices.Unity;
|
||
|
||
namespace Learun.DataBase.Repository
|
||
{
|
||
/// <summary>
|
||
/// 根据配置文件等取拿数据库信息。用于new的。只不过这里用的是IOC注入的方式,所以字眼上看不到new
|
||
/// </summary>
|
||
public class DbFactory
|
||
{
|
||
public static DatabaseType GetIDatabaseType()
|
||
{
|
||
return DbFactory.GetDbType(ConfigurationManager.ConnectionStrings["BaseDb"].ProviderName);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 默认走的是XmlConig下,database.config下的BaseDb这个节点下的字符串。
|
||
/// 首先走Web.config,然后里面指向了Xmlconfig下的database.config
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public static IDatabase GetIDatabase()
|
||
{
|
||
//if (!Computer.IsSameComputer())
|
||
//{
|
||
// throw new Exception("该电脑没有授权,请联系管理员!");
|
||
//}
|
||
return DbFactory.GetIDatabaseByIoc(DbFactory.GetDbType(ConfigurationManager.ConnectionStrings["BaseDb"].ProviderName).ToString(), "BaseDb");
|
||
}
|
||
|
||
public static IDatabase GetIDatabase(string connString, DatabaseType dbType)
|
||
{
|
||
return DbFactory.GetIDatabaseByIoc(dbType.ToString(), connString);
|
||
}
|
||
|
||
public static IDatabase GetIDatabase(string connString, string dbType)
|
||
{
|
||
return DbFactory.GetIDatabaseByIoc(dbType, connString);
|
||
}
|
||
|
||
public static IDatabase GetIDatabase(string name)
|
||
{
|
||
return DbFactory.GetIDatabaseByIoc(DbFactory.GetDbType(ConfigurationManager.ConnectionStrings[name].ProviderName).ToString(), name);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据信息去注入(实例化)一个数据库连接对象
|
||
/// </summary>
|
||
/// <param name="name">目前有ora sql mysql</param>
|
||
/// <param name="connString"></param>
|
||
/// <returns></returns>
|
||
public static IDatabase GetIDatabaseByIoc(string name, string connString)
|
||
{
|
||
return UnityIocHelper.Instance.GetService<IDatabase>(name, new ParameterOverride[]
|
||
{
|
||
new ParameterOverride("connString", connString)
|
||
});
|
||
}
|
||
|
||
private static DatabaseType GetDbType(string providerName)
|
||
{
|
||
DatabaseType result;
|
||
if (!(providerName == "System.Data.SqlClient"))
|
||
{
|
||
if (!(providerName == "MySql.Data.MySqlClient"))
|
||
{
|
||
if (!(providerName == "Oracle.ManagedDataAccess.Client"))
|
||
{
|
||
result = DatabaseType.SqlServer;
|
||
}
|
||
else
|
||
{
|
||
result = DatabaseType.Oracle;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
result = DatabaseType.MySql;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
result = DatabaseType.SqlServer;
|
||
}
|
||
return result;
|
||
}
|
||
}
|
||
}
|