using Entidades; using Microsoft.EntityFrameworkCore; namespace Modelo; public class Context : Microsoft.EntityFrameworkCore.DbContext { public DbSet Categorias { get; set; } public DbSet Clientes { get; set; } public DbSet Facturas { get; set; } public DbSet Lotes { get; set; } public DbSet DetalleFacturas { get; set; } public DbSet DetallePresupuestos { get; set; } public DbSet DetalleOrdenDeCompras { get; set; } public DbSet OrdenDeCompras { get; set; } public DbSet Presupuestos { get; set; } public DbSet ProductoPercederos { get; set; } public DbSet ProductoNoPercederos { get; set; } public DbSet Proveedores { get; set; } public DbSet Remitos { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // Esto de poner credenciales sueltas está mal optionsBuilder.UseSqlServer(@"Server=fedesrv.ddns.net,1433;Database=ControlStockDAS;User Id=ProyectoDas;Password=A?5?~*=Gux'}JT0me,z5Cf^f(s'-gy[G#-jt%b&uHe+/,$Gl>qkXl-c[@&e(\.V?[3)\w|aMH+^67x;Trusted_Connection=False;Encrypt=False;Connection Timeout=5;"); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); /// Categoria modelBuilder.Entity() .ToTable("Categoria") .HasKey(x => x.Id); modelBuilder.Entity() .Property(c => c.Descripcion) .IsRequired() .HasMaxLength(50); /// Cliente modelBuilder.Entity() .ToTable("Clientes") // Nombre de la tabla .HasKey(c => c.Cuit); // Configura la clave primaria modelBuilder.Entity() .Property(x => x.Cuit) .ValueGeneratedNever(); modelBuilder.Entity() .Property(c => c.Nombre) .IsRequired() .HasMaxLength(30); modelBuilder.Entity() .Property(c => c.Apellido) .IsRequired() .HasMaxLength(30); modelBuilder.Entity() .Property(c => c.Direccion) .IsRequired() .HasMaxLength(50); modelBuilder.Entity() .Property(c => c.Correo) .IsRequired() .HasMaxLength(150); modelBuilder.Entity() .Property(c => c.Habilitado) .IsRequired() .HasDefaultValue(true); /// Factura Y DetalleFactura modelBuilder.Entity() .ToTable("Facturas") .HasKey(f => f.Id); modelBuilder.Entity() .HasMany(f => f.Detalles) .WithOne() .HasForeignKey(df => df.IdFactura); modelBuilder.Entity() .ToTable("DetallesFacturas") .HasKey(df => new { df.Id, df.IdFactura }); modelBuilder.Entity() .Property(df => df.IdFactura) .IsRequired(); //Producto modelBuilder.Entity(entity => { entity.HasKey(e => e.Id); entity.Property(e => e.Nombre) .IsRequired() .HasMaxLength(30); entity.Property(e => e.Precio) .HasColumnType("float"); entity.Property(e => e.Habilitado) .IsRequired() .HasDefaultValue(true); entity.Property(e => e.EsPerecedero) .IsRequired(); entity.HasMany(e => e.proveedores) .WithMany() .UsingEntity>( "ProductoProveedor", j => j.HasOne().WithMany().HasForeignKey("ProveedorId"), j => j.HasOne().WithMany().HasForeignKey("ProductoId"), j => j.HasKey("ProveedorId", "ProductoId")); entity.HasMany(e => e.categorias) .WithMany() .UsingEntity>( "ProductoCategoria", j => j.HasOne().WithMany().HasForeignKey("CategoriaId"), j => j.HasOne().WithMany().HasForeignKey("ProductoId"), j => j.HasKey("CategoriaId", "ProductoId")); }); // Mapeo para ProductoNoPercedero modelBuilder.Entity(entity => { entity.Property(e => e.TipoDeEnvase) .HasConversion(); }); modelBuilder.Entity(entity => { entity.HasKey(x => x.Cuit); entity.Property(x => x.Cuit).ValueGeneratedNever(); entity.Property(x => x.Nombre) .IsRequired() .HasMaxLength(30); entity.Property(x => x.Habilitado) .IsRequired() .HasDefaultValue(true); entity.Property(x => x.RazonSocial) .IsRequired() .HasMaxLength(60); entity.Property(x => x.Direccion) .IsRequired() .HasMaxLength(60); }); modelBuilder.Entity() .HasKey(df => new { df.Id, df.IdOrdenDeCompra }); modelBuilder.Entity() .HasKey(x => x.Id); modelBuilder.Entity() .HasMany(x => x.Detalles) .WithOne() .HasForeignKey(x => x.IdOrdenDeCompra); modelBuilder.Entity() .HasKey(df => new { df.Id, df.IdPresupuesto }); modelBuilder.Entity() .HasKey(x => x.Id); modelBuilder.Entity() .HasMany(x => x.detalles) .WithOne() .HasForeignKey(x => x.IdPresupuesto); modelBuilder.Entity() .HasKey(df => new { df.Id, df.IdRemito }); modelBuilder.Entity() .HasKey(x => x.Id); modelBuilder.Entity() .HasMany(x => x.Lotes) .WithOne() .HasForeignKey(x => x.IdRemito); } }