You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

96 lines
3.3 KiB

  1. using Learun.Ioc;
  2. using Microsoft.Practices.Unity;
  3. using System.Configuration;
  4. namespace Learun.DataBase.Repository
  5. {
  6. /// <summary>
  7. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  8. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  9. /// 创建人:陈彬彬
  10. /// 日 期:2017.03.04
  11. /// 描 述:数据库建立工厂
  12. /// </summary>
  13. public class DbFactory
  14. {
  15. /// <summary>
  16. /// 连接基础库
  17. /// </summary>
  18. /// <returns></returns>
  19. public static IDatabase GetIDatabase()
  20. {
  21. string providerName = ConfigurationManager.ConnectionStrings["BaseDb"].ProviderName;
  22. return GetIDatabaseByIoc(GetDbType(providerName).ToString(), "BaseDb");
  23. }
  24. /// <summary>
  25. /// 连接数据库
  26. /// </summary>
  27. /// <param name="connString">连接字符串</param>
  28. /// <param name="DbType">数据库类型</param>
  29. /// <returns></returns>
  30. public static IDatabase GetIDatabase(string connString, DatabaseType dbType)
  31. {
  32. return GetIDatabaseByIoc(dbType.ToString(), connString);
  33. }
  34. /// <summary>
  35. /// 连接数据库
  36. /// </summary>
  37. /// <param name="connString">连接字符串</param>
  38. /// <param name="dbType">数据库类型</param>
  39. /// <returns></returns>
  40. public static IDatabase GetIDatabase(string connString, string dbType)
  41. {
  42. return GetIDatabaseByIoc(dbType, connString);
  43. }
  44. /// <summary>
  45. /// 连接数据库
  46. /// </summary>
  47. /// <param name="name">连接配置名称</param>
  48. /// <returns></returns>
  49. public static IDatabase GetIDatabase(string name)
  50. {
  51. string providerName = ConfigurationManager.ConnectionStrings[name].ProviderName;
  52. return GetIDatabaseByIoc(GetDbType(providerName).ToString(), name);
  53. }
  54. /// <summary>
  55. /// 连接数据库
  56. /// </summary>
  57. /// <param name="name">数据库类型</param>
  58. /// <param name="connString">连接字符串</param>
  59. /// <returns></returns>
  60. private static IDatabase GetIDatabaseByIoc(string name, string connString)
  61. {
  62. return UnityIocHelper.Instance.GetService<IDatabase>(name, new ParameterOverride(
  63. "connString", connString));
  64. }
  65. /// <summary>
  66. /// 获取数据库类型
  67. /// </summary>
  68. /// <param name="providerName">驱动名称</param>
  69. /// <returns></returns>
  70. private static DatabaseType GetDbType(string providerName)
  71. {
  72. DatabaseType dbType;
  73. switch (providerName)
  74. {
  75. case "System.Data.SqlClient":
  76. dbType = DatabaseType.SqlServer;
  77. break;
  78. case "MySql.Data.MySqlClient":
  79. dbType = DatabaseType.MySql;
  80. break;
  81. case "Oracle.ManagedDataAccess.Client":
  82. dbType = DatabaseType.Oracle;
  83. break;
  84. case "System.Data.OracleClient":
  85. dbType = DatabaseType.Oracle;
  86. break;
  87. default:
  88. dbType = DatabaseType.SqlServer;
  89. break;
  90. }
  91. return dbType;
  92. }
  93. }
  94. }