62 lines
2.0 KiB
C#
62 lines
2.0 KiB
C#
namespace LaaProductionWeb.Data
|
|
{
|
|
using LaaProductionWeb.Data.Interfaces;
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
using System;
|
|
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.WriteLine(e);
|
|
|
|
Log($"[{DateTime.Now: hh:mm:ss}] Error: {e.Source} - {e.Message}{Environment.NewLine}{string.Join(Environment.NewLine, e.Errors)}");
|
|
|
|
// TODO: Handle errors
|
|
}
|
|
|
|
internal static void Log(string message)
|
|
{
|
|
// File.AppendAllText($"{Environment.CurrentDirectory}/App_Data/{DateTime.Now:yyyy_MM_dd}.log", $"{Environment.NewLine}{message}{Environment.NewLine}");
|
|
}
|
|
}
|
|
}
|