Řešení závislostí
Poznámka:
Pouze EF6 a novější – Funkce, rozhraní API atd. popsané na této stránce byly představeny v Entity Framework 6. Pokud používáte starší verzi, některé nebo všechny informace nemusí být platné.
Od EF6 obsahuje Entity Framework mechanismus pro obecné účely pro získání implementací služeb, které vyžaduje. To znamená, že když EF používá instanci některých rozhraní nebo základních tříd, požádá o konkrétní implementaci rozhraní nebo základní třídy, která se má použít. Toho dosáhnete pomocí rozhraní IDbDependencyResolver:
public interface IDbDependencyResolver
{
object GetService(Type type, object key);
}
Metoda GetService je obvykle volána EF a je zpracována implementací IDbDependencyResolver poskytované EF nebo aplikací. Při zavolání je argument typu rozhraní nebo základní třídy požadované služby a klíčový objekt má hodnotu null nebo objekt poskytující kontextové informace o požadované službě.
Pokud není uvedeno jinak žádný vrácený objekt, musí být bezpečný pro přístup z více vláken, protože jej lze použít jako jednoúčelový. V mnoha případech vrácený objekt je továrna v takovém případě, že samotná továrna musí být bezpečná pro přístup z více vláken, ale objekt vrácený z továrny nemusí být bezpečný pro přístup z více vláken, protože pro každé použití je požadována nová instance z továrny.
Tento článek neobsahuje úplné podrobnosti o tom, jak implementovat IDbDependencyResolver, ale místo toho funguje jako odkaz pro typy služeb (tj. rozhraní a základní třídy), pro které EF volá GetService a sémantiku klíčového objektu pro každé z těchto volání.
System.Data.Entity.IDatabaseInitializer<TContext>
Verze představená: EF6.0.0
Vrácený objekt: Inicializátor databáze pro daný typ kontextu
Klíč: Nepoužívá se; bude mít hodnotu null.
Func<System.Data.Entity.Migrations.Sql.MigrationSqlGenerator>
Verze představená: EF6.0.0
Vrácený objekt: Objekt pro vytvoření generátoru SQL, který lze použít pro migrace a další akce, které způsobují vytvoření databáze, například vytvoření databáze pomocí inicializátorů databáze.
Klíč: Řetězec obsahující ADO.NET zprostředkovatel invariantní název určující typ databáze, pro kterou se bude generovat SQL. Například generátor SQL Serveru se vrátí pro klíč System.Data.SqlClient.
Poznámka:
Další podrobnosti o službách souvisejících s poskytovatelem v EF6 najdete v části Model zprostředkovatele EF6.
System.Data.Entity.Core.Common.DbProviderServices
Verze představená: EF6.0.0
Vrácený objekt: Zprostředkovatel EF, který se má použít pro daný zprostředkovatel invariantní název
Klíč: Řetězec obsahující invariantní název zprostředkovatele ADO.NET určující typ databáze, pro kterou je zprostředkovatel potřebný. Například zprostředkovatel SQL Serveru se vrátí pro klíč System.Data.SqlClient.
Poznámka:
Další podrobnosti o službách souvisejících s poskytovatelem v EF6 najdete v části Model zprostředkovatele EF6.
System.Data.Entity.Infrastructure.IDbConnectionFactory
Verze představená: EF6.0.0
Vrácený objekt: Objekt pro vytváření připojení, který se použije při vytvoření připojení k databázi ef konvencí. To znamená, že pokud ef není k dispozici žádné připojení nebo připojovací řetězec a žádné připojovací řetězec nelze najít v app.config
web.config
této nebo , pak se tato služba používá k vytvoření připojení podle konvence. Změna objektu pro vytváření připojení umožňuje ef ve výchozím nastavení používat jiný typ databáze (například SQL Server Compact Edition). Nikdy neukládejte hesla ani jiné citlivé údaje v kódu zprostředkovatele konfigurace nebo v textových konfiguračních souborech. Tajné kódy zadávejte mimo projekt, aby nemohly být omylem potvrzeny do úložiště zdrojového kódu. Zvažte ochranu obsahu konfiguračního souboru pomocí chráněné konfigurace.
Klíč: Nepoužívá se; bude mít hodnotu null.
Poznámka:
Další podrobnosti o službách souvisejících s poskytovatelem v EF6 najdete v části Model zprostředkovatele EF6.
System.Data.Entity.Infrastructure.IManifestTokenService
Verze představená: EF6.0.0
Vrácený objekt: Služba, která může vygenerovat token manifestu zprostředkovatele z připojení. Tato služba se obvykle používá dvěma způsoby. Nejprve se dá použít k tomu, abyste se při vytváření modelu vyhnuli připojení Code First k databázi. Za druhé se dá použít k vynucení toho, aby Code First sestavil model pro konkrétní verzi databáze – například k vynucení modelu pro SQL Server 2005, i když se někdy používá SQL Server 2008.
Životnost objektu: Singleton – stejný objekt může být použit vícekrát a současně různými vlákny.
Klíč: Nepoužívá se; bude mít hodnotu null.
System.Data.Entity.Infrastructure.IDbProviderFactoryService
Verze představená: EF6.0.0
Vrácený objekt: Služba, která může získat objekt pro vytváření zprostředkovatele z daného připojení. V rozhraní .NET 4.5 je poskytovatel veřejně přístupný z připojení. V .NET 4 výchozí implementace této služby používá několik heuristiky k vyhledání odpovídajícího zprostředkovatele. Pokud tyto služby selžou, je možné zaregistrovat novou implementaci této služby, aby byla zajištěna odpovídající řešení.
Klíč: Nepoužívá se; bude mít hodnotu null.
Func<DbContext, System.Data.Entity.Infrastructure.IDbModelCacheKey>
Verze představená: EF6.0.0
Vrácený objekt: Objekt pro vytváření, který vygeneruje klíč mezipaměti modelu pro daný kontext. Ef ve výchozím nastavení ukládá jeden model do mezipaměti na typ DbContext na zprostředkovatele. K přidání dalších informací, jako je název schématu, do klíče mezipaměti lze použít jinou implementaci této služby.
Klíč: Nepoužívá se; bude mít hodnotu null.
System.Data.Entity.Spatial.DbSpatialServices
Verze představená: EF6.0.0
Vrácený objekt: Zprostředkovatel prostorového systému EF, který přidává podporu k základnímu zprostředkovateli EF pro geografické a geometrické typy prostorových typů.
Klíč: DbSpatialServices se žádá dvěma způsoby. Nejprve se vyžaduje prostorové služby specifické pro zprostředkovatele pomocí objektu DbProviderInfo (který obsahuje invariantní název a token manifestu) jako klíč. Za druhé, DbSpatialServices lze požádat o bez klíče. Používá se k vyřešení "globálního poskytovatele prostorového prostoru", který se používá při vytváření samostatných typů DbGeography nebo DbGeometry.
Poznámka:
Další podrobnosti o službách souvisejících s poskytovatelem v EF6 najdete v části Model zprostředkovatele EF6.
Func<System.Data.Entity.Infrastructure.IDbExecutionStrategy>
Verze představená: EF6.0.0
Vrácený objekt: Objekt pro vytvoření služby, která poskytovateli umožňuje implementovat opakování nebo jiné chování při provádění dotazů a příkazů v databázi. Pokud není k dispozici žádná implementace, EF jednoduše spustí příkazy a rozšíří všechny vyvolané výjimky. Pro SQL Server se tato služba používá k poskytování zásad opakování, které je zvlášť užitečné při spouštění na cloudových databázových serverech, jako je SQL Azure.
Klíč: ExecutionStrategyKey objekt, který obsahuje invariantní název zprostředkovatele a volitelně název serveru, pro který bude použita strategie provádění.
Poznámka:
Další podrobnosti o službách souvisejících s poskytovatelem v EF6 najdete v části Model zprostředkovatele EF6.
Func<DbConnection, řetězec, System.Data.Entity.Migrations.History.HistoryContext>
Verze představená: EF6.0.0
Vrácený objekt: Objekt pro vytváření, který umožňuje poskytovateli nakonfigurovat mapování HistoryContext na __MigrationHistory
tabulku používanou migrací EF. HistoryContext je Code First DbContext a lze ho nakonfigurovat pomocí normálního fluent api pro změnu věcí, jako je název tabulky a specifikace mapování sloupců.
Klíč: Nepoužívá se; bude mít hodnotu null.
Poznámka:
Další podrobnosti o službách souvisejících s poskytovatelem v EF6 najdete v části Model zprostředkovatele EF6.
System.Data.Common.DbProviderFactory
Verze představená: EF6.0.0
Vrácený objekt: Zprostředkovatel ADO.NET, který se má použít pro daný zprostředkovatel invariantní název.
Klíč: Řetězec obsahující invariantní název zprostředkovatele ADO.NET
Poznámka:
Tato služba se obvykle nemění přímo, protože výchozí implementace používá normální registraci poskytovatele ADO.NET. Další podrobnosti o službách souvisejících s poskytovatelem v EF6 najdete v části Model zprostředkovatele EF6.
System.Data.Entity.Infrastructure.IProviderInvariantName
Verze představená: EF6.0.0
Vrácený objekt: služba, která se používá k určení invariantního názvu zprostředkovatele pro daný typ DbProviderFactory. Výchozí implementace této služby používá registraci poskytovatele ADO.NET. To znamená, že pokud poskytovatel ADO.NET není zaregistrovaný normálním způsobem, protože dbProviderFactory se překládá pomocí EF, bude také nutné tuto službu vyřešit.
Klíč: Instance DbProviderFactory, pro kterou je požadován invariantní název.
Poznámka:
Další podrobnosti o službách souvisejících s poskytovatelem v EF6 najdete v části Model zprostředkovatele EF6.
System.Data.Entity.Core.Mapping.ViewGeneration.IViewAssemblyCache
Verze představená: EF6.0.0
Vrácený objekt: mezipaměť sestavení, která obsahují předem vygenerovaná zobrazení. Nahrazení se obvykle používá k tomu, aby systém EF věděl, která sestavení obsahují předem vygenerovaná zobrazení bez jakéhokoli zjišťování.
Klíč: Nepoužívá se; bude mít hodnotu null.
System.Data.Entity.Infrastructure.Pluralization.IPluralizationService
Verze představená: EF6.0.0
Vrácený objekt: služba, kterou EF používá k pluralizaci a jednotnému názvu. Ve výchozím nastavení se používá anglická služba pluralizace.
Klíč: Nepoužívá se; bude mít hodnotu null.
System.Data.Entity.Infrastructure.Interception.IDbInterceptor
Verze představená: EF6.0.0
Vrácené objekty: Všechny průsečíky, které by měly být registrovány při spuštění aplikace. Všimněte si, že tyto objekty jsou požadovány pomocí volání GetServices a všechny průsečíky vrácené jakýmkoli překladačem závislostí se zaregistrují.
Klíč: Nepoužívá se; bude mít hodnotu null.
Func<System.Data.Entity.DbContext, Akční<řetězec>, System.Data.Entity.Infrastructure.Interception.DatabaseLogFormatter>
Verze představená: EF6.0.0
Vrácený objekt: Objekt, který se použije k vytvoření formátovače protokolu databáze, který se použije v kontextu. Vlastnost Database.Log je nastavena v daném kontextu.
Klíč: Nepoužívá se; bude mít hodnotu null.
Func<System.Data.Entity.DbContext>
Verze zavedená: EF6.1.0
Vrácený objekt: Objekt pro vytváření kontextových instancí pro migrace, pokud kontext nemá přístupný konstruktor bez parametrů.
Klíč: Typ objektu pro typ odvozeného DbContext, pro který je potřeba továrna.
Func<System.Data.Entity.Core.Metadata.Edm.IMetadataAnnotationSerializer>
Verze zavedená: EF6.1.0
Vrácený objekt: Továrna, která se použije k vytvoření serializátorů pro serializaci silně typovaných vlastních poznámek tak, že lze serializovat a deserializovat do XML pro použití v Migrace Code First.
Klíč: Název poznámky, která se serializuje nebo deserializuje.
Func<System.Data.Entity.Infrastructure.TransactionHandler>
Verze zavedená: EF6.1.0
Vrácený objekt: Objekt, který se použije k vytváření obslužných rutin pro transakce, aby bylo možné použít zvláštní zpracování v situacích, jako je zpracování selhání potvrzení.
Klíč: ExecutionStrategyKey objekt, který obsahuje invariantní název zprostředkovatele a volitelně název serveru, pro který bude použita obslužná rutina transakce.