DbProvider.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using Infrastructure;
  2. using Infrastructure.Extensions;
  3. using SqlSugar;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Text.RegularExpressions;
  9. using System.Threading.Tasks;
  10. namespace ZR.CodeGenerator
  11. {
  12. /// <summary>
  13. /// 代码生成数据库连接
  14. /// </summary>
  15. public class DbProvider
  16. {
  17. protected static SqlSugarClient CodeDb;
  18. /// <summary>
  19. /// 获取动态连接字符串
  20. /// </summary>
  21. /// <param name="dbName">数据库名</param>
  22. /// <returns></returns>
  23. public SqlSugarClient GetSugarDbContext(string dbName = "")
  24. {
  25. string connStr = AppSettings.GetConfig(GenConstants.Gen_conn);
  26. int dbType = AppSettings.GetAppConfig(GenConstants.Gen_conn_dbType, 0);
  27. if (!string.IsNullOrEmpty(dbName))
  28. {
  29. string replaceStr = GetValue(connStr, "Database=", ";");
  30. string replaceStr2 = GetValue(connStr, "Initial Catalog=", ";");
  31. if (replaceStr.IsNotEmpty())
  32. {
  33. connStr = connStr.Replace(replaceStr, dbName, StringComparison.OrdinalIgnoreCase);
  34. }
  35. if (replaceStr2.IsNotEmpty())
  36. {
  37. connStr = connStr.Replace(replaceStr2, dbName, StringComparison.OrdinalIgnoreCase);
  38. }
  39. }
  40. var db = new SqlSugarClient(new List<ConnectionConfig>()
  41. {
  42. new ConnectionConfig(){
  43. ConnectionString = connStr,
  44. DbType = (DbType)dbType,
  45. IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样
  46. InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息
  47. },
  48. });
  49. CodeDb = db;
  50. return db;
  51. }
  52. /// <summary>
  53. /// 获得字符串中开始和结束字符串中间得值
  54. /// </summary>
  55. /// <param name="str">字符串</param>
  56. /// <param name="s">开始</param>
  57. /// <param name="e">结束</param>
  58. /// <returns></returns>
  59. public static string GetValue(string str, string s, string e)
  60. {
  61. Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline);
  62. return rg.Match(str).Value;
  63. }
  64. }
  65. }