Files
Asegasa.NET/bdAsegasa/dbcontext/tscgestionasegasa.cs

172 lines
6.6 KiB
C#

//using bdAsegasa.CompiledModels;
using bdtsFactu.dbcontext;
using Microsoft.AspNetCore.Mvc.Formatters;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using tsEFCore8.Extensiones;
using tsUtilidades;
using tsUtilidades.Enumeraciones;
using tsUtilidades.Extensiones;
using static System.Net.Mime.MediaTypeNames;
using Microsoft.Extensions.Hosting;
using bdAsegasa.db;
using bdAsegasa.dbcontext;
namespace bdAsegasa
{
public class tscgestionasegasa : bdAsegasa.dbcontext.gestionasegasaContext, tsUtilidades.ItsContexto
{
public static bool Cargado = false;
private static String? _Ip = null;
public string? ip
{
get
{
return _Ip;
}
set
{
_Ip = value;
}
}
public string Aplicaciones { get; private set; }
//protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
//{
// if (!optionsBuilder.IsConfigured)
// {
// // optionsBuilder.UseModel(tscFactuModel.Instance);
// if (CargaDiferida) optionsBuilder.UseLazyLoadingProxies();
// if (NoTracking) optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
// // optionsBuilder.UseLoggerFactory(_myLoggerFactory);
// optionsBuilder.UseMySql("server=tsFactu;database=tsFactu;port=13306;uid=m3soft;pwd=Romian2023--;persistsecurityinfo=True;TreatTinyAsBoolean=True;allowuservariables=True", Microsoft.EntityFrameworkCore.ServerVersion.Parse("8.2.0-mysql"));
// }
//}
public static readonly Microsoft.Extensions.Logging.LoggerFactory _myLoggerFactory =
new LoggerFactory(new[] {
new Microsoft.Extensions.Logging.Debug.DebugLoggerProvider()
});
private static string? ConexionPorDefecto=null;
public static tscgestionasegasa NuevoContexto(string NombreConexion = "" ,bool Lazy = true, bool SoloLectura = false, bool ConEventoSavingChanges = false, string aplicaciones = "")
{
string? cnx = null;
if (NombreConexion=="")
{
if (ConexionPorDefecto == null) ConexionPorDefecto = Conexion.ObtieneConexionDefecto();
cnx = ConexionPorDefecto;
}
else
{
cnx = Conexion.ObtieneConexionDefecto(NombreConexion);
}
var ob = new DbContextOptionsBuilder<gestionasegasaContext>();
// ob.UseLoggerFactory(_myLoggerFactory);
// ob.UseInternalServiceProvider(<EnumeracionesService>)
ob.UseMySql(cnx, Microsoft.EntityFrameworkCore.ServerVersion.Parse("5.7.0-mysql"));
if (Lazy) ob.UseLazyLoadingProxies();
if (SoloLectura) ob.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
var Opciones = ob.Options;
tscgestionasegasa bd = new tscgestionasegasa(Opciones);
bd.Aplicaciones = aplicaciones;
if (ConEventoSavingChanges) bd.SavingChanges += GuardandoCambios;
return bd;
}
//public static Datos.BBDD ObtieneBBDD(string NombreConexion)
private static void GuardandoCambios(object? sender, SavingChangesEventArgs e)
{
try
{
tscgestionasegasa bd = (tscgestionasegasa)sender;
var lap = bd.Aplicaciones.Split("|");
//foreach (string ap in lap)
//{
// switch (ap.ToLower())
// {
// case "facturas":
// {
// bdAsegasa.db.facturas.GuardandoCambios(bd, ap);
// break;
// }
// }
//}
}
catch (Exception)
{
throw;
}
}
public tscgestionasegasa(DbContextOptions<gestionasegasaContext> Opciones) : base(Opciones)
{
if (_Ip == null) { ip = tsEFCore8.bbdd.ObtieneIPMysql(this); }
else { ip = _Ip; }
}
public void AñadeObjeto(object Registro)
{
this.Add(Registro);
}
public bool CompruebaUnico(EstadosAplicacion estado, string NombreCampo, object Valor, string NombreTablaBase, object DataContext)
{
return this.CompruebaRegistroUnico(estado == EstadosAplicacion.ModificandoRegistro, "bdAsegasa.db", NombreTablaBase, NombreCampo, Valor, DataContext);
}
public void EliminaObjeto(object Registro)
{
if (this.Entry(Registro).State == Microsoft.EntityFrameworkCore.EntityState.Detached)
{
this.Entry(Registro).State = Microsoft.EntityFrameworkCore.EntityState.Unchanged;
}
else if (this.Entry(Registro).State == Microsoft.EntityFrameworkCore.EntityState.Added)
{
this.Remove(Registro);
this.Entry(Registro).State = Microsoft.EntityFrameworkCore.EntityState.Unchanged;
}
else
{
this.Remove(Registro);
}
}
public int GuardarCambios()
{
return this.SaveChanges();
}
public bool HayModificaciones()
{
return this.ChangeTracker.HasChanges();
//IEnumerable<Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry> res = from e in this.ChangeTracker.Entries()
// where e.State.HasFlag(Microsoft.EntityFrameworkCore.EntityState.Added) ||
// e.State.HasFlag(Microsoft.EntityFrameworkCore.EntityState.Modified) ||
// e.State.HasFlag(Microsoft.EntityFrameworkCore.EntityState.Deleted)
// select e;
//if (res.Any())
// return true;
//return false;
}
public int ObtieneLongitudCampo(string NombreTablaBase, string NombreCampo)
{
return this.ObtieneMaximaLongitudCampo("bdAsegasa.db", NombreTablaBase, NombreCampo);
}
}
}