none
Asp.Net MVC 4 - Criar Tabelas em um Único Banco! RRS feed

  • Pergunta

  • Olá,

    Estou seguindo as indicações desse link http://msdn.microsoft.com/pt-br/library/jj129537.aspx que traz um artigo muito bacana sobre como criar projetos MVC, estou surpreso com o Visual Studio, pois facilita bastante o trabalho.

    Porém, como eu faço para criar outros tabelas no mesmo banco, pois seguindo esse artigo, quando crio outros models exemplo:

    Cliente
    Fornecedor
    Produto

    Quando rodo e insiro os dados, cada model tá criando um novo banco de dados, gostaria que tudo ficasse em um único banco de dados, criando apenas as tabelas para cada Model.

    Já cheguei a criar um banco e setar no WebConfig dessa forma:

    <connectionStrings>  <add name="ConnDB"        connectionString="Data Source=C:\Raiz\csharp\SistemaVendas\SistemaVendas\App_DataArtigo.sdf Artigo.sdf"        providerName="System.Data.SqlServerCe.4.0"/></connectionStrings>
    O primeiro model criado, funciona beleza, porém quando sigo para os outros, tenho um erro quando o código vai fazer a leitura do Controller das outras classes, por exemplo a classe produto dá erro nessa parte:

    public ActionResult Index()       {           return View(db.Produtos.ToList());       }

    Se alguém puder ajudar, agradeço muito! :)
    segunda-feira, 17 de junho de 2013 16:53

Respostas

  • Olá,

    Vc precisa colocar todas as models no mesmo contexto, dessa forma:

    public class ConnDB : DbContext
    {
        public DbSet<Produto> Produtos { get; set; }
        public DbSet<Fornecedor> Fornecedores { get; set; }
        public DbSet<Cliente> Clientes { get; set; }
    }

    Lembre-se apenas que seu contexto deve ter o mesmo nome da sua conexão, então 

    <add name="ConnDB ..../>
    
    public class ConnDB : DbContext

    Att,

    • Marcado como Resposta CassioroX segunda-feira, 17 de junho de 2013 18:01
    segunda-feira, 17 de junho de 2013 17:09

Todas as Respostas

  • Olá,

    Vc precisa colocar todas as models no mesmo contexto, dessa forma:

    public class ConnDB : DbContext
    {
        public DbSet<Produto> Produtos { get; set; }
        public DbSet<Fornecedor> Fornecedores { get; set; }
        public DbSet<Cliente> Clientes { get; set; }
    }

    Lembre-se apenas que seu contexto deve ter o mesmo nome da sua conexão, então 

    <add name="ConnDB ..../>
    
    public class ConnDB : DbContext

    Att,

    • Marcado como Resposta CassioroX segunda-feira, 17 de junho de 2013 18:01
    segunda-feira, 17 de junho de 2013 17:09
  • Opa, muito obrigado.

    Deixa eu ver se eu entendi... no caso, eu vou deletar os contextos:

    ClienteContext.cs
    ProdutoContext.cs
    FornecedorContext.cs

    E criar um ConnDB e deixar o "contexto" único?

    E como os contextos também estavam declarados no Controller, eu mudaria todos os Controllers dessa forma:

    Sendo que antes em cada Controller ficava assim:

    Antes
    private ClienteContext db = new ClienteContext();

    Depois
    private ConnDB db = new ConnDB();

    segunda-feira, 17 de junho de 2013 17:32
  • Consegui aqui amigo, tem que corrigir na hora que cria os controllers, digitando o DBContext, para todos as classes criadas.

    Agora está 100% muito obrigado!

    segunda-feira, 17 de junho de 2013 17:54
  • Opa, muito obrigado.

    Deixa eu ver se eu entendi... no caso, eu vou deletar os contextos:

    ClienteContext.cs
    ProdutoContext.cs
    FornecedorContext.cs

    E criar um ConnDB e deixar o "contexto" único?

    E como os contextos também estavam declarados no Controller, eu mudaria todos os Controllers dessa forma:

    Sendo que antes em cada Controller ficava assim:

    Antes
    private ClienteContext db = new ClienteContext();

    Depois
    private ConnDB db = new ConnDB();

    Olá,

    Isso mesmo. Caso esteja usando o Scaffold com Entity Framework, terá que deletar os controles gerados por ele e mandar gerar de novo, dessa vez usando seu novo contexto (ConnDB).

    Att,

    segunda-feira, 17 de junho de 2013 20:20