Compartilhar via


Considerações sobre migração (Entity Framework)

O Entity Framework do ADO.NET fornece vários benefícios para um aplicativo existente. Um dos mais importantes desses benefícios é a capacidade de usar um modelo conceitual para separar as estruturas de dados usadas pelo aplicativo no esquema da fonte de dados. Isso permite que você faça alterações futuras facilmente no modelo de armazenamento ou na própria fonte de dados sem fazer alterações de compensação 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 a atualização do aplicativo para usar o  a partir da versão 3.5 Service Pack 1 (SP1) definindo modelos e mapeamento e configurando 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 do 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 utilizada ao atualizar um aplicativo existente.

Considerações gerais sobre migração

As seguintes condições se aplicam quando você migra qualquer aplicativo para o Entity Framework:

  • Qualquer aplicativo que use o  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 dê suporte ao Entity Framework.

  • O Entity Framework não dá suporte a toda a funcionalidade de um provedor de fonte de dados, mesmo que o provedor dê suporte ao Entity Framework.

  • Para um aplicativo grande ou complexo, não é necessário migrar todo o aplicativo para o Entity Framework de uma 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 usado pelo Entity Framework pode ser compartilhada com outras partes de seu aplicativo porque o Entity Framework usa provedores de dados do ADO.NET para acessar a fonte de dados. Por exemplo, o provedor SqlClient é usado pelo Entity Framework para acessar um banco de dados SQL Server. Para obter mais informações, consulte EntityClient Provider para o Entity Framework.

Tarefas de migração comuns

O caminho para migração de um aplicativo existente para o Entity Framework depende do tipo do aplicativo e da estratégia de acesso dos dados existentes. No entanto, você sempre deve executar as seguintes tarefas ao migrar um aplicativo existente para o Entity Framework.

Observação

Todas essas tarefas são executadas automaticamente quando você usa ferramentas do Modelo de Dados de Entidade a partir do Visual Studio 2008. Para obter mais informações, confira Como usar o Assistente de Modelo de Dados de Entidade.

  1. Atualizar o aplicativo.

    Um projeto criado usando uma versão anterior do Visual Studio e o .NET Framework deve ser atualizado para usar o Visual Studio 2008 SP1 e o .NET Framework começando com a versão 3.5 SP1.

  2. Definir os modelos e o mapeamento.

    O modelo e os arquivos de mapeamento definem entidades no modelo conceitual; estruturas na fonte de dados, como tabelas, procedimentos armazenados e modos de exibição; e o mapeamento entre as entidades e estruturas da fonte 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 expuser dados como objetos, você deverá garantir que as entidades e as 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.

    Observação

    O Designer de Modelo de Dados de Entidade pode ser usado para renomear entidades no modelo conceitual para que correspondam aos objetos existentes. Para obter mais informações, consulte Modelo de Dados de Entidade.

  3. Definir 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 o modelo e arquivos de mapeamento e a conexão com a fonte de dados.

  4. Criando o projeto do Visual Studio.

    As referências aos assemblies do Entity Framework e o modelo e os arquivos de mapeamento devem ser adicionados ao projeto do Visual Studio. Você pode adicionar esses arquivos de mapeamento ao projeto para garantir que 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

A partir do .NET Framework 4, o Entity Framework dá suporte a POCO (objetos CLR “básicos”), também chamados de objetos com ignorância de persistência. Na maioria dos casos, os objetos existentes podem trabalhar com o Entity Framework fazendo alterações secundárias. Para saber mais, confira Como trabalhar 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, confira Como usar o Assistente de Modelo de Dados de Entidade.

Considerações para aplicativos que usam provedores ADO.NET

Os provedores ADO.NET, como o SqlClient, permitem que você consulte uma fonte de dados para retornar dados tabulares. Os dados também podem ser carregados em um Conjunto de Dados ADO.NET. A lista a seguir descreve as considerações para a atualização de um aplicativo que usa um provedor ADO.NET existente:

  • Exibindo 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 EntityDataReader retornado. Somente faça isso se o seu aplicativo exibir dados tabulares usando um leitor de dados e não exige que as instalações fornecidas por Entity Framework materializem dados em objetos, rastreamento de alterações e atualizações. Você pode continuar a usar o código de acesso de dados existente que faz atualizações à fonte de dados, mas você pode usar a conexão existente acessada a partir da propriedade StoreConnection de EntityConnection. Para obter mais informações, consulte EntityClient Provider para o 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, confira Trabalhando com objetos.

    Se o Entity Framework não fornecer a funcionalidade de DataSet necessária para seu aplicativo, você ainda poderá tirar proveito dos benefícios das consultas LINQ usando o LINQ to DataSet. Para obter mais informações, consulte LINQ to DataSet.

Considerações para aplicativos que associam dados a controles

O .NET Framework permite encapsular dados em uma fonte de dados, como um DataSet ou um controle de fonte de dados do ASP.NET e, em seguida, associar os elementos da interface do usuário a esses controles de dados. A lista a seguir descreve as considerações para associar controles aos dados do Entity Framework.

  • Associando dados a controles

    Quando você consulta o modelo conceitual, o Entity Framework retorna os dados como objetos que são instâncias dos tipos de entidade. Esses objetos podem ser associados diretamente aos controles e essa associação dá suporte a atualizações. Isso significa que as alterações nos dados em um controle, como uma linha em um DataGridView, serão salvas automaticamente no banco de dados quando método SaveChanges for chamado.

    Se seu aplicativo enumerar os resultados de uma consulta para exibir dados em um DataGridView ou em outro tipo de controle que dê suporte a vinculação de dados, você poderá alterar seu aplicativo para associar o controle ao resultado de um ObjectQuery<T>.

    Para obter mais informações, consulte Binding Objects to Controls.

  • Controles de fonte de dados do ASP.NET.

    O Entity Framework inclui um controle de fonte de dados criado para simplificar a vinculação de dados em aplicativos Web do ASP.NET. Para obter mais informações, consulte Visão geral do controle de servidor Web do EntityDataSource.

Outras considerações

A seguir estão as considerações que podem se aplicar quando você migra tipos específicos de aplicativos para o Entity Framework.

  • Aplicativos que expõem serviços de dados.

    Os serviços e aplicativos Web baseados no WCF (Windows Communication Foundation) expõem dados de uma fonte de dados subjacente usando um formato de mensagem XML de solicitação/resposta. O Entity Framework dá suporte à serialização de objetos de entidade usando serialização binária, XML ou de contrato de dados WCF. A serialização binária e do WCF dão suporte à serialização completa de gráficos de objetos. Para obter mais informações, consulte Como criar aplicativos de N Camadas.

  • Aplicativos que usam dados XML.

    A serialização de objetos permite que você crie serviços de dados do Entity Framework. Esses serviços fornecem dados a aplicativos que consomem dados XML, como aplicativos de Internet baseados em AJAX. Nesses casos, considere usar WCF Data Services. Esses serviços de dados são baseados no Modelo de Dados de Entidade e fornecem acesso dinâmico a dados de entidade usando ações HTTP REST (Representational State Transfer), como GET, PUT e POST. Para obter mais informações, consulte WCF Data Services 4.5.

    O Entity Framework não dá suporte a um tipo de dados XML nativo. Isso significa que quando uma entidade é mapeada para uma tabela com uma coluna XML, a propriedade equivalente da entidade 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 exigir a capacidade de consultar dados XML, você ainda poderá tirar proveito dos benefícios de consultas LINQ usando o 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.

    Os aplicativos Web do  geralmente mantêm o estado de uma página da Web ou de uma sessão de usuário. Os objetos em uma instância ObjectContext podem ser armazenados no estado de exibição do cliente ou no estado da sessão no servidor e, posteriormente, serem recuperados e anexados novamente a um novo contexto de objeto. Para obter mais informações, consulte Anexar e desanexar objetos.

Confira também