12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- using EVCB_OCPP.Domain;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.DependencyInjection;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace EVCB_OCPP.WSServer.Helper;
- public static class AddPortalDbContext
- {
- public const string CommandTimeoutKey = "CommandTimeout";
- public static IServiceCollection AddMainDbContext(this IServiceCollection services, IConfiguration configuration)
- {
- const string DbUserIdKey = "MainDbUserIdKey";
- const string DbPassKey = "MainDbPass";
- const string DbConnectionStringKey = "MainDBContext";
- AddPortalDbContextInternal<MainDBContext>(services,configuration, DbUserIdKey, DbPassKey, DbConnectionStringKey);
- return services;
- }
- public static IServiceCollection AddMeterValueDbContext(this IServiceCollection services, IConfiguration configuration)
- {
- const string DbUserIdKey = "MeterValueDbUserId";
- const string DbPassKey = "MeterValueDbPass";
- const string DbConnectionStringKey = "MeterValueDBContext";
- AddPortalDbContextInternal<MeterValueDBContext>(services, configuration, DbUserIdKey, DbPassKey, DbConnectionStringKey);
- return services;
- }
- public static IServiceCollection AddConnectionLogDbContext(this IServiceCollection services, IConfiguration configuration)
- {
- const string DbUserIdKey = "ConnectionLogDbUserId";
- const string DbPassKey = "ConnectionLogDbPass";
- const string DbConnectionStringKey = "ConnectionLogDBContext";
- AddPortalDbContextInternal<ConnectionLogDBContext>(services, configuration, DbUserIdKey, DbPassKey, DbConnectionStringKey);
- return services;
- }
- private static void AddPortalDbContextInternal<T>(
- IServiceCollection services, IConfiguration configuration,
- string UserIdKey,string DbPassKey, string ConnectionStringKey) where T : DbContext
- {
- var commandTimeout = int.TryParse(configuration[CommandTimeoutKey], out var temp) ? temp : 180;
- string mainDbUserId = string.IsNullOrEmpty(configuration[UserIdKey]) ? string.Empty : $"user id={configuration[UserIdKey]};";
- string mainDbUserPass = string.IsNullOrEmpty(configuration[DbPassKey]) ? string.Empty : $"password={configuration[DbPassKey]};";
- services.AddPooledDbContextFactory<T>((options) => {
- var cString = configuration.GetConnectionString(ConnectionStringKey);
- cString = $"{cString}{mainDbUserId}{mainDbUserPass}";
- options.UseSqlServer(cString, dbOptions =>
- {
- dbOptions.CommandTimeout(commandTimeout);
- });
- });
- }
- }
|