Provedor EntityClient para Entity Framework

O provedor EntityClient é um provedor de dados usado por aplicativos Entity Framework para acessar dados descritos em um modelo conceitual. Para obter informações sobre modelos conceituais, consulte Modelagem e Mapeamento. O EntityClient usa outros provedores de dados .NET Framework para acessar a fonte de dados. Por exemplo, o EntityClient usa o Provedor de Dados .NET Framework para SQL Server (SqlClient) ao acessar um banco de dados do SQL Server. Para obter informações sobre o provedor SqlClient, consulte SqlClient para o Entity Framework. O provedor EntityClient é implementado no namespace System.Data.EntityClient.

Gerenciando conexões

O Entity Framework é compilado sobre provedores de dados ADO.NET específicos do armazenamento, fornecendo uma EntityConnection para o provedor de dados subjacente e o banco de dados relacional. Para construir um objeto EntityConnection, você precisa fazer referência a um conjunto de metadados que contenha os modelos e os mapeamentos necessários, bem como uma cadeia de conexão e um nome do provedor de dados específico ao armazenamento. Uma vez ativado o objeto EntityConnection, as entidades podem ser acessadas por meio de classes geradas a partir do modelo conceitual.

Você pode especificar uma cadeia de conexão no arquivo app.config.

O System.Data.EntityClient também inclui a classe EntityConnectionStringBuilder. Essa classe permite aos desenvolvedores criar, programaticamente, cadeias de conexão com sintaxe correta, bem como analisar e reconstruir cadeias de conexão existentes, usando as propriedades e os métodos da classe. Para obter mais informações, consulte Como criar uma cadeia de conexão EntityConnection.

Criando consultas

A linguagem Entity SQL é um dialeto de SQL independente de armazenamento que funciona diretamente com esquemas conceituais de entidade e dá suporte a conceitos de Modelo de Dados de Entidade, como herança e relações. A classe EntityCommand é usada para executar um comando Entity SQL em um modelo de entidade. Quando você constrói objetos EntityCommand, é possível especificar um nome de procedimento armazenado ou um texto de consulta. O Entity Framework funciona com provedores de dados específicos ao armazenamento para converter a linguagem Entity SQL genérica em consultas específicas ao armazenamento. Para obter mais informações sobre como escrever consultas Entity SQL, consulte Linguagem Entity SQL.

O exemplo a seguir cria um objeto EntityCommand e atribui um texto de consulta da Entity SQL à sua propriedade EntityCommand.CommandText. Essa consulta Entity SQL solicita os produtos ordenados pelo preço de venda do modelo conceitual. O código a seguir não tem nenhum conhecimento do modelo de armazenamento.

EntityCommand cmd = conn.CreateCommand();
cmd.CommandText = @"SELECT VALUE p
 FROM AdventureWorksEntities.Product AS p
 ORDER BY p.ListPrice";

Executando consultas

Quando uma consulta é executada, ela é analisada e convertida em uma árvore de comandos canônica. Todo processamento subsequente é executado na árvore de comandos. A árvore de comandos é o meio de comunicação entre System.Data.EntityClient e o provedor de dados .NET Framework subjacente, como System.Data.SqlClient.

O EntityDataReader expõe os resultados da execução de um EntityCommand em relação a um modelo conceitual. Para executar o comando que retorna EntityDataReader, chame ExecuteReader. O EntityDataReader implementa IExtendedDataRecord para descrever resultados estruturados avançados.

Gerenciando transações

No Entity Framework, existem dois modos de usar transações: automático e explícito. As transações automáticas usam o namespace System.Transactions, e as transações explícitas usam a classe EntityTransaction.

Para atualizar os dados expostos por meio de um modelo conceitual, consulte Como gerenciar transações no Entity Framework.

Nesta seção

Como: criar uma cadeia de conexão EntityConnection

Como: executar uma consulta que retorna resultados de PrimitiveType

Como: executar uma consulta que retorna resultados de StructuralType

Como: executar uma consulta que retorna resultados de RefType

Como: executar uma consulta que retorna tipos complexos

Como: executar uma consulta que retorna aninhados coleções

Como: executar uma consulta Entity SQL parametrizada usando EntityCommand

Como: executar um procedimento armazenado parametrizado usando EntityCommand

Como: executar uma consulta polimorfo

Como: navegar em relações com o operador navegar

Confira também