//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(); // ob.UseLoggerFactory(_myLoggerFactory); // ob.UseInternalServiceProvider() 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 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 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); } } }