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

Entity não esta criando tabela.

Criei um banco e as classes aqui, instalei tudo certo aparentemente, executo os codigos para o ENtity criar a tabela no meu banco porem não esta aparecendo a tabela. Mesmo com a mensagem do Update-database mostrando mensagem de Done. Como debugar pra ver o q esta rolando para a tabela nao ser criada ? Desconfiei da ConfigString mas aparentemente esta ok tb.. enfim.. alguma luz ?

6 respostas

Olá, Felippe!

Verifique se a sua implementação de DbContext tem esse método:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<NOME_DA_SUA_TABELA>();
}

Adicionei o OnModelCreating porem o erro persiste. Vou colar os codigos que estou usando abaixo para ver se vc tem uma luz:

Classe Usuario:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OETabelas.Tabelas
{
    public class Usuario
    {
        public int ID { get; set; }
        public string Nome { get; set; }
        public string Senha { get; set; }
    }
}

Classe Entity:

using Microsoft.Data.Entity;
using OETabelas.Tabelas;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OEE_BioLab_Tabelas
{
    public class EntidadesContext : DbContext
    {
        DbSet<Usuario> Usuarios { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            string stringConexao = ConfigurationManager.ConnectionStrings["OETabelasConnectionString"].ConnectionString;
            optionsBuilder.UseSqlServer(stringConexao);
            base.OnConfiguring(optionsBuilder);
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<Usuario>();
        }
    }
}

APP.Config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="OEE_BioLab_TabelasConnectionString"
            connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\OETabelas.mdf;Integrated Security=True;Connect Timeout=30"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
</configuration>

Observações adicionais:

1 - A Classe USUARIO esta dentro de uma pasta chamada "Tabelas"

2 - A Classe ENTIDADECONTEXT esta na raiz do projeto no VisualStudio (Coloquei essa info pq inicialmente criei essa classe dentro da pasta "Tabelas" e tirei de la posteriormente)

3 - No Program.CS, chamo a classe EntidadeContext, porem qd dou um contexto.Usuarios, ele não esta reconhecendo o Usuarios.. por isso tirei da pasta Tabelas como dito anteriormente, achando q poderia ser isso, porem continua sem reconhecer. Acho q isso pode dar alguma pista.

Obrigado pela ajuda.. fico no agaurdo

Felippe, tente criar um construtor sem parâmetro na sua classe DbContext (EntidadesContext), passando para a classe base o nome da sua string de conexão:

public EntidadesContext ()
        : base("name=OEE_BioLab_TabelasConnectionString")

Boa sorte e bons estudos!

Agora esta dando esse erro qd tento rodar o update:

Error Number:2714,State:6,Class:16
There is already an object named 'Venda' in the database.

Porem a tabela Venda nao esta no banco.. O q esta rolando ?

solução!

Marcelo, descobri aqui. O que esta rolando é que, qd estava criando o BD, pedia pra salvar dentro da pasta do projeto, porem no passo seguinte, ele perguntava se queria copiar dentro do projeto e eu dava SIM. O banco q eu criei aparecia no Gerenciador de Servidores, porem ele estava apontando para OUTRO bd, o q foi criado dentro da pasta. Cabeçada de principiante, embora acredite q deve confundir a galera esse lance de aparecer um MDB diferente no gerenciador de servidores. Obrigado pela atenção.

Excelente, Felippe! Essa solução pode ser útil pra outros alunos também. Valeu!