Fala Galera,
Hoje vamos falar sobre outra novidade da nova arquitetura .NET Core, o Entity Framework Core 1.
Ao longo do tempo o Entity Framework foi mudando, ganhando mais funcionalidades como Code First, Migrations e etc.
Agora a nova evolução atende pelo nome de Entity Framework Core 1, uma biblioteca totalmente reescrita, usando padrões atuais de arquitetura e de desenvolvimento tudo isso para que possamos utilizar o mesmo Entity Framework Core 1 tanto em Linux, Windows e Mac.
Outra mudança que ocorreu no EF Core 1 é que não precisamos utilizar o .NET FULL, ou seja, podemos utilizar o EF Core 1 em aplicativos WUP (Windows Universal Plataform) como em Celular e Tablet.
O EF Core 1 obviamente pode ser executado no DNX (Coreclr, Mono) e pode ser executado no ambiente .NET FULL porém o framework minimo deverá ser o 4.5.1
Instalando
O pacote de instalação do EF Core 1 está disponível via nuget utilizando o comando: Install-Package EntityFramework.Core -Pre
Caso queira utilizar a funcionalidade de Migrations devemos instalar outro pacote do EF Core 1 utilizando o comando: Install-Package EntityFramework.Commands -Pre
O Entity Framework 6 continuará a ser instalado pelo comando Install-Package EntityFramework.
Importante: Aplicativos que utilizam o Entity Framework 6 não serão atualizados para o Entity Framework Core 1.
Como são pacotes distintos e com novas funcionalidades e recursos, os projetos que utilizando o EF 6 não serão atualizados automaticamente por questão de compatibilidade.
Apresentando o GraphBehavior
A maioria das mudanças que ocorreram com o EF Core 1 foi em torno de sua sintaxe.
Métodos como DbSet.Add e DbSet.AddRange tiveram modificações, por exemplo, o AddRange perdeu força e o método DbSet.Add ganhou uma sobrecarga no qual agora aceita um intervalo de valores.
Outra mudança que tivemos é a forma de incluir objetos, no EF 6 quando você incluia um objeto, esse objeto afetava (quase sempre) todo o gráfico de objeto que o contexto estava guardando, podendo causar inconsistência.
Agora no EF Core 1 os métodos de inclusão como Add, Attach, Update possuem um novo parâmetro que é um Enum chamado GraphBehavior
Os valores do GraphBehavior são IncludeDependents e SingleObject
O padrão para os métodos acima é GraphBehavior.IncludeDependents, o que significa usá-lo de uma forma similiar ao EF 6, por exemplo:
context.Users.Add (newUser);
O problema é que o comportamento padrão, IncludeDependents, é, literalmente, para objetos dependentes. Utilizando o IncludeDependents o EF Core 1 não irá incluir todos os objetos relacionados, e esta distinção é importante.
Objetos em um relacionamento são principais ou dependentes. Na base de dados estes objetos são facilmente identificados porque o dependente é aquele que tem a chave estrangeira de volta para o principal.
Entity Framework Core 1 – noSQL
Nos próximos lançamento do EF Core 1, o time de desenvolvimento estará se concentrando na implementação do Data Store SQLite e isso é devido porque EF Core 1 agora suporta WUP como mencionando acima.
Porém está previsto que no EF Core 1 terá implementação para banco noSQL como REDIS e boatos que o MongoDB também estará em pauta.
Seria muito legal, se o EF Core 1 suportasse o MongoDB e um golaço da Microsoft nesse sentido.
O que acharam do EF Core 1 ? Não deixem de comentar.
No próximo estarei mostrando como se criar uma aplicação utilizando o EF Core 1, não percam!
Abs e até próximo
Pingback: Criando aplicações utilizando ASP.NET Core MVC com Entity Framework Core - Rafael Cruz