namespace LaaProductionWeb.Data { using LaaProductionWeb.Data.Interfaces; using Microsoft.Extensions.DependencyInjection; using System.Data.SqlClient; using System.Diagnostics; using System.Threading.Tasks; public static class SqlClientExtensions { public static IServiceCollection AddDbContext(this IServiceCollection services, string connectionString) { services.AddTransient(_ => new SqlClient(connectionString)); return services; } internal static void OpenWithErrorHandling(this SqlConnection sqlConnection, SqlInfoMessageEventHandler messageHandler = null) { sqlConnection.FireInfoMessageEventOnUserErrors = true; sqlConnection.InfoMessage += SqlConnectionInfoMessage; if (messageHandler != null) { sqlConnection.InfoMessage += messageHandler; } sqlConnection.Open(); } internal static async Task OpenWithErrorHandlingAsync(this SqlConnection sqlConnection, SqlInfoMessageEventHandler messageHandler = null) { sqlConnection.FireInfoMessageEventOnUserErrors = true; sqlConnection.InfoMessage += SqlConnectionInfoMessage; if (messageHandler != null) { sqlConnection.InfoMessage += messageHandler; } await sqlConnection.OpenAsync(); } internal static void SqlConnectionInfoMessage(object sender, SqlInfoMessageEventArgs e) { Debug.Write(e); } } }