Ř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.IDb Připojení ionFactory

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 nemá žádné připojení nebo připojovací řetězec a v souboru app.config nebo web.config nelze najít žádné připojovací řetězec, použije se tato služba 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).

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íč: DbSptialServices se požaduje 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<Db Připojení ion, ř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: Objekt, který se použije k vytvoření serializátorů pro serializaci vlastních poznámek silného typu tak, že lze serializovat a desterilovat 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.