2
respostas

Criei uma classe que possuía um campo DateTime, mas ele vive dizendo que estoura, o que estou fazendo de errado?

SqlTypeException: Estouro de SqlDateTime. Deve estar entre 1/1/1753 12:00:00 AM e 31/12/9999 11:59:59 PM.

//=======================================================

public class CompraConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { builder .ToTable("Compra");

        builder
            .Property(c => c.Id)
            .HasColumnName("Compra_id");

        builder
            .HasKey(c => new { c.ClienteId, c.LoteId});//relacionamento muitos


        builder
            .Property(c => c.Preco)
            .HasColumnName("Compra_preco")
            .HasColumnType("FLOAT")
            .IsRequired();

        builder
            .Property(c => c.Data)
            .HasColumnName("Compra_Data")
            .HasColumnType("datetime")
    .IsRequired();

    }
}

//=====================================================

public class Compra { public int Id { get; set; } public int ClienteId { get; set; } public Cliente Cliente { get; set; } public int LoteId { get; set; } public Lote Lote { get; set; } public double Preco { get; set; } public DateTime Data { get; set; }

    public override string ToString()
    {
        return $"Compra: \n Cliente: {Cliente.Nome} \n Lote: {Lote.Nome} ";
}

//========================================================

2 respostas

Oi Emmanuel, tudo bem?

Precisamos de mais algumas informações. Em que momento essa exceção é lançada? Qual a coluna Compra_Data é populada? Você está passando um valor nulo para essa coluna (um possível motivo para o erro).

Essa exceção é lançada no contexto.SaveChanges(), a coluna Compra_Data é populada por um valor " Datetime.Now " //===========================================

public PopulaBanco()
    {
        this.BancoDeHoras();
        this.Clientes();
        this.Pessoas();

        this.Lotes();
        this.Compra();
        this.ContaBancaria();
        this.ProdutosEstoques();
        this.HistoricoEstoques();
        this.Logins();
        this.Ponto();
        SalvaNoBanco();
    }

private void Compra()
    {
        compra = new Compra();
        compra.Cliente = cliente;
        compra.Data = DateTime.Now;
        compra.Lote = lote;
        compra.Preco = lote.Quantidade * lote.Valor;
    }


private void SalvaNoBanco()
    {
        this.contexto = new Contexto();
        contexto.Compras.Add(this.compra);
        contexto.SaveChanges();
}