<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>LUTI @ Microsoft : Entity Framework</title><link>http://blogs.msdn.com/luti/archive/tags/Entity+Framework/default.aspx</link><description>Tags: Entity Framework</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>EFUtil, IRegraNegocio e serviços para o Entity Framework</title><link>http://blogs.msdn.com/luti/archive/2008/12/02/efutil-iregranegocio-e-servi-os-para-o-entity-framework.aspx</link><pubDate>Wed, 03 Dec 2008 00:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9166225</guid><dc:creator>Luciano Caixeta Moreira</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/luti/comments/9166225.aspx</comments><wfw:commentRss>http://blogs.msdn.com/luti/commentrss.aspx?PostID=9166225</wfw:commentRss><description>&lt;P&gt;Muito se têm falado do Entity Framework e aqui em Brasília não é diferente, onde eu tenho trabalhado com alguns clientes, discutindo sobre a melhor forma se utilizar o EF nos projetos. Dentro das restrições de tempo (algo que está mais do que apertado ultimamente) eu juntei algumas idéias que tive e gostaria de compartilhar com vocês, um pouquinho de cada vez.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Definição do problema:&lt;/STRONG&gt; a empresa R2D2 vai utilizar o Entity Framework em um novo projeto (ponto para ela!) e está montando uma arquitetura de referência. Dentre os requisitos, eles querem tentar garantir ao máximo que os desenvolvedores programem de acordo com os padrões definidos e utilizem métodos de uma interface específica (para validação de negócio) junto com o Entity Framework.&lt;/P&gt;
&lt;P&gt;Pensando nisso, podemos criar diversas maneiras para tentar garantir ao máximo que essas regras serão seguidas, como utilização de templates, geradores de código, modificação do gerador do Entity Framework, etc. Eu resolvi usar uma abordagem mais direta, com o uso de interfaces e, alguns subterfúgios, para que sejam feitas algumas validações das entidades.&lt;/P&gt;
&lt;P&gt;Quer ver no que deu? Continue lendo o artigo e baixe o projeto de referência, anexado a esta postagem.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;U&gt;Solução 01 do brainstorm&lt;/U&gt;&lt;/FONT&gt; &lt;BR&gt;&lt;/STRONG&gt;(feedbacks são mais do que bem vindos!!)&lt;/P&gt;
&lt;P&gt;Devemos criar uma biblioteca de classes “EFUtil” com classes utilitárias que ofereçam serviços interessantes para o desenvolvedor. Dessa forma ele ficará compelido a usar os recursos disponibilizados e nós poderemos fazer alguns controles através desses métodos.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Detalhamento do projeto EFUtil&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Classe PoliticasEF&lt;/STRONG&gt; - Oferece métodos responsáveis pela verificação das políticas de desenvolvimento definidas pelo time de arquitetos, como por exemplo: toda entidade deve implementar a interface IRegraNegocio.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Interface IRegraNegocio&lt;/STRONG&gt; - Interface que faz parte do EFUtil e define o método ValidaRegraNegocio, que deve ser implementado por toda entidade definida no modelo conceitual. Na versão 1.0 do EF precisamos usar uma interface, pois por padrão toda entidade já deriva de EntityObject. Quem sabe no futuro vamos usar uma classe abstrata e fazer com que as entidade derivem desta…&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Classe ServicoContexto&lt;/STRONG&gt; – Responsável por manter os métodos relacionados com os contextos do EF, como por exemplo, o método SalvarAlteracoes. Este seria responsável por chamar o método SaveChanges, fazer a validação das políticas, logging e, em caso de problemas de concorrência, aplicar a política definida para o projeto.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;Partindo do que foi dito acima, para essa proposta todo desenvolvedor seria orientado para fazer o seguinte:&lt;/P&gt;
&lt;P&gt;- Implementar a interface IRegraNegocio em uma classe parcial para todas as entidades definidas no seu modelo conceitual. &lt;BR&gt;- Criar uma classe parcial para o contexto e implementar o método parcial OnContextCreated().&lt;/P&gt;
&lt;P&gt;No exemplo que tenho, no projeto de acesso a dados “EFDataAccess”, criei um modelo edmx baseado no banco de dados SimpleDB (que somente possui a tabela funcionário) e implementei as regras definidas acima…&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;public partial class SimpleDBEntities &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; partial void OnContextCreated() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EFUtil.PoliticasEF.VerificaEntidades(this);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;public partial class Funcionario: EFUtil.IRegraNegocio &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region IRegraNegocio Members &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void ValidaRegraNegocio() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception("Um erro qualquer de validação de negócio..."); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion &lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Vamos ver agora como implementei as verificações e validações para tentar evitar que o desenvolvedor fugisse à regra…&lt;/P&gt;
&lt;P&gt;O método VerificaEntidades analisa o espaço conceitual do modelo informado pesquisando todos os tipos “entidade” e, como estamos falando da entidade conceitual, não temos informação das interfaces que as classes parciais implementam, então precisamos usar reflexão. Dessa forma, para cada entidade recuperada, verificamos se o tipo recuperado pelo método GetType implementa a interface EFUtil.IRegraNegocio. Utilizo uma coleção de dicionário para verificar quais contextos já foram verificados, fazendo este controle através do hashcode do objeto. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;public static void VerificaEntidades(ObjectContext contexto) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string nomeAssembly, nomeEntidade; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type tipoEntidade; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Assembly AssemblyDA = Assembly.GetCallingAssembly(); &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Mostra o nome do Assembly - EFDataAccess neste caso &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nomeAssembly = AssemblyDA.GetName().Name; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var entidades = from e in contexto.MetadataWorkspace.GetItems(System.Data.Metadata.Edm.DataSpace.CSpace) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where e.BuiltInTypeKind == System.Data.Metadata.Edm.BuiltInTypeKind.EntityType &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select e; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (var e in entidades) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Recupera o nome da entidade listada, ignorando o namespace do modelo conceitual, que normalmente é &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // diferente do namespace definido no assembly &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nomeEntidade = e.ToString().Split('.')[1]; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tipoEntidade = AssemblyDA.GetType(nomeAssembly + "." + nomeEntidade, true); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (tipoEntidade.GetInterface("EFUtil.IRegraNegocio") == null) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception("Entidade '" + nomeEntidade + "' não está implementando a interface EFUtil.IRegraNegocio"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objetosVerificados.Add(contexto.GetHashCode(), DateTime.Now); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Obs 1: É necessário compormos o nome do tipo conforme exibido, porque o namespace do modelo conceitual é diferente do namespace primitivo do assembly, que por padrão é o nome do projeto. Por simplicidade eu estou considerando namespaces no formato &lt;EM&gt;namespace.entidade&lt;/EM&gt;, mas é claro que isso pode ser diferente e deverá ser tratado de forma genérica, recuperando o último nome após o “.”.&lt;/P&gt;
&lt;P&gt;Obs 2: Como estamos chamando o método VerificaEntidades através de uma classe parcial, é obrigatório que essa classe esteja na mesma DLL que o modelo, então eu posso assumir que o GetCallingAssembly está sempre se referindo ao módulo correto.&lt;/P&gt;
&lt;P&gt;Para tentar aumentar a segurança e evitar que um desenvolvedor tente usufruir dos serviços disponibilizados pela classe ServicoContexto sem chamar o VerificaEntidades, no início do método SalvarAlteracoes() é feito uma validação, que pesquisa no dicionário se o objeto deste contexto já foi verificado.&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;internal static void JaFoiVerificado(ObjectContext contexto) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!objetosVerificados.ContainsKey(contexto.GetHashCode())) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception("A validação do contexto não foi feita, verifique se existe uma classe parcial " + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "do contexto implementando o seguinte trecho de código: \n" + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "partial void OnContextCreated() { \n" + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "EFUtil.PoliticasEF.VerificaEntidades(this); \n" + &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "}"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;É também no SalvarAlteracoes que as regras de negócio de cada entidade são invocadas, de acordo com o código abaixo (note que por simplicidade eu somente estou verificando os itens que foram adicionados):&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2 face="Lucida Console"&gt;private static void ValidaRegras(ObjectContext contexto) &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (ObjectStateEntry item in contexto.ObjectStateManager.GetObjectStateEntries(EntityState.Added)) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRegraNegocio entidade = (IRegraNegocio)item.Entity; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; entidade.ValidaRegraNegocio(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;U&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;Conclusão e considerações&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;Com o exemplo acima eu não espero ter resolvido essa questão, muito pelo contrário, espero que essa postagem seja o início de uma discussão produtiva. Gostaria de fazer algumas considerações sobre o que foi codificado:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Se o desenvolvedor utilizar o método SalvarAlteracoes sem ter implementado corretamente o método parcial OnContextCreated, o JaFoiVerificado pega o problema. &lt;/LI&gt;
&lt;LI&gt;Se o desenvolvedor implementar corretamente a classe parcial do contexto, mas esquecer de implementar em alguma entidade a interface IRegraNegocio, o problema será detectado pelo VerificaEntidades. &lt;/LI&gt;
&lt;LI&gt;Se o desenvolvedor não implementar a interface e chamar o SaveChanges do contexto diretamente, não podemos fazer nada (com essa abordagem). 
&lt;UL&gt;
&lt;LI&gt;Comentando a interface e o método que chama o VerificaEntidades, vocês podem simular os cenário acima. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Fazer a validação da regras auxiliares (e até poder chamar outros métodos) em toda instância pode parecer um desperdício, mas talvez seja possível parametrizar algumas coisas e até criar novas sobrecargas para os construtores do contexto, que pode trazer uma flexibilidade interessante se pensarmos na configuração do contexto em subsistemas específicos. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Pessoal, notem que eu não quero com esse post entrar em detalhes qual a melhor arquitetura para sua aplicação, aonde é melhor colocar sua regra de negócio ou outra afirmação do tipo. Estou apenas mostrando algumas maneiras de como podemos utilizar o Entity Framework, que espero eu, possa ajudá-los no dia-a-dia.&lt;/P&gt;
&lt;P&gt;Em anexo está tudo o que foi codificado, além de um outro modelo do northwind com mais entidades. Espero que vocês testem o projeto e tudo funcione corretamente, pois estou esperando o feedback de vocês. :-) &lt;BR&gt;Em breve voltarei com adendos e este projeto, como controle de concorrência e logging…&lt;/P&gt;
&lt;P&gt;[]s &lt;BR&gt;Luciano Caixeta Moreira &lt;BR&gt;&lt;A href="mailto:luciano.moreira@microsoft.com" mce_href="mailto:luciano.moreira@microsoft.com"&gt;luciano.moreira@microsoft.com&lt;/A&gt; &lt;BR&gt;=============================================== &lt;BR&gt;This post is provided "AS IS" and confers no right &lt;BR&gt;===============================================&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9166225" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/luti/attachment/9166225.ashx" length="199194" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/luti/archive/tags/Entity+Framework/default.aspx">Entity Framework</category></item><item><title>Roadmap para o Linq to SQL e Linq to Entities</title><link>http://blogs.msdn.com/luti/archive/2008/10/30/roadmap-para-o-linq-to-sql-e-linq-to-entities.aspx</link><pubDate>Fri, 31 Oct 2008 02:59:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9025552</guid><dc:creator>Luciano Caixeta Moreira</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/luti/comments/9025552.aspx</comments><wfw:commentRss>http://blogs.msdn.com/luti/commentrss.aspx?PostID=9025552</wfw:commentRss><description>&lt;p&gt;Bom, j&amp;#225; t&amp;#234;m um tempinho que n&amp;#243;s vemos um enfoque maior no Entity Framework que no Linq to SQL, mas o que ser&amp;#225; que os times de produto estavam pensando? Ontem tivemos um an&amp;#250;ncio importante feito pelo Tim Mallalieu (&lt;a title="http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx" href="http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx"&gt;http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx&lt;/a&gt;). O trecho mais importante &amp;#233;:&lt;/p&gt;  &lt;p&gt;&amp;quot;We&amp;#8217;re making significant investments in the Entity Framework such that as of .NET 4.0 the Entity Framework will be our recommended data access solution for LINQ to relational scenarios.&amp;#160; We are listening to customers regarding LINQ to SQL and will continue to evolve the product based on feedback we receive from the community as well.&amp;quot;&lt;/p&gt;  &lt;p&gt;Got it? :-)&lt;/p&gt;  &lt;p&gt;[]s    &lt;br /&gt;Luciano Caixeta Moreira     &lt;br /&gt;&lt;a href="mailto:luciano.moreira@microsoft.com"&gt;luciano.moreira@microsoft.com&lt;/a&gt;     &lt;br /&gt;===============================================     &lt;br /&gt;This post is provided &amp;quot;AS IS&amp;quot; and confers no right     &lt;br /&gt;===============================================&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9025552" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/luti/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://blogs.msdn.com/luti/archive/tags/LINQ/default.aspx">LINQ</category></item><item><title>Webcast da semana: Entity Framework</title><link>http://blogs.msdn.com/luti/archive/2008/10/27/webcast-dessa-semana-entity-framework.aspx</link><pubDate>Mon, 27 Oct 2008 20:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9018633</guid><dc:creator>Luciano Caixeta Moreira</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/luti/comments/9018633.aspx</comments><wfw:commentRss>http://blogs.msdn.com/luti/commentrss.aspx?PostID=9018633</wfw:commentRss><description>&lt;P&gt;Nessa semana temos mais um encontro nos webcast do MSDN, onde eu volto a falar sobre o Entity Framework.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Sessão:&lt;/STRONG&gt; &lt;STRONG&gt;&lt;EM&gt;Utilizando na prática recursos do Entity Framework v1 &lt;BR&gt;&lt;/EM&gt;Descrição:&lt;/STRONG&gt; O Entity Framework é parte fundamental da estratégia de acesso a dados e um dos frameworks da Microsoft que mais recebe atenção, sendo necessário entendermos como é possível utilizar da melhor forma o EF v1. Nessa sessão iremos ver como utilizar na prática diversos recursos do Entity Framework, como: serialização de entidades utilizando o WCF, controle de concorrência, como adicionar lógica de negócio (na entidade ou na camada de negócio), como manipular o gerenciador de estados, auto-relacionamento e chaves compostas, além de abstrair a utilização de diferentes bancos de dados. &lt;BR&gt;&lt;STRONG&gt;Data/hora: &lt;/STRONG&gt;quarta-feira, 29 de outubro de 2008 12:00 Brasília &lt;BR&gt;&lt;STRONG&gt;URL: &lt;A title=https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032394175&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032394175&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR" mce_href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032394175&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR"&gt;https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032394175&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Nos vemos na quarta-feira!&lt;/P&gt;
&lt;P&gt;[]s &lt;BR&gt;Luciano Caixeta Moreira &lt;BR&gt;&lt;A href="mailto:luciano.moreira@microsoft.com" mce_href="mailto:luciano.moreira@microsoft.com"&gt;luciano.moreira@microsoft.com&lt;/A&gt; &lt;BR&gt;=============================================== &lt;BR&gt;This post is provided "AS IS" and confers no right &lt;BR&gt;===============================================&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9018633" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/luti/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/luti/archive/tags/Entity+Framework/default.aspx">Entity Framework</category></item><item><title>Entity Framework + SQL Server 2008 + MySQL 5.0</title><link>http://blogs.msdn.com/luti/archive/2008/09/05/entity-framework-sql-server-2008-mysql-5-0.aspx</link><pubDate>Fri, 05 Sep 2008 16:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8926307</guid><dc:creator>Luciano Caixeta Moreira</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/luti/comments/8926307.aspx</comments><wfw:commentRss>http://blogs.msdn.com/luti/commentrss.aspx?PostID=8926307</wfw:commentRss><description>function showDiv(post, lingua) { if (document.getElementById) { // DOM3 = IE5, NS6 document.getElementById(post + lingua).style.display = 'block'; document.getElementById(post + ((lingua == 'P')? 'E' : 'P')).style.display = 'none'; //alert(post + ((lingua...(&lt;a href="http://blogs.msdn.com/luti/archive/2008/09/05/entity-framework-sql-server-2008-mysql-5-0.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8926307" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/luti/attachment/8926307.ashx" length="514013" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/luti/archive/tags/Entity+Framework/default.aspx">Entity Framework</category></item><item><title>Propriedades Read-Only no Entity Framework</title><link>http://blogs.msdn.com/luti/archive/2008/04/04/propriedades-read-only-no-entity-framework.aspx</link><pubDate>Fri, 04 Apr 2008 13:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8356480</guid><dc:creator>Luciano Caixeta Moreira</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/luti/comments/8356480.aspx</comments><wfw:commentRss>http://blogs.msdn.com/luti/commentrss.aspx?PostID=8356480</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Recentemente tenho recebido vários e-mails sobre o entity framework, o que é ótimo, pois me força a estudar ainda mais a tecnologia e passo a conhecer problemas reais que os profissionais espalhados pelo Brasil estão passando. Então vamos a um post rápido...&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Como eu crio propriedades somente para leitura no EF?&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Se notarmos no designer do seu modelo EDM, quando você clica sobre uma propriedade da entidade, você pode ver que existem duas configurações de &lt;I style="mso-bidi-font-style: normal"&gt;code generation (setter e getter&lt;/I&gt;), mas essas não estão habilitadas para edição (provavelmente isso será efetivo no próximo beta, sei lá). Então temos que recorrer ao velho e bom XML para nos ajudar.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;Abra o seu arquivo edmx com o editor XML, encontre a propriedade que quer alterar e quando digitar “a:”, conte com a ajuda do intellisense para definir a visibilidade dos métodos de acesso (propriedades no .NET), onde poderá escolher entre &lt;I style="mso-bidi-font-style: normal"&gt;public, internal e private&lt;/I&gt;. &lt;/SPAN&gt;&lt;SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;Exemplo:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Cambria','serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Arial; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-ansi-language: EN-US"&gt;&amp;lt;Property Name="Titulo" Type="String" Nullable="false" MaxLength="100" Unicode="false" &lt;B style="mso-bidi-font-weight: normal"&gt;a:Setter="Private" xmlns:a="http://schemas.microsoft.com/ado/2006/04/codegeneration"&lt;/B&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Nesse caso, como a visibilidade está como &lt;I style="mso-bidi-font-style: normal"&gt;private&lt;/I&gt;, somente outros métodos da própria classe podem acessar a propriedade. Você também pode definir o acesso como &lt;I style="mso-bidi-font-style: normal"&gt;internal&lt;/I&gt;, para possibilitar o acesso de outras classes dentro do mesmo &lt;I style="mso-bidi-font-style: normal"&gt;assembly&lt;/I&gt;. O importante aqui é notar que não tendo acesso ao método Set, a propriedade da entidade passa a ser somente leitura para quem está manipulando o objeto.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;[]s&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Luciano Caixeta Moreira&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR&gt;&lt;A href="mailto:luciano.moreira@microsoft.com"&gt;&lt;SPAN style="COLOR: blue; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri size=3&gt;luciano.moreira@microsoft.com&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 8pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;&lt;FONT face=Calibri&gt;=============================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 8pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;&lt;FONT face=Calibri&gt;This posting is provided "AS IS" with no warranties, and confers no rights&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="FONT-SIZE: 8pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri&gt;=============================================================&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8356480" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/luti/archive/tags/Entity+Framework/default.aspx">Entity Framework</category></item><item><title>Webcast quarta-feira - ADO.NET Entity Framework (Recursos Avançados)</title><link>http://blogs.msdn.com/luti/archive/2008/03/03/webcast-quarta-feira-ado-net-entity-framework-recursos-avan-ados.aspx</link><pubDate>Mon, 03 Mar 2008 23:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8008910</guid><dc:creator>Luciano Caixeta Moreira</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/luti/comments/8008910.aspx</comments><wfw:commentRss>http://blogs.msdn.com/luti/commentrss.aspx?PostID=8008910</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri size=3&gt;Nesta quarta-feira (05/03/2008), dia de webcasts sobre banco de dados e tecnologias de acesso a dados no MSDN Brasil, eu estou novamente escalado para falar com vocês novamente sobre o Entity Framework. Para quem ainda não conhece o distinto, recomendo assistir a gravação do webcast de introdução do assunto (&lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/luti/archive/2007/12/17/webcast-do-m-s-ado-net-entity-framework.aspx"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;http://blogs.msdn.com/luti/archive/2007/12/17/webcast-do-m-s-ado-net-entity-framework.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;).&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Entendam por recursos avançados outras capacidades que o EF oferece e não foram abordadas no nosso primeiro encontro, nada de debugging nível 400, então não precisam pirar. Para mais informações sobre o evento, acessem o link abaixo:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;A href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032370683&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR"&gt;&lt;FONT face=Calibri size=3&gt;https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032370683&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Fiquem ligados no Entity Framework, pois ele ainda vai dar o que falar! Espero vocês na quarta-feira.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;[]s&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Luciano Caixeta Moreira&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR&gt;&lt;A href="mailto:luciano.moreira@microsoft.com"&gt;&lt;SPAN style="COLOR: blue; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri size=3&gt;luciano.moreira@microsoft.com&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 8pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;&lt;FONT face=Calibri&gt;=============================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 8pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;&lt;FONT face=Calibri&gt;This posting is provided "AS IS" with no warranties, and confers no rights&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="FONT-SIZE: 8pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri&gt;=============================================================&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8008910" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/luti/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/luti/archive/tags/Entity+Framework/default.aspx">Entity Framework</category></item><item><title>[PostMortem] Entity Framework – Errata e dúvidas</title><link>http://blogs.msdn.com/luti/archive/2007/12/27/postmortem-entity-framework-errata-e-d-vidas.aspx</link><pubDate>Thu, 27 Dec 2007 21:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6879312</guid><dc:creator>Luciano Caixeta Moreira</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/luti/comments/6879312.aspx</comments><wfw:commentRss>http://blogs.msdn.com/luti/commentrss.aspx?PostID=6879312</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Bom dia! Recentemente eu gravei um webcast sobre o Entity Framework e no final da sessão houve um painel de perguntas e respostas, então vou aproveitar outras perguntas que eu recebi e escrever um rápido Q&amp;amp;A.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;P: &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;Se a estrutura do banco mudar, existe uma forma de atualizar automaticamente o modelo?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;R:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt; A partir do CTP2 do Entity Designer (que acompanha o Beta 3 do EF) é possível atualizar tanto o modelo conceitual (atualizando também o modelo físico), como é possível atualizar somente o modelo físico e depois criar manualmente as novas entidades e os mapeamentos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;Errata:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt; no webcast eu não respondi corretamente essa pergunta! Eu ainda não havia utilizado essa funcionalidade e a novidade me escapou, pois me lembrei das funcionalidades do EF Beta 3 e não do ED CTP2. Vide os anúncios no fim deste post.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;FONT size=3&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri&gt;Para compensar essa pequena falha, no próximo ano eu vou escrever um post detalhando essa funcionalidade. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=PT-BR style="FONT-FAMILY: Wingdings; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;&lt;SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings"&gt;J&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;P:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt; Existe suporte a transações no ADO Entity? Isso é feito implicitamente, por exemplo, quando usamos a função para salvar as alterações (é feito atomicamente?), ou devemos explicitamente informar isso ao Framework?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;R:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt; Quando você chama o método SaveChanges(), o Entity Framework automaticamente inicia uma transação e faz o commit depois que as alterações foram executadas. Você pode analisar esse comportamento utilizando o Profiler e capturando alguns eventos relacionados às transações. Se desejar, também pode controlar a transação da maneira que quiser, pois através da classe de entidades (gerada pelo EDM) você tem acesso a um objeto do tipo&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;DbConnection. &lt;/SPAN&gt;&lt;SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;Exemplo:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Arial Unicode MS','sans-serif'; mso-ansi-language: EN-US"&gt;AWorksModel.AWorksEntities entidades = new AWorksModel.AWorksEntities();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;I style="mso-bidi-font-style: normal"&gt;&lt;SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 'Arial Unicode MS','sans-serif'; mso-ansi-language: EN-US"&gt;entidades.Connection.BeginTransaction(IsolationLevel.Serializable);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;P:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt; Hoje o ADO.NET Entity Framework Beta 3 dá suporte p/ Oracle? Caso isto seja possível, ele gera o modelo baseado no banco de dados, assim como é feito no SQL Server?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;R:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt; Se você quiser brincar &lt;B style="mso-bidi-font-weight: normal"&gt;hoje&lt;/B&gt; com o EF junto ao Oracle, infelizmente não é possível. Mas já foi anunciado uma série de providers que estarão disponíveis em breve. Para mais informações, veja esse artigo: &lt;A href="http://blogs.msdn.com/adonet/archive/2007/12/17/the-ado-net-entity-framework-not-just-for-sql-server.aspx" mce_href="http://blogs.msdn.com/adonet/archive/2007/12/17/the-ado-net-entity-framework-not-just-for-sql-server.aspx"&gt;http://blogs.msdn.com/adonet/archive/2007/12/17/the-ado-net-entity-framework-not-just-for-sql-server.aspx&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Não existe um exato detalhamento do que o provider vai suportar ou não, mas provavelmente a funcionalidade básica de gerar o modelo (como é feito com o SQL Server) estará disponível. Fica aqui uma dúvida, não sei se existe uma quantidade mínima de requisitos que um provider deve atender para funcionar com o EF (ou deve implementar tudo?), vou descobrir e depois coloco isso aqui.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Para informações do lançamento do EF Beta 3 e ED CTP 2, acesse:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;A href="http://blogs.msdn.com/adonet/archive/2007/12/05/ado-net-entity-framework-beta-3-rleased.aspx" mce_href="http://blogs.msdn.com/adonet/archive/2007/12/05/ado-net-entity-framework-beta-3-rleased.aspx"&gt;&lt;FONT face=Calibri size=3&gt;http://blogs.msdn.com/adonet/archive/2007/12/05/ado-net-entity-framework-beta-3-rleased.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;A href="http://blogs.msdn.com/adonet/archive/2007/12/06/entity-designer-ctp2.aspx" mce_href="http://blogs.msdn.com/adonet/archive/2007/12/06/entity-designer-ctp2.aspx"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;http://blogs.msdn.com/adonet/archive/2007/12/06/entity-designer-ctp2.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;[]s&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Luciano Caixeta Moreira&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR&gt;&lt;A href="mailto:luciano.moreira@microsoft.com" mce_href="mailto:luciano.moreira@microsoft.com"&gt;&lt;SPAN style="COLOR: blue; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri size=3&gt;luciano.moreira@microsoft.com&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 8pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;&lt;FONT face=Calibri&gt;=============================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN style="FONT-SIZE: 8pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US"&gt;&lt;FONT face=Calibri&gt;This posting is provided "AS IS" with no warranties, and confers no rights&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.25in; LINE-HEIGHT: normal; TEXT-ALIGN: justify"&gt;&lt;SPAN lang=PT-BR style="FONT-SIZE: 8pt; mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri&gt;=============================================================&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN lang=PT-BR style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6879312" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/luti/archive/tags/Entity+Framework/default.aspx">Entity Framework</category></item></channel></rss>