Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Apenas a partir do EF6 - As funcionalidades, APIs, etc. discutidas nesta página foram introduzidas no Entity Framework 6. Se estiver a usar uma versão anterior, parte ou toda a informação não se aplica.
A partir do EF6, o Entity Framework contém um mecanismo de propósito geral para obter implementações dos serviços que necessita. Ou seja, quando o EF utiliza uma instância de algumas interfaces ou classes base, solicita uma implementação concreta da interface ou classe base para usar. Isto é conseguido através da utilização da interface IDbDependencyResolver:
public interface IDbDependencyResolver
{
object GetService(Type type, object key);
}
O método GetService é normalmente chamado pela EF e é gerido por uma implementação do IDbDependencyResolver fornecida quer pela EF quer pela aplicação. Quando chamado, o argumento tipo é o tipo de interface ou classe base do serviço solicitado, e o objeto-chave é nulo ou um objeto que fornece informação contextual sobre o serviço solicitado.
Salvo indicação em contrário, qualquer objeto devolvido deve ser thread-safe, pois pode ser utilizado como um singleton. Em muitos casos, o objeto devolvido é uma fábrica, caso em que a própria fábrica deve ser thread-safe, mas o objeto devolvido da fábrica não precisa de ser thread-safe, pois uma nova instância é solicitada à fábrica para cada uso.
Este artigo não contém detalhes completos sobre como implementar o IDbDependencyResolver, mas serve antes como referência para os tipos de serviço (ou seja, os tipos de interface e classe base) para os quais o EF chama o GetService e a semântica do objeto-chave para cada uma destas chamadas.
System.Data.Entity.IDatabaseInitializer<TContext>
Versão introduzida: EF6.0.0
Objeto devolvido: Um inicializador de base de dados para o tipo de contexto dado
Chave: Não utilizado; será nulo
Func<System.Data.Entity.Migrations.Sql.MigrationSqlGenerator>
Versão introduzida: EF6.0.0
Objeto retornado: Uma fábrica para criar um gerador SQL que pode ser usado para migrações e outras ações que causam a criação de uma base de dados, como a criação de bases de dados com inicializadores de base de dados.
Chave: Uma string contendo o nome invariante do ADO.NET fornecedor que especifica o tipo de base de dados para a qual SQL será gerado. Por exemplo, o gerador SQL do SQL Server é devolvido para a chave "System.Data.SqlClient".
Observação
Para mais detalhes sobre serviços relacionados com fornecedores no EF6, consulte a secção do modelo do fornecedor EF6 .
System.Data.Entity.Core.Common.DbProviderServices
Versão introduzida: EF6.0.0
Objeto devolvido: O fornecedor EF a usar para um dado nome invariável do fornecedor
Chave: Uma string contendo o nome invariante do ADO.NET fornecedor que especifica o tipo de base de dados para a qual é necessário um fornecedor. Por exemplo, o provedor do SQL Server é retornado para a chave "System.Data.SqlClient".
Observação
Para mais detalhes sobre serviços relacionados com fornecedores no EF6, consulte a secção do modelo do fornecedor EF6 .
System.Data.Entity.Infrastructure.IDbConnectionFactory
Versão introduzida: EF6.0.0
Objeto devolvido: A fábrica de conexões que será usada quando o Entity Framework cria uma ligação à base de dados por convenção. Ou seja, quando nenhuma conexão ou cadeia de conexão é dada ao EF, e nenhuma cadeia de conexão pode ser encontrada no elemento app.config ou web.config, então este serviço é usado para criar uma conexão pela convenção. Alterar a fábrica de conexões pode permitir que o EF use um tipo diferente de base de dados (por exemplo, SQL Server Compact Edition) por defeito. Nunca armazene senhas ou outros dados confidenciais no código do provedor de configuração ou em arquivos de configuração de texto simples. Especifique segredos fora do projeto para que eles não possam ser acidentalmente comprometidos em um repositório de código-fonte. Considere proteger o conteúdo do ficheiro de configuração usando Configuração Protegida.
Chave: Não utilizado; será nulo
Observação
Para mais detalhes sobre serviços relacionados com fornecedores no EF6, consulte a secção do modelo do fornecedor EF6 .
System.Data.Entity.Infrastructure.IManifestTokenService
Versão introduzida: EF6.0.0
Objeto devolvido: Um serviço que pode gerar um token de manifesto de fornecedor a partir de uma ligação. Este serviço é normalmente utilizado de duas formas. Primeiro, pode ser usado para evitar que o Code First se ligue à base de dados ao construir um modelo. Em segundo lugar, pode ser usado para forçar o Code First a construir um modelo para uma versão específica da base de dados — por exemplo, para forçar um modelo para o SQL Server 2005 mesmo que por vezes seja usado o SQL Server 2008.
Vida útil do objeto: Singleton -- o mesmo objeto pode ser usado várias vezes e simultaneamente por diferentes threads
Chave: Não utilizado; será nulo
System.Data.Entity.Infrastructure.IDbProviderFactoryService
Versão introduzida: EF6.0.0
Objeto devolvido: Um serviço que pode obter uma fábrica fornecedora a partir de uma dada ligação. No .NET 4.5, o fornecedor é acessível publicamente a partir da ligação. No .NET 4, a implementação padrão deste serviço usa algumas heurísticas para encontrar o fornecedor correspondente. Se estes falharem, pode ser registada uma nova implementação deste serviço para fornecer uma resolução adequada.
Chave: Não utilizado; será nulo
Func<DbContext, System.Data.Entity.Infrastructure.IDbModelCacheKey>
Versão introduzida: EF6.0.0
Objeto devolvido: Uma fábrica que gera uma chave de cache de modelo para um dado contexto. Por defeito, o EF armazena em cache um modelo por tipo DbContext por fornecedor. Uma implementação diferente deste serviço pode ser usada para adicionar outras informações, como o nome do esquema, à chave de cache.
Chave: Não utilizado; será nulo
System.Data.Entity.Spatial.DbSpatialServices
Versão introduzida: EF6.0.0
Objeto devolvido: Um fornecedor espacial EF que adiciona suporte ao fornecedor EF básico para tipos espaciais de geografia e geometria.
Chave: O DbSpatialServices é solicitado de duas formas. Em primeiro lugar, os serviços espaciais específicos do fornecedor são solicitados usando um objeto DbProviderInfo (que contém nome invariante e token de manifesto) como chave. Em segundo lugar, o DbSpatialServices pode ser solicitado sem chave. Isto é usado para determinar o "fornecedor espacial global", que é utilizado ao criar tipos DbGeography ou DbGeometry autónomos.
Observação
Para mais detalhes sobre serviços relacionados com fornecedores no EF6, consulte a secção do modelo do fornecedor EF6 .
Func<System.Data.Entity.Infrastructure.IDbExecutionStrategy>
Versão introduzida: EF6.0.0
Objeto devolvido: Uma fábrica para criar um serviço que permite a um fornecedor implementar tentativas de repetição ou outros comportamentos quando consultas e comandos são executados na base de dados. Se não for fornecida implementação, o EF simplesmente executará os comandos e propagará quaisquer exceções lançadas. Para o SQL Server, este serviço é utilizado para fornecer uma política de repetição, especialmente útil ao operar com servidores de base de dados baseados na cloud, como o SQL Azure.
Chave: Um objeto ExecutionStrategyKey que contém o nome invariante do fornecedor e, opcionalmente, um nome de servidor para o qual será utilizada a estratégia de execução.
Observação
Para mais detalhes sobre serviços relacionados com fornecedores no EF6, consulte a secção do modelo do fornecedor EF6 .
Func<DbConnection, string, System.Data.Entity.Migrations.History.HistoryContext>
Versão introduzida: EF6.0.0
Objeto devolvido: Uma fábrica que permite a um fornecedor configurar o mapeamento do HistoryContext para a __MigrationHistory tabela usada pelas migrações EF. O HistoryContext é um DbContext Code First e pode ser configurado usando a API fluent normal para alterar coisas como o nome da tabela e as especificações de mapeamento de colunas.
Chave: Não utilizado; será nulo
Observação
Para mais detalhes sobre serviços relacionados com fornecedores no EF6, consulte a secção do modelo do fornecedor EF6 .
System.Data.Common.DbProviderFactory
Versão introduzida: EF6.0.0
Objeto devolvido: O fornecedor ADO.NET a usar para um dado nome de fornecedor invariante.
Chave: Uma cadeia que contém o nome invariante do fornecedor ADO.NET
Observação
Este serviço normalmente não é alterado diretamente, uma vez que a implementação padrão utiliza o registo normal de ADO.NET fornecedores. Para mais detalhes sobre serviços relacionados com fornecedores no EF6, consulte a secção do modelo do fornecedor EF6 .
System.Data.Entity.Infrastructure.IProviderInvariantName
Versão introduzida: EF6.0.0
Objeto devolvido: um serviço usado para determinar um nome invariante do fornecedor para um dado tipo de DbProviderFactory. A implementação padrão deste serviço utiliza o registo do fornecedor ADO.NET. Isto significa que, se o fornecedor ADO.NET não estiver registado da forma normal porque o DbProviderFactory está a ser resolvido pela EF, será necessário também resolver este serviço.
Chave: A instância DbProviderFactory para a qual é necessário um nome invariante.
Observação
Para mais detalhes sobre serviços relacionados com fornecedores no EF6, consulte a secção do modelo do fornecedor EF6 .
System.Data.Entity.Core.Mapping.ViewGeneration.IViewAssemblyCache
Versão introduzida: EF6.0.0
Objeto devolvido: uma cache dos assemblies que contêm vistas pré-geradas. Um substituto é normalmente utilizado para informar o EF sobre quais assemblies contêm vistas pré-geradas sem realizar qualquer descoberta.
Chave: Não utilizado; será nulo
System.Data.Entity.Infrastructure.Pluralization.IPluralizationService
Versão introduzida: EF6.0.0
Objeto devolvido: um serviço usado pela EF para pluralizar e singularizar nomes. Por defeito, é usado um serviço de pluralização em inglês.
Chave: Não utilizado; será nulo
System.Data.Entity.Infrastructure.Interception.IDbInterceptor
Versão introduzida: EF6.0.0
Objetos devolvidos: Quaisquer interceptores que devam ser registados quando a aplicação começa. Note que estes objetos são solicitados através da chamada GetServices e todos os interceptores devolvidos por qualquer resolução de dependências serão registados.
Chave: Não utilizado; será nulo.
Func<System.Data.Entity.DbContext, Action<string>, System.Data.Entity.Infrastructure.Interception.DatabaseLogFormatter>
Versão introduzida: EF6.0.0
Objeto devolvido: Uma fábrica que será usada para criar o formatador de registo do banco de dados que será usado quando a propriedade context.Database.Log for definida no contexto dado.
Chave: Não utilizado; será nulo.
Func<System.Data.Entity.DbContext>
Versão introduzida: EF6.1.0
Objeto devolvido: Uma fábrica que será usada para criar instâncias de contexto para Migrações quando o contexto não tem um construtor acessível sem parâmetros.
Chave: O objeto Type para o tipo do DbContext derivado para o qual é necessária uma fábrica.
Func<System.Data.Entity.Core.Metadata.Edm.IMetadataAnnotationSerializer>
Versão introduzida: EF6.1.0
Objeto devolvido: Uma fábrica que será usada para criar serializadores para serialização de anotações personalizadas fortemente tipadas, de modo que possam ser serializadas e desserializadas para XML para uso em migrações Code First.
Chave: O nome da anotação que está a ser serializada ou desserializada.
Func<System.Data.Entity.Infrastructure.TransactionHandler>
Versão introduzida: EF6.1.0
Objeto devolvido: Uma fábrica que será usada para criar handlers para transações, de modo a que um tratamento especial possa ser aplicado em situações como o tratamento de falhas de commit.
Chave: Um objeto ExecutionStrategyKey que contém o nome invariante do fornecedor e, opcionalmente, um nome de servidor para o qual será utilizado o handler de transações.