Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Coluna inválida

Galera é o seguinte estou com um projeto nas mãos, e estou tentando criar o sistema web com padrão MVC , estou tentando mapear minha base de dados imensa com várias tabelas usando o EntityFramework, estou criando no Models classes com o mesmo nome e com mesmo atributos das tabelas do banco, porém ao executar está dando um erro:

System.Data.SqlClient.SqlException: 'Invalid column name 'Rgle'.'

Ele está dizendo que essa coluna é invalida, mas ela tem no banco sim, lá ela está como nvarchar(30), e na minha classe ela está assim:

public string Rgle { get; internal set; }

Quem puder me ajudar agradeço muito, sou novato na plataforma .NET, estou tentando seguindo os passos do curso aqui inclusive baixando o EntityFrameworkCore na versão 1.1, se tiver alguma forma também do entity fazer todos mapeamentos pra mim entre as tabelas e classes, porque são muitas tabelas e varios bancos de dados que preciso trabalhar no sistema e estão todos prontos que o DBA me enviou...

Código da classe que carrega pra testar o banco:

using ControlMVC.DAO;
using ControlMVC.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace ControlMVC.Controllers
{
    public class DashboardController : Controller
    {
        // GET: Dashboard
        public ActionResult Index()
        {
            using (var context = new ClienteContext())
            {
                IList<Vendedor> vendedores = context.Vendedor.ToList();

                foreach (var item in vendedores)
                {
                    Console.WriteLine(item.Nome);
                }
            }
            return View();
        }

        public ActionResult AdicionarVendedor()
        {
            return RedirectToAction("Adicionar", "Vendedor");
        }
    }
}

Código da classe Vendedor:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace ControlMVC.Models
{
    public class Vendedor
    {
        public long IdVendedor { get; internal set; }
        public string Nome { get; internal set; }
        public string CpfCnpj { get; internal set; }

        public string Rgle { get; internal set; }

        public string NomeRazao { get; internal set; }
        public string Url { get; internal set; }
        public string Obs { get; internal set; }
        public DateTime Inclusao { get; internal set; }
        public DateTime Alteracao { get; internal set; }
        public long IdUsuarioAlt { get; internal set; }
        public long IdUsuarioInc { get; internal set; }
    }
}

Código da classe ClienteContext:

using System;
using Microsoft.EntityFrameworkCore;
using ControlMVC.Models;

namespace ControlMVC.DAO
{
    public class ClienteContext : DbContext
    {
        public DbSet<Vendedor> Vendedor { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Vendedor>()
                .HasKey("IdVendedor");

            //modelBuilder.Entity<Vendedor>()
            //.Property<string>("Rgle").HasDefaultValue(" ");




            base.OnModelCreating(modelBuilder);
        }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                optionsBuilder
                    .UseSqlServer("Server=DESKTOP-9GPMUV2;Database=Cliente;Trusted_Connection=true;");
            }
        }
    }

}
2 respostas

Boa tarde, amigo. Você precisa passar mais informações sobre a base:

A. Tente o mapeamento na tabela no builder:

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
           //Forçando mapeamento da tabela
            modelBuilder.Entity<Vendedor>()
              .ToTable("Vendedor");

            modelBuilder.Entity<Vendedor>()
                .HasKey("IdVendedor");

            //modelBuilder.Entity<Vendedor>()
            //.Property<string>("Rgle").HasDefaultValue(" ");


            base.OnModelCreating(modelBuilder);
        }

B. Essa coluna em questão é FK ?

C. Uma observação, na sua checagem do valor default, eu faria:

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
            //modelBuilder.Entity<Vendedor>()
            //.Property<string>("Rgle").HasDefaultValue(" ");

        modelBuilder.Entity<Vendedor>()
            .Propery(p => p.Rgle)
            .HasDefaultValueSql(" ");
    }
solução!

Boa tarde Leonardo, valeu pela ajuda, fui ver na tabela e a coluna Rgle, e pensei a letra "l" fosse um L mas na verdade é um i maiúsculo, arrumei e passou agora. Só que estou precisando de um help, eu preciso mapear com o entity varias tabelas do banco, e vai ser muito trabalhoso na mão, tem alguma forma do entity fazer tudo para mim?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software