Considerações sobre migração (Entity Framework)
O ADO.NET Entity Framework fornece vários benefícios para um aplicativo existente. Um dos benefícios mais importantes desses é a capacidade de usar um modelo conceitual para separar as estruturas de dados usadas pelo aplicativo do esquema na fonte de dados. Isso permite que você faça facilmente alterações futuras no modelo de armazenamento ou na própria fonte de dados sem fazer alterações compensatórias no aplicativo. Para obter mais informações sobre os benefícios de usar o Entity Framework, consulte Visão geral do Entity Framework e Modelo de dados de entidade.
Para aproveitar os benefícios do Entity Framework, você pode migrar um aplicativo existente para o Entity Framework. Algumas tarefas são comuns a todos os aplicativos migrados. Essas tarefas comuns incluem atualizar o aplicativo para usar o .NET Framework a partir da versão 3.5 Service Pack 1 (SP1), definir modelos e mapeamento e configurar o Entity Framework. Quando você migra um aplicativo para o Entity Framework, há considerações adicionais que se aplicam. Essas considerações dependem do tipo de aplicativo que está sendo migrado e da funcionalidade específica do aplicativo. Este tópico fornece informações para ajudá-lo a escolher a melhor abordagem a ser usada ao atualizar um aplicativo existente.
Considerações gerais sobre migração
As seguintes considerações se aplicam quando você migra qualquer aplicativo para o Entity Framework:
Qualquer aplicativo que use o .NET Framework a partir da versão 3.5 SP1 pode ser migrado para o Entity Framework, desde que o provedor de dados da fonte de dados usada pelo aplicativo ofereça suporte ao Entity Framework.
O Entity Framework pode não suportar todas as funcionalidades de um provedor de fonte de dados, mesmo que esse provedor ofereça suporte ao Entity Framework.
Para um aplicativo grande ou complexo, não é necessário migrar todo o aplicativo para o Entity Framework de uma só vez. No entanto, qualquer parte do aplicativo que não use o Entity Framework ainda deve ser alterada quando a fonte de dados for alterada.
A conexão do provedor de dados usada pelo Entity Framework pode ser compartilhada com outras partes do seu aplicativo porque o Entity Framework usa ADO.NET provedores de dados para acessar a fonte de dados. Por exemplo, o provedor SqlClient é usado pelo Entity Framework para acessar um banco de dados do SQL Server. Para obter mais informações, consulte EntityClient Provider for the Entity Framework.
Tarefas comuns de migração
O caminho para migrar um aplicativo existente para o Entity Framework depende do tipo de aplicativo e da estratégia de acesso a dados existente. No entanto, você sempre deve executar as seguintes tarefas ao migrar um aplicativo existente para o Entity Framework.
Nota
Todas essas tarefas são executadas automaticamente quando você usa as ferramentas do Modelo de Dados de Entidade a partir do Visual Studio 2008. Para obter mais informações, consulte Como usar o Assistente de Modelo de Dados de Entidade.
Atualize o aplicativo.
Um projeto criado usando uma versão anterior do Visual Studio e do .NET Framework deve ser atualizado para usar o Visual Studio 2008 SP1 e o .NET Framework a partir da versão 3.5 SP1.
Defina os modelos e o mapeamento.
Os arquivos de modelo e mapeamento definem entidades no modelo conceitual; estruturas na fonte de dados, como tabelas, procedimentos armazenados e exibições; e o mapeamento entre as entidades e as estruturas de fontes de dados. Para obter mais informações, consulte Como definir manualmente os arquivos de modelo e mapeamento.
Os tipos definidos no modelo de armazenamento devem corresponder ao nome dos objetos na fonte de dados. Se o aplicativo existente expõe dados como objetos, você deve garantir que as entidades e propriedades definidas no modelo conceitual correspondam aos nomes dessas classes e propriedades de dados existentes. Para obter mais informações, consulte Como personalizar arquivos de modelagem e mapeamento para trabalhar com objetos personalizados.
Nota
O Entity Data Model Designer pode ser usado para renomear entidades no modelo conceitual para corresponder a objetos existentes. Para obter mais informações, consulte Entity Data Model Designer.
Defina a cadeia de conexão.
O Entity Framework usa uma cadeia de conexão especialmente formatada ao executar consultas em um modelo conceitual. Essa cadeia de conexão encapsula informações sobre os arquivos de modelo e mapeamento e a conexão com a fonte de dados.
Configure o projeto Visual Studio.
Referências a assemblies do Entity Framework e os arquivos de modelo e mapeamento devem ser adicionados ao projeto do Visual Studio. Você pode adicionar esses arquivos de mapeamento ao projeto para garantir que eles sejam implantados com o aplicativo no local indicado na cadeia de conexão. Para obter mais informações, consulte Como configurar manualmente um projeto do Entity Framework.
Considerações para aplicativos com objetos existentes
Começando com o .NET Framework 4, o Entity Framework oferece suporte a objetos CLR "antigos" (POCO), também chamados objetos ignorantes de persistência. Na maioria dos casos, seus objetos existentes podem trabalhar com o Entity Framework fazendo pequenas alterações. Para obter mais informações, consulte Trabalhando com entidades POCO. Você também pode migrar um aplicativo para o Entity Framework e usar as classes de dados geradas pelas ferramentas do Entity Framework. Para obter mais informações, consulte Como usar o Assistente de Modelo de Dados de Entidade.
Considerações para aplicativos que usam provedores de ADO.NET
ADO.NET provedores, como SqlClient, permitem que você consulte uma fonte de dados para retornar dados tabulares. Os dados também podem ser carregados em um ADO.NET DataSet. A lista a seguir descreve as considerações para atualizar um aplicativo que usa um provedor de ADO.NET existente:
Exibição de dados tabulares usando um leitor de dados.
Você pode considerar a execução de uma consulta Entity SQL usando o provedor EntityClient e enumerando através do objeto retornado EntityDataReader . Faça isso somente se seu aplicativo exibir dados tabulares usando um leitor de dados e não exigir os recursos fornecidos pelo Entity Framework para materializar dados em objetos, controlar alterações e fazer atualizações. Você pode continuar a usar o código de acesso a dados existente que faz atualizações na fonte de dados, mas pode usar a conexão existente acessada a StoreConnection partir da propriedade de EntityConnection. Para obter mais informações, consulte EntityClient Provider for the Entity Framework.
Trabalhando com DataSets.
O Entity Framework fornece muitas das mesmas funcionalidades fornecidas pelo DataSet, incluindo persistência na memória, controle de alterações, vinculação de dados e serialização de objetos como dados XML. Para obter mais informações, consulte Trabalhando com objetos.
Se o Entity Framework não fornecer a funcionalidade de DataSet necessária para seu aplicativo, você ainda poderá aproveitar os benefícios das consultas LINQ usando LINQ to DataSet. Para obter mais informações, consulte LINQ to DataSet.
Considerações para aplicativos que vinculam dados a controles
O .NET Framework permite encapsular dados em uma fonte de dados, como um DataSet ou um controle de fonte de dados ASP.NET e, em seguida, vincular elementos da interface do usuário a esses controles de dados. A lista a seguir descreve considerações para vincular controles a dados do Entity Framework.
Vinculação de dados a controles.
Quando você consulta o modelo conceitual, o Entity Framework retorna os dados como objetos que são instâncias de tipos de entidade. Esses objetos podem ser vinculados diretamente aos controles, e essa associação oferece suporte a atualizações. Isso significa que as alterações nos dados em um controle, como uma linha em um DataGridView, são salvas automaticamente no banco de dados quando o SaveChanges método é chamado.
Se seu aplicativo enumera os resultados de uma consulta para exibir dados em um DataGridView ou outro tipo de controle que ofereça suporte à vinculação de dados, você pode modificar seu aplicativo para vincular o controle ao resultado de um ObjectQuery<T>.
Para obter mais informações, consulte Vinculando objetos a controles.
ASP.NET controles da fonte de dados.
O Entity Framework inclui um controle de fonte de dados projetado para simplificar a vinculação de dados em ASP.NET aplicativos Web. Para obter mais informações, consulte Visão geral do controle de servidor Web EntityDataSource.
Outras considerações
A seguir estão as considerações que podem ser aplicadas quando você migra tipos específicos de aplicativos para o Entity Framework.
Aplicativos que expõem serviços de dados.
Serviços Web e aplicativos baseados no Windows Communication Foundation (WCF) expõem dados de uma fonte de dados subjacente usando um formato de mensagens de solicitação/resposta XML. O Entity Framework oferece suporte à serialização de objetos de entidade usando serialização de contrato de dados binário, XML ou WCF. A serialização binária e WCF suporta a serialização completa de gráficos de objeto. Para obter mais informações, consulte Criando aplicativos de N camadas.
Aplicativos que usam dados XML.
A serialização de objetos permite criar serviços de dados do Entity Framework. Esses serviços fornecem dados para aplicativos que consomem dados XML, como aplicativos da Internet baseados em AJAX. Nesses casos, considere o uso do WCF Data Services. Esses serviços de dados são baseados no Modelo de Dados de Entidade e fornecem acesso dinâmico aos dados da entidade usando ações HTTP padrão de Transferência de Estado Representacional (REST), como GET, PUT e POST. Para obter mais informações, consulte WCF Data Services 4.5.
O Entity Framework não oferece suporte a um tipo de dados XML nativo. Isso significa que, quando uma entidade é mapeada para uma tabela com uma coluna XML, a propriedade de entidade equivalente para a coluna XML é uma cadeia de caracteres. Os objetos podem ser desconectados e serializados como XML. Para obter mais informações, consulte Serializando objetos.
Se seu aplicativo requer a capacidade de consultar dados XML, você ainda pode aproveitar os benefícios das consultas LINQ usando LINQ to XML. Para obter mais informações, consulte LINQ to XML (C#) ou LINQ to XML (Visual Basic).
Aplicativos que mantêm o estado.
ASP.NET aplicativos Web devem manter frequentemente o estado de uma página da Web ou de uma sessão de usuário. Os objetos em uma ObjectContext instância podem ser armazenados no estado de exibição do cliente ou no estado da sessão no servidor e, posteriormente, recuperados e reanexados a um novo contexto de objeto. Para obter mais informações, consulte Anexando e desanexando objetos.