FreeSqlSingleton.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Microsoft.Extensions.Logging;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. namespace TEAMModelOS.SDK.Module.FreeSqlExtension.Configuration
  6. {
  7. public sealed class FreeSqlSingleton
  8. {
  9. private static FreeSqlConnectionConfig _connectionConfig;
  10. private static ILoggerFactory _loggerFactory;
  11. private IFreeSql freeSql;
  12. private FreeSqlSingleton() { }
  13. public IFreeSql GetTableClient()
  14. {
  15. if (freeSql != null)
  16. {
  17. return freeSql;
  18. }
  19. else
  20. {
  21. getInstance(_connectionConfig , _loggerFactory);
  22. return freeSql;
  23. }
  24. }
  25. public static FreeSqlSingleton getInstance(FreeSqlConnectionConfig connectionConfig, ILoggerFactory loggerFactory)
  26. {
  27. _loggerFactory = loggerFactory;
  28. _connectionConfig = connectionConfig;
  29. return SingletonInstance.instance;
  30. }
  31. private static class SingletonInstance
  32. {
  33. public static FreeSqlSingleton instance = new FreeSqlSingleton()
  34. {
  35. freeSql = new FreeSql.FreeSqlBuilder()
  36. .UseConnectionString(_connectionConfig.DataType, _connectionConfig.ConnectionString)
  37. .UseLogger(_loggerFactory.CreateLogger<IFreeSql>())
  38. .UseAutoSyncStructure(_connectionConfig.AutoSyncStructure) //自动迁移实体的结构到数据库
  39. .Build()
  40. };
  41. }
  42. }
  43. }