Zprostředkovatelé Entity Framework 6

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é.

Entity Framework se nyní vyvíjí v rámci opensourcové licence a EF6 a novější verze se už nebudou dodávat jako součást rozhraní .NET Framework. Toto řešení přináší řadu výhod, ale také nutnost opětovného vytvoření zprostředkovatelů EF na sestaveních EF6. To znamená, že zprostředkovatelé EF5 a nižších verzí nebudou s EF6 až do opětovného vytvoření fungovat.

Kteří zprostředkovatelé jsou k dispozici pro EF6?

Zprostředkovatelé, o kterých víme, že byli znovu vytvořeni pro EF6, jsou:

Vezměte prosím na vědomí, že uvedení v tomto seznamu neznačí úroveň funkčnosti nebo podpory daného zprostředkovatele, ale pouze to, že je pro EF6 k dispozici sestavení.

Registrace zprostředkovatelů EF

Od Entity Framework 6 je možné zaregistrovat zprostředkovatele EF pomocí konfigurace založené na kódu nebo v konfiguračním souboru aplikace.

Registrace konfiguračního souboru

Registrace zprostředkovatele EF v souboru app.config nebo web.config má následující formát:

    <entityFramework>
       <providers>
         <provider invariantName="My.Invariant.Name" type="MyProvider.MyProviderServices, MyAssembly" />
       </providers>
    </entityFramework>

Upozorňujeme, že pokud zprostředkovatele EF nainstalujete z balíčku NuGet, balíček tuto registraci automaticky přidá do konfiguračního souboru. Pokud balíček NuGet nainstalujete do projektu, který není spouštěným projektem vaší aplikace, možná bude potřeba zkopírovat registraci do konfiguračního souboru pro spouštěný projekt.

„invariantName“ v této registraci je stejný výchozí název sloužící k identifikaci zprostředkovatele ADO.NET. Můžete ho najít jako atribut „invariant“ v registraci DbProviderFactories a jako atribut „providerName“ v registraci připojovacího řetězce. Výchozí název, který se má použít, by měl být také součástí dokumentace pro zprostředkovatele. Příklady výchozích názvů jsou „System.Data.SqlClient“ pro SQL Server a „System.Data.SqlServerCe.4.0“ pro SQL Server Compact.

"type" v této registraci je název kvalifikovaného názvu sestavení typu zprostředkovatele, který je odvozen od „System.Data.Entity.Core.Common.DbProviderServices“. Například řetězec, který se má použít pro SQL Compact, je „System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact“. Použitý typ by měl být součástí dokumentace pro zprostředkovatele.

Registrace založená na kódu

Počínaje Entity Framework 6 je možné zadat konfiguraci pro celou aplikaci pomocí kódu. Veškeré podrobnosti najdete v tématu věnovaném konfiguraci Entity Framework založené na kódu. Běžným způsobem, jak zaregistrovat zprostředkovatele EF pomocí konfigurace založené na kódu, je vytvořit novou třídu odvozenou ze System.Data.Entity.DbConfiguration a umístit ji do stejného sestavení jako třídu DbContext. Vaše třída DbConfiguration by pak měla zaregistrovat zprostředkovatele v jeho konstruktoru. Například při registraci zprostředkovatele SQL Compact vypadá třída DbConfiguration takto:

    public class MyConfiguration : DbConfiguration
    {
        public MyConfiguration()
        {
            SetProviderServices(
                SqlCeProviderServices.ProviderInvariantName,
                SqlCeProviderServices.Instance);
        }
    }

V tomto kódu je „SqlCeProviderServices.ProviderInvariantName“ zjednodušený název pro řetězec výchozího názvu zprostředkovatele SQL Server Compact („System.Data.SqlServerCe.4.0“) a SqlCeProviderServices.Instance vrátí instanci typu singleton zprostředkovatele EF pro SQL Compact.

Co když zprostředkovatel, kterého potřebuji, není k dispozici?

Pokud je k dispozici zprostředkovatel pro starší verze EF, doporučujeme vám kontaktovat vlastníka zprostředkovatele a požádat ho o vytvoření verze pro EF6. Nezapomeňte uvést odkaz na dokumentaci k modelu zprostředkovatele EF6.

Mohu si zprostředkovatele vytvořit sám?

Vytvořit si zprostředkovatele EF samozřejmě můžete, ale pravděpodobně to nebude snadný úkol. Dobrým výchozím bodem je odkaz na model zprostředkovatele EF6 uvedený výše. Také může být užitečné použít kód zprostředkovatelů pro SQL Server nebo SQL CE, kteří jsou součástí opensourcové kódové báze EF (jako výchozí bod nebo pro referenci).

Upozorňujeme, že počínaje EF6 už zprostředkovatel EF není tak úzce svázán s výchozím zprostředkovatelem ADO.NET. To usnadňuje vytváření zprostředkovatele EF, protože tak není nutné psát nebo zalamovat třídy ADO.NET.