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:
- Zprostředkovatel pro Microsoft SQL Server
- Sestaven ze opensourcového základního kódu Entity Framework
- Dodává se jako součást balíčku NuGet EntityFramework
- Zprostředkovatel pro Microsoft SQL Server Compact Edition
- Sestaven ze opensourcového základního kódu Entity Framework
- Dodává se jako součást balíčku NuGet EntityFramework.SqlServerCompact
- Zprostředkovatelé dat Devart dotConnect
- K dispozici jsou další zprostředkovatelé od společnosti Devart pro řadu databází, jako je Oracle, MySQL, PostgreSQL, SQLite, Salesforce, DB2 a SQL Server
- Zprostředkovatelé CData Software
- K dispozici jsou další zprostředkovatelé od společnosti CData Software pro řadu úložišť dat, jako je Salesforce, Azure Table Storage, MySql a mnoho dalších
- Zprostředkovatel Firebird
- K dispozici jako balíček NuGet
- Zprostředkovatel Visual Fox Pro
- K dispozici jako balíček NuGet
- MySQL
- PostgreSQL
- Npgsql je k dispozici jako balíček NuGet
- Oracle
- ODP.NET je k dispozici jako balíček NuGet
- SQLite
- System.Data.SQLite je k dispozici jako balíček NuGet
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.