AddPortalDbContext.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using EVCB_OCPP.Domain;
  2. using EVCB_OCPP.Domain.ConnectionFactory;
  3. using EVCB_OCPP.Domain.Extensions;
  4. using Microsoft.Data.SqlClient;
  5. using Microsoft.EntityFrameworkCore;
  6. using Microsoft.Extensions.Configuration;
  7. using Microsoft.Extensions.DependencyInjection;
  8. using Microsoft.Extensions.Logging;
  9. using NLog.Extensions.Logging;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Configuration;
  13. using System.Data.Entity.Infrastructure;
  14. using System.Diagnostics;
  15. using System.Linq;
  16. using System.Text;
  17. using System.Threading.Tasks;
  18. namespace EVCB_OCPP.WSServer.Helper;
  19. public static class AddPortalDbContext
  20. {
  21. public const string CommandTimeoutKey = "CommandTimeout";
  22. public static IServiceCollection AddWebDBConetext(this IServiceCollection services, IConfiguration configuration)
  23. {
  24. const string DbUserIdKey = "WebDbUserId";
  25. const string DbPassKey = "WebDbPass";
  26. const string DbConnectionStringKey = "WebDBContext";
  27. var conneciotnString = configuration.GetConnectionString(DbUserIdKey, DbPassKey, DbConnectionStringKey);
  28. services.AddSqlConnectionFactory<WebDBConetext>(conneciotnString);
  29. return services;
  30. }
  31. public static IServiceCollection AddOnlineLogDBContext(this IServiceCollection services, IConfiguration configuration)
  32. {
  33. const string DbUserIdKey = "OnlineLogDbUserId";
  34. const string DbPassKey = "OnlineLogDbPass";
  35. const string DbConnectionStringKey = "OnlineLogDBContext";
  36. var conneciotnString = configuration.GetConnectionString(DbUserIdKey, DbPassKey, DbConnectionStringKey);
  37. services.AddSqlConnectionFactory<OnlineLogDBContext>(conneciotnString);
  38. return services;
  39. }
  40. private static void AddPortalDbContextInternal<T>(
  41. IServiceCollection services, IConfiguration configuration,
  42. string connectionString,bool logToConsole = false) where T : DbContext
  43. {
  44. var commandTimeout = int.TryParse(configuration[CommandTimeoutKey], out var temp) ? temp : 180;
  45. services.AddPooledDbContextFactory<T>((serviceProvider, options) => {
  46. options.UseSqlServer(connectionString, dbOptions =>
  47. {
  48. dbOptions.CommandTimeout(commandTimeout);
  49. });
  50. options.UseLoggerFactory(serviceProvider.GetRequiredService<ILoggerFactory>());
  51. });
  52. }
  53. }
  54. /// <summary>
  55. /// Dummy
  56. /// </summary>
  57. public class WebDBConetext : DbContext {}
  58. /// <summary>
  59. /// Dummy
  60. /// </summary>
  61. public class OnlineLogDBContext : DbContext { }