89 lines
3.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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