laatzen/LaaProductionWeb/LaaProductionWeb.Data/SqlClientExtensions.cs
2023-05-17 14:57:05 +02:00

52 lines
1.6 KiB
C#

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<ISqlClient>(_ => 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);
}
}
}