using EVCB_OCPP.Domain; using EVCB_OCPP.Domain.ConnectionFactory; using EVCB_OCPP.Domain.Extensions; using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; using System; using System.Collections.Generic; using System.Configuration; using System.Data.Entity.Infrastructure; using System.Diagnostics; 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 AddWebDBConetext(this IServiceCollection services, IConfiguration configuration) { const string DbUserIdKey = "WebDbUserId"; const string DbPassKey = "WebDbPass"; const string DbConnectionStringKey = "WebDBContext"; var conneciotnString = configuration.GetConnectionString(DbUserIdKey, DbPassKey, DbConnectionStringKey); services.AddSqlConnectionFactory(conneciotnString); return services; } public static IServiceCollection AddOnlineLogDBContext(this IServiceCollection services, IConfiguration configuration) { const string DbUserIdKey = "OnlineLogDbUserId"; const string DbPassKey = "OnlineLogDbPass"; const string DbConnectionStringKey = "OnlineLogDBContext"; var conneciotnString = configuration.GetConnectionString(DbUserIdKey, DbPassKey, DbConnectionStringKey); services.AddSqlConnectionFactory(conneciotnString); return services; } private static void AddPortalDbContextInternal( IServiceCollection services, IConfiguration configuration, string connectionString,bool logToConsole = false) where T : DbContext { var commandTimeout = int.TryParse(configuration[CommandTimeoutKey], out var temp) ? temp : 180; services.AddPooledDbContextFactory((serviceProvider, options) => { options.UseSqlServer(connectionString, dbOptions => { dbOptions.CommandTimeout(commandTimeout); }); options.UseLoggerFactory(serviceProvider.GetRequiredService()); }); } } /// /// Dummy /// public class WebDBConetext : DbContext {} /// /// Dummy /// public class OnlineLogDBContext : DbContext { }