Olá pessoal, tudo bem com vocês? Depois de muito tempo longe da comunidade .NET; passei por momentos muito interessantes na minha carreira profissional nos quais me dediquei muito nos mais variados projetos em que passei e foi devido essa correria total que não tive mais tempo de postar as milhares de novidades que aconteceram na Microsoft. Sem mais delongas, estou de volta :)!!!

Muitos de vocêsjá sabem e para os que ainda não tem conhecimento, a Microsoft está abrindo aos poucos o acesso ao código fonte de várias plataformas e recursos que utilizamos em nosso dia a dia do desenvolvimento. Com isso, tivemos em 28 Março de 2012 a liberação do ASP.NET MVC disponível sobre as licenças Open Source e ao longo dos tempos a Microsoft enxergou um grande pontencial nessa estratégia de trabalho, pois percebeu que o ASP.NET evoliu muito e com uma velocidade muito interessante e, com isso, em 19 de Julho de 2012 o entityframework – assunto que abordaremos nesse nosso post – também entrou para o cenário Open Source, o que trouxe contribuições muito interessantes para o Entityframework. O Entityframework hoje encontra-se em sua versão 7, a qua está em um processo de codificação em um novo Code Base (re-codificação), trazendo com isso muitas melhorias para o ORM da Microsoft.

Uma das principais mudanças que aconteceram nessa nova versão do Entityframework 7 foi o ADEUS ao EDMX – ao meu ver um câncer nos projetos :P. Isso mesmo! Quem quiser migrar para a nova versão do EF terá que fazer uma “Reciclagem” e, querendo ou não, vai ter que aprender a configurar suas entidades de dominio utilizando o Code-First :D. Outra mudança que teve uma melhora interessante, pelo menos pra mim, foi a forma de configuração de uma classe que herda do DbContext. Antes era necessário criarmos um construtor e informar o nome da string de conexão. Com as mudanças da nova versão do Entityframework, foi inserido um novo método chamado OnConfiguring, onde serão realizadas as configurações do contexto.

Mas para que ter acesso a todos os recursos do EF7, você precisa mudar o Target Framework para .NET Framework4.5.1 do seu projeto e executar executar o comando:

PM> Install-Package EntityFramework.SqlServer -Pre

Abaixo está um exemplo do escopo do novo método:

public class BookstoreContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(@"Server=(localdb)v11.0;Database=Blogging;Trusted_Connection=True;"); } }

No código acima, você pode perceber que na linha 3, existe uma nova classe chamada DbContextOptionsBuilder. Com essa classe você vai configurar o entityframework para utilizar o SqlServer e configurar a string de conexão. Essa forma de configuração apresentada no código acima, é chamado de Configuration Inline.Abaixo segue o código completo da classe BookstoreContext e suas entidades:

public class BookstoreContext : DbContext { public DbSet<book> Books { get; set; } public DbSet<author> Authors { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(@"Server=(localdb)v11.0;Database=Bookstore;Trusted_Connection=True;"); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<book>() .Collection(b => b.Authors) .InverseReference(p => p.Book) .ForeignKey(p => p.BookId); } }

Como vocês podem ver, algumas mudanças já são bem visiveis, como por exemplo na forma de registro das classes de dominio e seu mapeamento. No caso do nosso exemplo, como estou utilizando a versão 7.0.0-beta5-12870, logo se algo mudar saibam que é devido a versão que estou usando para apresentar este artigo.No exemplo acima, você pode observar que para mapear um relacionamento 1-N (one-to-many) utilizamos o método Collection e InverseReference.

Agora que temos o nosso modelo configurado e mapeado, precisamos criar nossa base de dados. Para que está acostumado com o Code-First e o Migration, não seria só executar o comando Add-Migration e Update-Database -Verbose (caso eu queira acompanhar o comando SQL gerado no console do Pakage Manager? Bom, eu diria que sim, caso estivessemos trabalhando ainda com a versão 6.1.X do Entityframework :). Agora as coisas mudaram um pouco, só que pra melhor :D. Para termos acesso aos comandos de Migration, você precisa executar o comando abaixo no console do PM(Package Manager):

PM> Install-Package Install-EntityFramework.Commands -Pre

Agora precisamos criar nosso arquivo de Migration, no qual vai conter toda a configuração do mapeamento de nossas classes de domínio que estão registradas em nosso contexto BookstoreContext. Para criarmos o arquivo de Migration, execute o comando abaixo:

PM> Add-Migration Bookstore_Migration_Initial

Como falei antes, se tivessemos utilizando o EF6 agora executariamos o comando Update-Database [-Verbose], mas o time do EF mudou o comando de aplica o migration e cria/altera a base de dados. O novo comando é: Apply-Migration. Só execute esse comando no console do PM e voilà 🙂, sua base de dados, utilizando o localdb foi criada. Conforme imagem abaixo:

Bom pessoal eu espero que tenham gostado dessas primeiras novidadades envolvendo o Entityframework. Não fiquem assustados, a Microsoft vai continuar evoluindo o EF6, hoje está na versão **6.1.3 **e para que ainda não teve tempo de estudar ou ainda está relutante a realizar uma migração para o Code-First podem ficar tranquilos que o EF6 vai continuar (só não sei até quando :)). Em outro artigo, falarei um pouco mais sobre as novas command-lines que serão utilizadas no EF7 (algumas delas já foram apresentadas neste artigo).

O projeto completo você pode encontrar no meu github

Uma boa semana a todos 😀

Referências:

Github – aspnet/Entityframework