Conversion error when trying to insert into bank with entity and C #

1

This is the method to insert:

public virtual void Inserir(T item) 
        {
            contexto.Set<T>().Add(item);
            contexto.SaveChanges();
        }

I created a method by passing the parameters to my object and then calling the insert method, so (I tried to avoid the "language" but could not):

private void InserirBalanca(int ticket, DateTime dtlancamento, string fornecedor, string motorista, string placa, decimal peso,
                                    decimal umidade, decimal impureza, decimal pesoliq, decimal desconto, decimal valorsec, decimal saca, 
                                    decimal tabela, string pesagem)
        {
            SiloContext contexto = new SiloContext();
            IRepositorio<Balanca> insere = new Repositorio<Balanca>(contexto);

            var balanca = contexto.Balancas;

            foreach(var blc in balanca)
            {
                blc.Ticket = ticket;
                blc.DtLancamento = dtlancamento;
                blc.Fornecedor = fornecedor;
                blc.Motorista = motorista;
                blc.Placa = placa;
                blc.Peso = peso;
                blc.Umidade = umidade;
                blc.Impureza = impureza;
                blc.PesoLiq = pesoliq;
                blc.Desconto = desconto;
                blc.ValorSec = valorsec;
                blc.Saca = saca;
                blc.Tabela = tabela;
                blc.Pesagem = pesagem;
                balanca.Add(blc);
            }

            insere.Inserir(balanca);
        }

In this line insere.Inserir(balanca); , you are giving cast error, see the image:

I checked this error on the net, but it did not work, I think it's because of the name Balanca.

    
asked by anonymous 17.08.2017 / 01:36

1 answer

2

face, its balanca comes from contexto.Balancas; logo, is DbSet . The inserir method expects to receive an object Balanca

I also do not understand the foreach pq, but according to your code what you are trying to do should be + - like this:

        foreach(var blc in balanca)
        {
            blc.Ticket = ticket;
            blc.DtLancamento = dtlancamento;
            blc.Fornecedor = fornecedor;
            blc.Motorista = motorista;
            blc.Placa = placa;
            blc.Peso = peso;
            blc.Umidade = umidade;
            blc.Impureza = impureza;
            blc.PesoLiq = pesoliq;
            blc.Desconto = desconto;
            blc.ValorSec = valorsec;
            blc.Saca = saca;
            blc.Tabela = tabela;
            blc.Pesagem = pesagem;
            insere.Inserir(blc);
        }

Edit:

As Alexandre and I commented, we do not understand the reason for foreach, that is, because you go through all the records stored in the database, and leave them all again with the new values passed. You should just create a new object Balanca and insert. It would look like this:

    private void InserirBalanca(int ticket, DateTime dtlancamento, string fornecedor, string motorista, string placa, decimal peso,
                                decimal umidade, decimal impureza, decimal pesoliq, decimal desconto, decimal valorsec, decimal saca, 
                                decimal tabela, string pesagem)
    {
        SiloContext contexto = new SiloContext();
        IRepositorio<Balanca> insere = new Repositorio<Balanca>(contexto);

        var blc = new Balanca();
        blc.Ticket = ticket;
        blc.DtLancamento = dtlancamento;
        blc.Fornecedor = fornecedor;
        blc.Motorista = motorista;
        blc.Placa = placa;
        blc.Peso = peso;
        blc.Umidade = umidade;
        blc.Impureza = impureza;
        blc.PesoLiq = pesoliq;
        blc.Desconto = desconto;
        blc.ValorSec = valorsec;
        blc.Saca = saca;
        blc.Tabela = tabela;
        blc.Pesagem = pesagem;

        insere.Inserir(blc);
    }

I hope I have helped.

    
17.08.2017 / 03:21