O que há de novo noEntity Framework 4<br />Marcelo PaivaMicrosoft MCP  - IBM CLP<br />
Marcelo Paiva<br />Diretor Pesquisa e Desenvolvimento  da Softprime http://softprime.com.brMembro do conselho DevGoiás.Net...
Agenda<br />Tecnologias de Acesso a dados<br />Entity Framework 4<br />O que é?<br />História do EF<br />Melhorias do EF<b...
As tecnologias “Hoje”<br />ADO.Net<br />Linq to SQL<br />WCF Data Services<br />Entity Framework<br />
Entity Framework 4.0 – O que é?<br />Ferramenta ORM – Mapenamento objeto relacional<br />Abstrai a comunicação com bancos ...
História<br />ADO.NET 2.0 – Datasets e cia.<br />LINQ to SQL<br />Projeto do time de C#<br />EntityFramework<br />Time de ...
Cenário do EF<br />Visual Studio<br />“Quadrant”<br />Entity Framework<br />Data Services<br />ADO.NET <br />“M”/EDM<br />...
Entity Framework 4Novidades<br />Recursos<br />    Data Developer Center<br />http://msdn.microsoft.com/en-us/data/aa93772...
História<br />Feedbacks sobre o EF 1.0:<br />Famoso “vote of no confidence”<br />Foco nos aspectos de dados das entidades ...
História<br />Feedbacks sobre o EF 1.0:<br />Excesso de código para lidar com lazyloading<br />Modelo único trás problemas...
Melhorias no EF4<br />Suporte a mais operadores LINQ<br />Pluralize<br />Podemos encontrar: Movies-Movy<br />Geração de có...
Melhorias no EF4<br />Melhorias no código SQL gerado<br />De se esperar uma evolução contínua<br />Suporte a tipos complex...
Melhorias no EF4<br />Geração customizada de objetos (T4)<br />POCOs(T4)<br />Lazyloading<br />Code Only<br />Maior facili...
Flight Mode EF 4 – Model First<br />Criar o modelo de Classes<br />Gerar banco de dados baseado neste modelo<br />Utilizar...
Flight Mode EF 4 – Database First<br />Partir de um banco de dados<br />Pluralização<br />Live!<br />
Flight Mode EF 4 – POCOs<br />Classes simples e ao controle do desenvolvedor<br />Não dependem/conhecem Frameworks<br />Nã...
Flight Mode EF 4 – Lazy Loading<br />Carregar somente a entidade pai sem agregações<br />Carregar os “filhos” somente quan...
Flight Mode EF 4 – Code Only<br />Sem necessidade de manter um EDMX<br />Trata-se apenas com as classes<br />Configuração ...
Q & A ?!<br />Recursos<br />    http://dataservicesbrasil.ning.com<br />               http://www.devgoias.net<br />     m...
Cadastre aqui e concorra uma licença do EF Profiler<br />Link’s uteis<br />http://dataservicesbrasil.ning.com<br />http://...
Obrigado!<br />
Próximos SlideShares
Carregando em…5
×

DotNetDay novidades entityframework 4

1.357 visualizações

Publicada em

Novidades no

Publicada em: Educação
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.357
No SlideShare
0
A partir de incorporações
0
Número de incorporações
9
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • [2 min.]
  • [1 min.]
  • [1 min.]Atualmente temos diversas tecnologias e isso pode gerar confusões, mas hoje vamos entender como funcionam melhor duas dessas tecnologias que estão recebendo grandes melhorias.ADO.Net continua com os recursos tradicionais, sem poucos avanços.Linq to SQL – continua mas sem receber muita atenção.*entendendo melhor....[PROXIMO]
  • [1 min.]
  • [2 min.]Pela história mais recente podemos ver a sequencia do surgimento dessas tecnologias:1º ADO.Net 2.0 (de 2005 pra cá)2º Linq to SQL (em decorrência do surgimento do Linq o time precisava lançar alguma coisa que fizesse acesso a dados)3º Entity Framework – surgindo com o SP1 do .net Framework 3.5 O mesmo aconteceu com o ADO.Net Data Services, mas que é focado no conceito de serviço de dadosEntão o time de Plataforma de dados anunciou a união dos time L2S e EF, no entanto gerou a dúvida de como ficaria, então o time mandou a mensagem: “estaremos dando suporte ao L2S enquanto vamos focar maior atenção do EF”
  • [1 min.]Temos atualmente se formando este cenário das tecnologias Microsoft, onde vemos aí o local que o EF se enquadra.
  • Então vamos para as novidades do Entity Framework 4.
  • [2 min.]Vamos contextualizar o que tivemos no lançamento do EF 1.0 para entender os lançamentos da versão 4.01 – Com o lançamento da primeria versão, em razão das prioridades adotadas pelo time de produto, alguns MVP’s e influenciadores da comunidade que já trabalhavam com ferramentas de ORM, assinaram um ‘voto de não confiança’ no EF.2 – Porque desse ‘voto’??? Foram elencados algumas funcionalidades que a comunidade considera de grande importância, dos quais vamos destacar alguns aqui.3 – Comentar sobre o foco na persistência prejudicando o POCO e Persistence Ignorance
  • [2 min.]Outro ponto de crítica é como lhe dá o uso do lazyloading no EF 1.0O modelo único também problemas com uso em equipes grandes, pois é difícil o gerenciamento do mapeamento.Todo mapeamento é feito na verdade em XML, daí é importante conhecer muito ele, e fazer customizações é possível mas é bastante trabalhoso.Mais um ponto tratado pelo time de produto na primeira versão foi pensando em que a maioria já tenha um modelo de dados criado então o que temos é uma mapenamento que pode ser gerado a partir do modelo, mas o pessoal reclamou que não temos o contrário.
  • [2 min] Vamos ver então agora algumas das melhorias que o time do produto destacou e está disponibilizando nessa próxima versão 4 (que na verdade é a 2.0)Suporte a mais operadores LINQAgora temos mais recursos como .single()PluralizaçãoClientes (tabela) – Cliente (entidade)Geração baseada em T4, inclusive agora tem um Add-in que cria um novo template para o VS2010 RC
  • [1 min] Era de se esperar melhorias no código SQL gerado.Evidentemente o time deve estar preocupado em gerar cada veis mais um resultado melhorSuporte a tipos mais complexosAgora temos suporte no design, o que antes tinhamos somente através do XMLO Design melhorou agora, permitindo apagar objetos, o que antes só era feito através o XML
  • [2 min]Podemos customizar o código gerado no mapeamentoPOCO’s agora temos suporte a customizado através de T4Lazyloading ObjectStateManager mais flexível podendo manipular mais facilmente o estado da entidade.
  • D:DevGoiasCommunityLaunch2010\_PalestradotNetDayFlight1\_StartdotNetDayFligthModelFirst- criar um novo modelo vazio (dotnetday)Post (id, Titulo, Texto) / Comentario (id, Email, Texto)- Executar script no banco &apos;dotNetDay&apos;- depois criar o banco no SQL studio- Criar metodos para adicionar um Post e listar no grid dotNetDayIIContainer ctx = new dotNetDayIIContainer(); public Form1() { InitializeComponent(); }  private void button1_Click(object sender, EventArgs e) { dataGridView1.DataSource = ctx.PostSet.Select(a =&gt; a).ToList(); }  private void Form1_Load(object sender, EventArgs e) { ctx.AddToPostSet(new Post { Titulo = &quot;Evento dotnetDay&quot;, Texto = &quot;demonstrando model first&quot; }); ctx.SaveChanges(); }
  • 1 - D:DevGoiasCommunityLaunch2010\_PalestradotNetDayFlight2\_StartdotNetDayDBFirst Criar edmxIndicar banco de dados &apos;dotnetday&apos;Marcar &apos;pluralização&apos;Criar métodos para inserir dados e também consulta  dotNetDayEntities ctx = new dotNetDayEntities(); public Form1() { InitializeComponent(); }  private void button2_Click(object sender, EventArgs e) { Categoria cat = new Categoria { Descricao = &quot;Açougue&quot; }; cat.Produtos.Add(new Produto { Ativo = true, Nome = &quot;Picanha&quot;, Preco = 17 }); ctx.AddToCategorias(cat); ctx.SaveChanges(); }  private void button1_Click(object sender, EventArgs e) { dataGridView1.DataSource = ctx.Categorias.Select(c =&gt; c).ToList(); } - debug de inserir- Mostrar o IntelliTrace- Abrir EFProfiler- Mostrar querys
  • -Mostrar o edmx.Designer.cs (classes contextualizadas)-Apagar CustomTool nas propriedades do edmxEntityModelCodeGenerator -Adicionar no projeto um item &apos;POCO generator&apos;-Indicar o arquivo edmx no .tt e Context.tt Código: dotNetDayEntities ctx = new dotNetDayEntities(); public Form1() { InitializeComponent(); }  private void button2_Click(object sender, EventArgs e) { Categoria cat = new Categoria { Descricao = &quot;Açougue&quot; }; cat.Produtos.Add(new Produto { Ativo = true, Nome = &quot;Picanha&quot;, Preco = 17 }); ctx.AddObject(&quot;Categorias&quot;, cat); ctx.SaveChanges(); }  private void button1_Click(object sender, EventArgs e) { dataGridView1.DataSource = ctx.Categorias.Select(c =&gt; c).ToList(); } -Fazer testes de inserção e novamente
  • D:DevGoiasCommunityLaunch2010\_PalestradotNetDayFlight3ProntodotNetDayDBFirst (mesmo exemplo do exemplo 3) Adicionar botão para ler produtos da categoria 3 private void button3_Click(object sender, EventArgs e) { var cat3 = ctx.Categorias.Where(c =&gt; c.ID == 3).Select(c =&gt; c).First(); foreach (var item in cat3.Produtos) { MessageBox.Show(item.Nome); } } Desabilitar lazyloadingDemonstrar resultadoAlterar mostrando &apos;include&apos;
  • D:DevGoiasCommunityLaunch2010\_PalestradotNetDayFlight4dotNetDayCodeOnly- Demonstrar as classes básicas- Demonstrar o mapeamento- Demonstrar a geração de script
  • Agora vamos para a parte II com as novidades do WCF Data Services
  • DotNetDay novidades entityframework 4

    1. 1. O que há de novo noEntity Framework 4<br />Marcelo PaivaMicrosoft MCP - IBM CLP<br />
    2. 2. Marcelo Paiva<br />Diretor Pesquisa e Desenvolvimento da Softprime http://softprime.com.brMembro do conselho DevGoiás.Net http://devgoias.net<br />Coordenador comunidade DataServicesBR http://dataservicesbrasil.ning.com<br />Email: marcelo@softprime.com.br<br />Twitter: @marcelo_paiva<br />Blog: http://marcelosoftprime.spaces.live.com<br />
    3. 3. Agenda<br />Tecnologias de Acesso a dados<br />Entity Framework 4<br />O que é?<br />História do EF<br />Melhorias do EF<br />Demonstrações<br />Q & A<br />
    4. 4. As tecnologias “Hoje”<br />ADO.Net<br />Linq to SQL<br />WCF Data Services<br />Entity Framework<br />
    5. 5. Entity Framework 4.0 – O que é?<br />Ferramenta ORM – Mapenamento objeto relacional<br />Abstrai a comunicação com bancos de dados relacionais<br />Conhece modelo lógico e modelo físico<br />Fornece uma série de facilidades nesta comunicação<br />
    6. 6. História<br />ADO.NET 2.0 – Datasets e cia.<br />LINQ to SQL<br />Projeto do time de C#<br />EntityFramework<br />Time de projeto voltado para tecnologias de acesso a dados.<br />Em 29/10/2008, mensagem do time de produto sobre união dos times do L2S e EF.<br />Dúvida sobre continuidade do L2S.<br />
    7. 7. Cenário do EF<br />Visual Studio<br />“Quadrant”<br />Entity Framework<br />Data Services<br />ADO.NET <br />“M”/EDM<br />SQL<br />Azure<br />SQL<br />Server<br />…<br />SQL Server <br />Modeling<br />Services<br />
    8. 8. Entity Framework 4Novidades<br />Recursos<br /> Data Developer Center<br />http://msdn.microsoft.com/en-us/data/aa937723.aspx<br />
    9. 9. História<br />Feedbacks sobre o EF 1.0:<br />Famoso “vote of no confidence”<br />Foco nos aspectos de dados das entidades degradam arquiteturas de entidade<br />Entidades criadas não são POCO (derivam de EntityObject) <br />Falta de persistance ignorance deixa o código mais difícil de escrever<br />
    10. 10. História<br />Feedbacks sobre o EF 1.0:<br />Excesso de código para lidar com lazyloading<br />Modelo único trás problemas excessivos em um projeto com diversos desenvolvedores e controle de fonte<br />Não é possível criar o armazenamento físico a partir de um modelo conceitual.<br />
    11. 11. Melhorias no EF4<br />Suporte a mais operadores LINQ<br />Pluralize<br />Podemos encontrar: Movies-Movy<br />Geração de código baseada em T4 templates(text template transformation toolkit)<br />Maior facilidade de customização para o desenvolvedor<br />
    12. 12. Melhorias no EF4<br />Melhorias no código SQL gerado<br />De se esperar uma evolução contínua<br />Suporte a tipos complexos no designer<br />http://msdn.microsoft.com/en-us/library/dd456820(VS.100).aspx<br />Melhoria da ferramenta Modelbrowser<br />Ex.: apagar objetos do storagemodel e pesquisar por entidades<br />
    13. 13. Melhorias no EF4<br />Geração customizada de objetos (T4)<br />POCOs(T4)<br />Lazyloading<br />Code Only<br />Maior facilidade para trabalhar com N camadas.<br />
    14. 14. Flight Mode EF 4 – Model First<br />Criar o modelo de Classes<br />Gerar banco de dados baseado neste modelo<br />Utilizar o modelo gerado pelo EF 4.0<br />Live!<br />
    15. 15. Flight Mode EF 4 – Database First<br />Partir de um banco de dados<br />Pluralização<br />Live!<br />
    16. 16. Flight Mode EF 4 – POCOs<br />Classes simples e ao controle do desenvolvedor<br />Não dependem/conhecem Frameworks<br />Não herdem nem implementam interfaces específicas do EF 4.0<br />Conhecem domínio do software<br />Live!<br />
    17. 17. Flight Mode EF 4 – Lazy Loading<br />Carregar somente a entidade pai sem agregações<br />Carregar os “filhos” somente quando (e se) preciso<br />Pode significar melhora de performance<br />Facilmente habilitado e desabilitado<br />Live!<br />
    18. 18. Flight Mode EF 4 – Code Only<br />Sem necessidade de manter um EDMX<br />Trata-se apenas com as classes<br />Configuração toda feita via código<br />Pode tornar o entendimento das relações mais complexo<br />Live!<br />
    19. 19. Q & A ?!<br />Recursos<br /> http://dataservicesbrasil.ning.com<br /> http://www.devgoias.net<br /> marcelo.paiva@devgoias.net<br />
    20. 20. Cadastre aqui e concorra uma licença do EF Profiler<br />Link’s uteis<br />http://dataservicesbrasil.ning.com<br />http://www.devgoias.net<br />http://blogs.msdn.com/adonet/default.aspx<br />http://blogs.msdn.com/astoriateam/default.aspx<br />E-mail: marcelo.paiva@devgoias.net<br />
    21. 21. Obrigado!<br />

    ×