TransWikia.com

Fluent Api en EF Core No funciona HasDefaultValueSql

Stack Overflow en español Asked by Antonio Guerrero on August 1, 2020

Tengo esta configuracion en especifico para para tabla "customer", el campo idCatalogTipoDoc , tiene el valor por defecto "1"

  protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
    
               modelBuilder.Entity<Customer>(entity =>
        {

            entity.ToTable("customer");

            entity.HasIndex(e => e.Documento)
                .HasName("index_documento");

            entity.HasIndex(e => e.RazonSocial)
                .HasName("index_razon");

            entity.Property(e => e.Id).HasColumnName("id");

            entity.Property(e => e.Condicion)
                .HasColumnName("condicion")
                .HasDefaultValueSql("((1))");

            entity.Property(e => e.ContactParentId).HasColumnName("contact_parent_id");

            entity.Property(e => e.CreateAt)
                .HasColumnType("datetime")
                .HasDefaultValueSql("(getdate())");

            entity.Property(e => e.Customer1)
                .IsRequired()
                .HasColumnName("customer")
                .HasDefaultValueSql("((1))");

            entity.Property(e => e.Direccion)
                .HasColumnName("direccion")
                .HasMaxLength(1500)
                .IsUnicode(false);

            entity.Property(e => e.Documento)
                .HasColumnName("documento")
                .HasMaxLength(50)
                .IsUnicode(false);

            entity.Property(e => e.Email)
                .HasColumnName("email")
                .HasMaxLength(50)
                .IsUnicode(false);

            entity.Property(e => e.IdCatalogTipoDoc)
                .HasColumnName("idCatalogTipoDoc")
                .HasDefaultValueSql("1");

            entity.Property(e => e.IdTipoCustomer).HasDefaultValueSql("((1))");

            entity.Property(e => e.ParentId).HasColumnName("parent_id");

            entity.Property(e => e.RazonSocial)
                .HasColumnName("razonSocial")
                .HasMaxLength(400)
                .IsUnicode(false);

            entity.Property(e => e.Supplier).HasColumnName("supplier");

            entity.Property(e => e.Telefono)
                .HasColumnName("telefono")
                .HasMaxLength(50)
                .IsUnicode(false);

            entity.Property(e => e.TipoDocumento)
                .HasColumnName("tipoDocumento")
                .HasMaxLength(10)
                .IsUnicode(false);

            entity.Property(e => e.TotalSale).HasColumnType("decimal(11, 2)");

            entity.Property(e => e.UpdatedAt)
                .HasColumnType("datetime")
                .HasDefaultValueSql("(getdate())");

            entity.HasOne(d => d.IdCatalogTipoDocNavigation)
                .WithMany(p => p.Customer)
                .HasForeignKey(d => d.IdCatalogTipoDoc)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK_cliente_catalogTipoDocumento");

            entity.HasOne(d => d.IdTipoCustomerNavigation)
                .WithMany(p => p.Customer)
                .HasForeignKey(d => d.IdTipoCustomer)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK_customer_tipo_customer");
        });
    
           }

Model Customer

 public abstract class BaseEntity
    {
        public int Id { get; set; }

    }

 public partial class Customer:BaseEntity
    {
        public Customer()
        {
            Cotizacion = new HashSet<Cotizacion>();
            Document = new HashSet<Document>();
            NotaComprobante = new HashSet<NotaComprobante>();
            PaymentsAccounts = new HashSet<PaymentsAccounts>();
            PreVenta = new HashSet<PreVenta>();
        }

        public string RazonSocial { get; set; }
        public string Email { get; set; }
        public string Documento { get; set; }
        public string TipoDocumento { get; set; }
        public string Direccion { get; set; }
        public bool? Condicion { get; set; }
        public int CantSale { get; set; }
        public decimal TotalSale { get; set; }
        [DefaultValue("1")]
        public int IdCatalogTipoDoc { get; set; }
        public bool IsDefault { get; set; }
        [DefaultValue("1")]
        public int IdTipoCustomer { get; set; }
        public string Telefono { get; set; }
        public int? ParentId { get; set; }
        public int ContactParentId { get; set; }
        public bool? Customer1 { get; set; }
        public bool Supplier { get; set; }
        public DateTime CreateAt { get; set; }
        public DateTime UpdatedAt { get; set; }

        public CatalogTipoDocumento IdCatalogTipoDocNavigation { get; set; }
        public CatalogTipoCustomer IdTipoCustomerNavigation { get; set; }
        public ICollection<Cotizacion> Cotizacion { get; set; }
        public ICollection<Document> Document { get; set; }
        public ICollection<NotaComprobante> NotaComprobante { get; set; }
        public ICollection<PaymentsAccounts> PaymentsAccounts { get; set; }
        public ICollection<PreVenta> PreVenta { get; set; }
    }

Model CatalogTipoDoc

public partial class CatalogTipoDocumento:BaseEntity
    {
        public CatalogTipoDocumento()
        {
            Customer = new HashSet<Customer>();
        }

        public string Descripcion { get; set; }
        public string CodigoSunat { get; set; }
        public bool? Condicion { get; set; }
        public bool IsDefault { get; set; }

        public ICollection<Customer> Customer { get; set; }
    }

Service

Customer customerReturn1 = new Customer()
                {
                RazonSocial = customerDto.name,
                Documento = customerDto.number,
                Email = customerDto.email,
                TipoDocumento = customerDto.identity_document_type_id,
                Direccion = customerDto.address,
                Telefono = customerDto.phone,
                  // Excluyo setear el campo idCatalogTipoDoc

               }
                await _unitOfWork.CustomerRepository.Add(customerReturn1);
                await _unitOfWork.SaveChangesAsync();



Instrucción INSERT en conflicto con la restricción FOREIGN KEY "FK_cliente_catalogTipoDocumento". El conflicto ha aparecido en la base de datos "bdComercioMultisucursal", tabla "dbo.catalogTipoDocumento", column 'id'.
Se terminó la instrucción.

Me arroja un error de conflictos de claves foréneas , porq no esta seteando el valor por defecto de la columna , la operacion es éxito solo cuando lo seteo al crear la entidad.
Debo mencionar que ya agregue el valor por defecto en la bd sqlserver.
introducir la descripción de la imagen aquí

En que puedo estar fallando?
Talvez si no he sido lo mas explicito posible o me falta agregar informacion , corriganme , gracias y espero sus recomendaciones sobre mi pregunta

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP