Rozwiązywanie zależności

Uwaga

Tylko rozwiązanie EF6 i nowsze wersje — Funkcje, interfejsy API itp. omówione na tej stronie zostały wprowadzone w rozwiązaniu Entity Framework 6. Jeśli korzystasz ze starszej wersji, niektóre lub wszystkie podane informacje nie mają zastosowania.

Począwszy od platformy EF6, platforma Entity Framework zawiera mechanizm ogólnego przeznaczenia do uzyskiwania implementacji usług, których wymaga. Oznacza to, że gdy program EF używa wystąpienia niektórych interfejsów lub klas bazowych, poprosi o konkretną implementację interfejsu lub klasy bazowej do użycia. Można to osiągnąć za pomocą interfejsu IDbDependencyResolver:

public interface IDbDependencyResolver
{
    object GetService(Type type, object key);
}

Metoda GetService jest zwykle wywoływana przez ef i jest obsługiwana przez implementację IDbDependencyResolver dostarczone przez ef lub przez aplikację. Po wywołaniu argument typu jest interfejsem lub typem klasy bazowej żądanej usługi, a obiekt klucza ma wartość null lub obiekt dostarczający kontekstowe informacje o żądanej usłudze.

O ile nie określono inaczej, zwracany obiekt musi być bezpieczny wątkowo, ponieważ może być używany jako pojedynczy obiekt. W wielu przypadkach zwrócony obiekt jest fabryką, w której fabryka musi być bezpieczna wątkowo, ale obiekt zwrócony z fabryki nie musi być bezpieczny wątkowo, ponieważ nowe wystąpienie jest wymagane z fabryki do każdego użycia.

Ten artykuł nie zawiera pełnych informacji na temat implementowania interfejsu IDbDependencyResolver, ale zamiast tego działa jako odwołanie do typów usług (czyli interfejsu i typów klas bazowych), dla których program EF wywołuje metodę GetService i semantyka obiektu klucza dla każdego z tych wywołań.

System.Data.Entity.IDatabaseInitializer<TContext>

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: inicjator bazy danych dla danego typu kontekstu

Klucz: Nie jest używany; będzie mieć wartość null

Func<System.Data.Entity.Migrations.Sql.MigrationSqlGenerator>

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: fabryka do utworzenia generatora SQL, który może służyć do migracji i innych akcji, które powodują utworzenie bazy danych, takich jak tworzenie bazy danych z inicjatorami bazy danych.

Klucz: ciąg zawierający niezmienną nazwę dostawcy ADO.NET określającą typ bazy danych, dla której zostanie wygenerowany program SQL. Na przykład generator SQL programu SQL Server jest zwracany dla klucza "System.Data.SqlClient".

Uwaga

Aby uzyskać więcej informacji na temat usług związanych z dostawcą w programie EF6, zobacz sekcję Model dostawcy EF6.

System.Data.Entity.Core.Common.DbProviderServices

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: dostawca EF do użycia dla danej niezmiennej nazwy dostawcy

Klucz: ciąg zawierający niezmienną nazwę dostawcy ADO.NET określającą typ bazy danych, dla której jest wymagany dostawca. Na przykład dostawca programu SQL Server jest zwracany dla klucza "System.Data.SqlClient".

Uwaga

Aby uzyskać więcej informacji na temat usług związanych z dostawcą w programie EF6, zobacz sekcję Model dostawcy EF6.

System.Data.Entity.Infrastructure.IDb Połączenie ionFactory

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: fabryka połączeń, która będzie używana podczas tworzenia połączenia z bazą danych przez platformę EF zgodnie z konwencją. Oznacza to, że w przypadku braku połączenia lub parametry połączenia do platformy EF nie można znaleźć parametry połączenia w pliku app.config lub web.config, ta usługa jest używana do tworzenia połączenia zgodnie z konwencją. Zmiana fabryki połączeń umożliwia programowi EF używanie domyślnie innego typu bazy danych (na przykład PROGRAMU SQL Server Compact Edition).

Klucz: Nie jest używany; będzie mieć wartość null

Uwaga

Aby uzyskać więcej informacji na temat usług związanych z dostawcą w programie EF6, zobacz sekcję Model dostawcy EF6.

System.Data.Entity.Infrastructure.IManifestTokenService

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: usługa, która może wygenerować token manifestu dostawcy na podstawie połączenia. Ta usługa jest zwykle używana na dwa sposoby. Najpierw można go użyć, aby uniknąć połączenia Code First z bazą danych podczas tworzenia modelu. Po drugie, można go użyć, aby wymusić utworzenie modelu dla określonej wersji bazy danych — na przykład wymusić model dla programu SQL Server 2005, nawet jeśli jest używany program SQL Server 2008.

Okres istnienia obiektu: Singleton — ten sam obiekt może być używany wiele razy i współbieżnie przez różne wątki

Klucz: Nie jest używany; będzie mieć wartość null

System.Data.Entity.Infrastructure.IDbProviderFactoryService

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: usługa, która może uzyskać fabrykę dostawcy z danego połączenia. Na platformie .NET 4.5 dostawca jest publicznie dostępny z połączenia. Na platformie .NET 4 domyślna implementacja tej usługi używa niektórych heurystyki do znalezienia zgodnego dostawcy. Jeśli te błędy nie powiedzą się, można zarejestrować nową implementację tej usługi w celu zapewnienia odpowiedniego rozwiązania.

Klucz: Nie jest używany; będzie mieć wartość null

Func<DbContext, System.Data.Entity.Infrastructure.IDbModelCacheKey>

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: fabryka, która wygeneruje klucz pamięci podręcznej modelu dla danego kontekstu. Domyślnie program EF buforuje jeden model na typ DbContext dla dostawcy. Inną implementacją tej usługi można użyć do dodawania innych informacji, takich jak nazwa schematu, do klucza pamięci podręcznej.

Klucz: Nie jest używany; będzie mieć wartość null

System.Data.Entity.Spatial.DbSpatialServices

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: dostawca przestrzenny EF, który dodaje obsługę podstawowego dostawcy EF dla typów geograficznych i geometrycznych.

Klucz: DbSptialServices jest proszony o dwa sposoby. Najpierw wymagane są usługi przestrzenne specyficzne dla dostawcy przy użyciu obiektu DbProviderInfo (który zawiera niezmienną nazwę i token manifestu) jako klucz. Po drugie, dbSpatialServices można poprosić o bez klucza. Służy do rozpoznawania "globalnego dostawcy przestrzennego", który jest używany podczas tworzenia autonomicznych typów DbGeography lub DbGeometry.

Uwaga

Aby uzyskać więcej informacji na temat usług związanych z dostawcą w programie EF6, zobacz sekcję Model dostawcy EF6.

Func<System.Data.Entity.Infrastructure.IDbExecutionStrategy>

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: fabryka umożliwiająca dostawcy implementowanie ponownych prób lub innych zachowań podczas wykonywania zapytań i poleceń względem bazy danych. Jeśli implementacja nie zostanie podana, program EF po prostu wykona polecenia i rozpropaguje zgłoszone wyjątki. W przypadku programu SQL Server ta usługa służy do udostępniania zasad ponawiania, które są szczególnie przydatne podczas uruchamiania na serwerach baz danych opartych na chmurze, takich jak Usługi SQL Azure.

Klucz: obiekt ExecutionStrategyKey zawierający niezmienną nazwę dostawcy i opcjonalnie nazwę serwera, dla którego będzie używana strategia wykonywania.

Uwaga

Aby uzyskać więcej informacji na temat usług związanych z dostawcą w programie EF6, zobacz sekcję Model dostawcy EF6.

Func<Db Połączenie ion, string, System.Data.Entity.Migrations.History.HistoryContext>

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: fabryka, która umożliwia dostawcy skonfigurowanie mapowania obiektu HistoryContext na tabelę używaną __MigrationHistory przez migracje ef. HistoryContext to kod First DbContext i można go skonfigurować przy użyciu normalnego płynnego interfejsu API, aby zmienić elementy, takie jak nazwa tabeli i specyfikacje mapowania kolumn.

Klucz: Nie jest używany; będzie mieć wartość null

Uwaga

Aby uzyskać więcej informacji na temat usług związanych z dostawcą w programie EF6, zobacz sekcję Model dostawcy EF6.

System.Data.Common.DbProviderFactory

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: dostawca ADO.NET do użycia dla danej niezmiennej nazwy dostawcy.

Klucz: ciąg zawierający niezmienną nazwę dostawcy ADO.NET

Uwaga

Ta usługa nie jest zwykle zmieniana bezpośrednio, ponieważ domyślna implementacja używa normalnej rejestracji dostawcy ADO.NET. Aby uzyskać więcej informacji na temat usług związanych z dostawcą w programie EF6, zobacz sekcję Model dostawcy EF6.

System.Data.Entity.Infrastructure.IProviderInvariantName

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: usługa używana do określania niezmiennej nazwy dostawcy dla danego typu DbProviderFactory. Domyślna implementacja tej usługi używa rejestracji dostawcy ADO.NET. Oznacza to, że jeśli dostawca ADO.NET nie jest zarejestrowany w normalny sposób, ponieważ dostawca DbProviderFactory jest rozpoznawany przez platformę EF, konieczne będzie również rozwiązanie tej usługi.

Klucz: wystąpienie DbProviderFactory, dla którego wymagana jest niezmienna nazwa.

Uwaga

Aby uzyskać więcej informacji na temat usług związanych z dostawcą w programie EF6, zobacz sekcję Model dostawcy EF6.

System.Data.Entity.Core.Mapping.ViewGeneration.IViewAssemblyCache

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: pamięć podręczna zestawów zawierających wstępnie wygenerowane widoki. Zamiana jest zwykle używana do informowania EF, które zestawy zawierają wstępnie wygenerowane widoki bez konieczności odnajdywania.

Klucz: Nie jest używany; będzie mieć wartość null

System.Data.Entity.Infrastructure.Pluralization.IPluralizationService

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: usługa używana przez platformę EF do mnożenia i ujednolizowania nazw. Domyślnie jest używana angielska usługa pluralizacji.

Klucz: Nie jest używany; będzie mieć wartość null

System.Data.Entity.Infrastructure.Interception.IDbInterceptor

Wprowadzona wersja: EF6.0.0

Zwrócone obiekty: wszelkie przechwytuje, które powinny być zarejestrowane podczas uruchamiania aplikacji. Należy pamiętać, że te obiekty są żądane przy użyciu wywołania GetServices, a wszystkie przechwytuje zwracane przez dowolny program rozpoznawania zależności zostanie zarejestrowany.

Klucz: nie jest używany; będzie mieć wartość null.

Func<System.Data.Entity.DbContext, ciąg> akcji<, System.Data.Entity.Infrastructure.Interception.DatabaseLogFormatter>

Wprowadzona wersja: EF6.0.0

Zwrócony obiekt: fabryka, która zostanie użyta do utworzenia programu formatującego dziennik bazy danych, który będzie używany podczas kontekstu. Właściwość Database.Log jest ustawiona w danym kontekście.

Klucz: nie jest używany; będzie mieć wartość null.

Func<System.Data.Entity.DbContext>

Wprowadzona wersja: EF6.1.0

Zwrócony obiekt: fabryka, która będzie używana do tworzenia wystąpień kontekstu dla migracji, gdy kontekst nie ma dostępnego konstruktora bez parametrów.

Klucz: obiekt Type dla typu pochodnego obiektu DbContext, dla którego potrzebna jest fabryka.

Func<System.Data.Entity.Core.Metadata.Edm.IMetadataAnnotationSerializer>

Wprowadzona wersja: EF6.1.0

Zwrócony obiekt: fabryka, która będzie używana do tworzenia serializatorów do serializacji silnie typizowanych adnotacji niestandardowych, tak aby można je było serializować i desterylizować w formacie XML do użytku w Migracje Code First.

Klucz: nazwa adnotacji, która jest serializowana lub deserializowana.

Func<System.Data.Entity.Infrastructure.TransactionHandler>

Wprowadzona wersja: EF6.1.0

Zwrócony obiekt: fabryka, która będzie używana do tworzenia procedur obsługi dla transakcji, dzięki czemu można zastosować specjalną obsługę w sytuacjach, takich jak obsługa błędów zatwierdzania.

Klucz: obiekt ExecutionStrategyKey zawierający niezmienną nazwę dostawcy i opcjonalnie nazwę serwera, dla którego będzie używana procedura obsługi transakcji.