none
Criar tabelas - Code First RRS feed

  • Pergunta

  • Bom dia.

    Estou começando alguns testes utilizando o Code First.

    Minha dúvida é a seguinte, utilizando o comando contexto.Database.Create() é criado todo o banco de dados, com as tabelas relacionadas ao contexto (as DbSet). Até aí, entendi.

    Agora, depois que eu criei o meu DataBase, como faço para adicionar uma tabela nova nele? Digamos que eu possua outra classe com um outro DbSet, e quero adicionar a uma Database já existente. Como fazer?

    Grato.

    Att,

    Cesar Vinicius


    Vinicius

    quinta-feira, 26 de abril de 2012 15:26

Respostas

  • Olá Vinícius,

    Vamos tentar identificar a versão do seu EF Code First.
    Clique com o botão direito na dll EntityFramework.dll, vá em propriedades, vá na aba Version e veja qual versão é a data sua DLL.
    O Migration esta disponível a partir da 4.2, a 4.1 não da suporte ao Migration.

    No caso, o Migration é quem irá construir a tabela para vc.

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 26 de abril de 2012 18:10
    Moderador
  • Olá,

    Nesta thread existem todos os dados que vc precisa: http://social.msdn.microsoft.com/Forums/pt-BR/adoptpt/thread/49983a46-1acb-45ad-b68d-d7936dc7585b

    Para encurtar o caminho:

    Instalação do Entity Framework Code-First*

    Download da versão mais recente (NuGet): http://msdn.microsoft.com/pt-br/data/ee712906

    **Download do ultimo preview (NuGet): http://msdn.microsoft.com/pt-br/data/ee712906

    ***ADO.NET Entity Framework 4.1: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8363

    * recomenda-se que seja feita a instalação via NuGet (http://docs.nuget.org/docs/start-here/overview), por ser o meio mais fácil de adicionar, remover e atualizar bibliotecas e ferramentas no Visual Studio.

    ** o significado de “ultimo preview” é: a última versão Beta liberada pelo time de ADO.Net para utilização.

    *** recomendo o download das versões mais recentes, a versão 4.1 não possui a correção de bugs disponíveis nas versões mais novas e possui menos recursos. Se não me engano, as versões mais recentes estão disponíveis apenas através de NuGet.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 26 de abril de 2012 18:18
    Moderador

Todas as Respostas

  • Olá Vinicius,

    Vc vai precisar de algo mais ou menos assim:

    public class CreateUserTable_001 : Migration
    {
            public void Up()
            {
                    Database.CreateTable("User",
                                    new Column("UserId", DbType.Int32, ColumnProperties.PrimaryKeyWithIdentity),
                                    new Column("Username", DbType.AnsiString, 25)
                    );
            }
    }

    Referência: http://code.google.com/p/migratordotnet/wiki/GettingStarted

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 26 de abril de 2012 16:36
    Moderador
  • Desculpe Fernando, mas não consegui usar o "Database.CreateTable".

    Acesso o "Database" a partir do meu contexto (contexto.Database), porém, não aparece o método "CreateTable".

    Grato.

    Att,


    Vinicius

    quinta-feira, 26 de abril de 2012 16:52
  • Olá Vinicius,

    E desta forma:

    namespace MigrationsCodeDemo.Migrations
    {
        using System.Data.Entity.Migrations;
    
        public partial class AddPostClass : DbMigration
        {
            public override void Up()
            {
                CreateTable(
                    "Posts",
                    c => new
                        {
                            PostId = c.Int(nullable: false, identity: true),
                            Title = c.String(maxLength: 200),
                            Content = c.String(),
                            BlogId = c.Int(nullable: false),
                        })
                    .PrimaryKey(t => t.PostId)
                    .ForeignKey("Blogs", t => t.BlogId, cascadeDelete: true)
                    .Index(t => t.BlogId)
                    .Index(p => p.Title, unique: true);
    
                AddColumn("Blogs", "Rating", c => c.Int(nullable: false, defaultValue: 3));
            }
        }
    }

    Referência: http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 26 de abril de 2012 17:03
    Moderador
  • Alguma coisa deve estar errada aqui, pois não tenho o "System.Data.Entity.Migrations" não existe "Migrations" depois de Entity...
    
    
    

    Vinicius


    Meu EF é o 4...
    • Editado Vinicius Bernardo quinta-feira, 26 de abril de 2012 17:15 Mais informações
    quinta-feira, 26 de abril de 2012 17:13
  • Olá Vinicius,

    O migration é um recurso do Code First disponível a partir da versão 4.2.

    Vc esta utilizando qual versão do EF Code First?

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 26 de abril de 2012 17:33
    Moderador
  • Fernando, nas propriedades do projeto aparece Entity Framework 4.


    Vinicius

    quinta-feira, 26 de abril de 2012 17:41
  • Olá Vinicius,

    Vc fez referência a DLL EntityFramework.dll?

    Vc chegou a instalar o EF Code First utilizando NuGet?

    Se não, então acredito que vc ainda não tenha referências do Code First em seu projeto.

    Vc tem algum código Code First em seu projeto?

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 26 de abril de 2012 17:49
    Moderador
  • Fiz a referencia sim.

    Nunca utilizei o NuGet.

    Como assim codigo Code First no meu projeto?

    O que fiz até agora foi criar uma classe onde coloquei os atributos que quero no meu banco, usei nela alguns DataAnnotations. Criei outra classe, sendo meu contexto, com a string de conexao, um DbSet da classe dos atributos, um override na pluralização de nomes, e um método para criar a minha Database. Esta funcionando perfeitamente. Agora quero adicionar tabelas nessa Database...

    Obrigado.

    
    
    

    Vinicius

    quinta-feira, 26 de abril de 2012 18:05
  • Olá Vinícius,

    Vamos tentar identificar a versão do seu EF Code First.
    Clique com o botão direito na dll EntityFramework.dll, vá em propriedades, vá na aba Version e veja qual versão é a data sua DLL.
    O Migration esta disponível a partir da 4.2, a 4.1 não da suporte ao Migration.

    No caso, o Migration é quem irá construir a tabela para vc.

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 26 de abril de 2012 18:10
    Moderador
  • Realmente, é versão 4.1.10311.0, data de modificação 11/03/2011.

    Sabe onde eu encontro a dll mais atual? Preciso apenas substituir ela?

    Obrigado!


    Vinicius

    quinta-feira, 26 de abril de 2012 18:15
  • Olá,

    Nesta thread existem todos os dados que vc precisa: http://social.msdn.microsoft.com/Forums/pt-BR/adoptpt/thread/49983a46-1acb-45ad-b68d-d7936dc7585b

    Para encurtar o caminho:

    Instalação do Entity Framework Code-First*

    Download da versão mais recente (NuGet): http://msdn.microsoft.com/pt-br/data/ee712906

    **Download do ultimo preview (NuGet): http://msdn.microsoft.com/pt-br/data/ee712906

    ***ADO.NET Entity Framework 4.1: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8363

    * recomenda-se que seja feita a instalação via NuGet (http://docs.nuget.org/docs/start-here/overview), por ser o meio mais fácil de adicionar, remover e atualizar bibliotecas e ferramentas no Visual Studio.

    ** o significado de “ultimo preview” é: a última versão Beta liberada pelo time de ADO.Net para utilização.

    *** recomendo o download das versões mais recentes, a versão 4.1 não possui a correção de bugs disponíveis nas versões mais novas e possui menos recursos. Se não me engano, as versões mais recentes estão disponíveis apenas através de NuGet.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique

    quinta-feira, 26 de abril de 2012 18:18
    Moderador
  • Fernando, a princípio funcionou a intalação da ultima versao do EF.

    Agora, vou dar uma lida no artigo que me enviou para ver se eu entendo melhor como funciona o Migrations.

    Obrigado!


    Vinicius

    quinta-feira, 26 de abril de 2012 19:14