Bağımlılık çözümlemesi

Dekont

Yalnızca EF6'ya Doğru - Bu sayfada ele alınan özellikler, API'ler vb. Entity Framework 6'da sunulmuştur. Önceki bir sürümü kullanıyorsanız, bilgilerin bir kısmı veya tümü geçerli değildir.

EF6'dan başlayarak Entity Framework, gerektirdiği hizmetlerin uygulamalarını almak için genel amaçlı bir mekanizma içerir. Yani EF bazı arabirimlerin veya temel sınıfların bir örneğini kullandığında, kullanılacak arabirimin veya temel sınıfın somut bir uygulamasını ister. Bu, IDbDependencyResolver arabiriminin kullanımıyla elde edilir:

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

GetService yöntemi genellikle EF tarafından çağrılır ve EF veya uygulama tarafından sağlanan bir IDbDependencyResolver uygulaması tarafından işlenir. Çağrıldığında, tür bağımsız değişkeni istenen hizmetin arabirimi veya temel sınıf türüdür ve anahtar nesnesi null veya istenen hizmet hakkında bağlam bilgisi sağlayan bir nesnedir.

Aksi belirtilmediği sürece, döndürülen herhangi bir nesne tekil olarak kullanılabileceğinden iş parçacığı güvenli olmalıdır. Çoğu durumda döndürülen nesne bir fabrikadır ve bu durumda fabrikanın kendisinin iş parçacığı güvenli olması gerekir, ancak her kullanım için fabrikadan yeni bir örnek istendiğinden, fabrikadan döndürülen nesnenin iş parçacığı güvenli olması gerekmez.

Bu makale, IDbDependencyResolver'ın nasıl uygulandığını gösteren tam ayrıntıları içermez, ancak bunun yerine EF'nin GetService'i çağırdığı hizmet türlerine (arabirim ve temel sınıf türleri) ve bu çağrıların her biri için anahtar nesnesinin semantiğine yönelik bir başvuru işlevi görür.

System.Data.Entity.IDatabaseInitializer<TContext>

Sunulan sürüm: EF6.0.0

Nesne döndürüldü: Verilen bağlam türü için bir veritabanı başlatıcı

Anahtar: Kullanılmaz; null olur

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

Sunulan sürüm: EF6.0.0

Döndürülen nesne: Veritabanı başlatıcılarıyla veritabanı oluşturma gibi bir veritabanının oluşturulmasına neden olan Geçişler ve diğer eylemler için kullanılabilecek bir SQL oluşturucu oluşturmak için bir fabrika.

Anahtar: SQL'in oluşturulacağı veritabanı türünü belirten ADO.NET sağlayıcı sabit adını içeren bir dize. Örneğin, "System.Data.SqlClient" anahtarı için SQL Server SQL oluşturucu döndürülür.

Dekont

EF6'daki sağlayıcıyla ilgili hizmetler hakkında daha fazla bilgi için EF6 sağlayıcı modeli bölümüne bakın.

System.Data.Entity.Core.Common.DbProviderServices

Sunulan sürüm: EF6.0.0

Döndürülen nesne: Belirli bir sağlayıcı sabit adı için kullanılacak EF sağlayıcısı

Anahtar: Sağlayıcının gerekli olduğu veritabanı türünü belirten ADO.NET sağlayıcı sabit adını içeren bir dize. Örneğin, "System.Data.SqlClient" anahtarı için SQL Server sağlayıcısı döndürülür.

Dekont

EF6'daki sağlayıcıyla ilgili hizmetler hakkında daha fazla bilgi için EF6 sağlayıcı modeli bölümüne bakın.

System.Data.Entity.Infrastructure.IDb Bağlan ionFactory

Sunulan sürüm: EF6.0.0

Döndürülen nesne: EF kurala göre bir veritabanı bağlantısı oluşturduğunda kullanılacak bağlantı fabrikası. Başka bir ifadeyle, EF'e bağlantı veya bağlantı dizesi verilmediğinde ve app.config veya web.config içinde bağlantı dizesi bulunamazsa, bu hizmet kurala göre bağlantı oluşturmak için kullanılır. Bağlantı fabrikasını değiştirmek EF'in varsayılan olarak farklı bir veritabanı türü (örneğin, SQL Server Compact Edition) kullanmasına izin verebilir.

Anahtar: Kullanılmaz; null olur

Dekont

EF6'daki sağlayıcıyla ilgili hizmetler hakkında daha fazla bilgi için EF6 sağlayıcı modeli bölümüne bakın.

System.Data.Entity.Infrastructure.IManifestTokenService

Sunulan sürüm: EF6.0.0

Döndürülen nesne: Bir bağlantıdan sağlayıcı bildirim belirteci oluşturabilen bir hizmet. Bu hizmet genellikle iki şekilde kullanılır. İlk olarak, model oluştururken Code First'un veritabanına bağlanmasını önlemek için kullanılabilir. İkincisi, Code First'ı belirli bir veritabanı sürümü için model oluşturmaya zorlamak (örneğin, sql Server 2008 bazen kullanılıyor olsa bile SQL Server 2005 için bir modeli zorlamak) için kullanılabilir.

Nesne ömrü: Singleton -- aynı nesne farklı iş parçacıkları tarafından birden çok kez ve eşzamanlı olarak kullanılabilir

Anahtar: Kullanılmaz; null olur

System.Data.Entity.Infrastructure.IDbProviderFactoryService

Sunulan sürüm: EF6.0.0

Döndürülen nesne: Belirli bir bağlantıdan sağlayıcı fabrikası alabilen bir hizmet. .NET 4.5'te sağlayıcıya bağlantıdan genel erişim sağlanır. .NET 4'te bu hizmetin varsayılan uygulaması, eşleşen sağlayıcıyı bulmak için bazı buluşsal yöntemler kullanır. Bunlar başarısız olursa, uygun bir çözüm sağlamak için bu hizmetin yeni bir uygulaması kaydedilebilir.

Anahtar: Kullanılmaz; null olur

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

Sunulan sürüm: EF6.0.0

Döndürülen nesne: Belirli bir bağlam için model önbellek anahtarı oluşturacak bir fabrika. Varsayılan olarak EF, sağlayıcı başına DbContext türü başına bir modeli önbelleğe alır. Bu hizmetin farklı bir uygulaması, önbellek anahtarına şema adı gibi başka bilgiler eklemek için kullanılabilir.

Anahtar: Kullanılmaz; null olur

System.Data.Entity.Spatial.DbSpatialServices

Sunulan sürüm: EF6.0.0

Döndürülen nesne: Coğrafya ve geometri uzamsal türleri için temel EF sağlayıcısına destek ekleyen bir EF uzamsal sağlayıcısı.

Anahtar: DbSptialServices iki şekilde istenir. İlk olarak, anahtar olarak dbProviderInfo nesnesi (sabit ad ve bildirim belirteci içeren) kullanılarak sağlayıcıya özgü uzamsal hizmetler istenir. İkincisi, DbSpatialServices anahtar olmadan istenebilir. Bu, tek başına DbGeography veya DbGeometry türleri oluştururken kullanılan "küresel uzamsal sağlayıcıyı" çözümlemek için kullanılır.

Dekont

EF6'daki sağlayıcıyla ilgili hizmetler hakkında daha fazla bilgi için EF6 sağlayıcı modeli bölümüne bakın.

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

Sunulan sürüm: EF6.0.0

Döndürülen nesne: Bir sağlayıcının veritabanında sorgular ve komutlar yürütülürken yeniden denemeler veya başka davranışlar uygulamasına olanak tanıyan bir hizmet oluşturmak için bir fabrika. Hiçbir uygulama sağlanmazsa EF yalnızca komutları yürütür ve oluşan özel durumları yayacaktır. SQL Server için bu hizmet, SQL Azure gibi bulut tabanlı veritabanı sunucularında çalışırken özellikle yararlı olan bir yeniden deneme ilkesi sağlamak için kullanılır.

Anahtar: Sağlayıcı sabit adını ve isteğe bağlı olarak yürütme stratejisinin kullanılacağı sunucu adını içeren bir ExecutionStrategyKey nesnesi.

Dekont

EF6'daki sağlayıcıyla ilgili hizmetler hakkında daha fazla bilgi için EF6 sağlayıcı modeli bölümüne bakın.

Func<Db Bağlan ion, dize, System.Data.Entity.Migrations.History.HistoryContext>

Sunulan sürüm: EF6.0.0

Döndürülen nesne: Bir sağlayıcının Ef Migrations tarafından kullanılan tabloya HistoryContext eşlemesini yapılandırmasına __MigrationHistory izin veren bir fabrika. HistoryContext bir Code First DbContext'tir ve tablonun adı ve sütun eşleme belirtimleri gibi öğeleri değiştirmek için normal akıcı API kullanılarak yapılandırılabilir.

Anahtar: Kullanılmaz; null olur

Dekont

EF6'daki sağlayıcıyla ilgili hizmetler hakkında daha fazla bilgi için EF6 sağlayıcı modeli bölümüne bakın.

System.Data.Common.DbProviderFactory

Sunulan sürüm: EF6.0.0

Nesne döndürüldü: Belirli bir sağlayıcı sabit adı için kullanılacak ADO.NET sağlayıcı.

Anahtar: ADO.NET sağlayıcı sabit adını içeren bir dize

Dekont

Varsayılan uygulama normal ADO.NET sağlayıcı kaydını kullandığından bu hizmet genellikle doğrudan değiştirilmez. EF6'daki sağlayıcıyla ilgili hizmetler hakkında daha fazla bilgi için EF6 sağlayıcı modeli bölümüne bakın.

System.Data.Entity.Infrastructure.IProviderInvariantName

Sunulan sürüm: EF6.0.0

Nesne döndürüldü: Belirli bir DbProviderFactory türü için sabit bir sağlayıcı adı belirlemek için kullanılan bir hizmet. Bu hizmetin varsayılan uygulaması, ADO.NET sağlayıcı kaydını kullanır. Bu, DbProviderFactory EF tarafından çözümlendiğinden ADO.NET sağlayıcısı normal şekilde kaydedilmediyse, bu hizmeti çözmek için de gerekli olacağı anlamına gelir.

Anahtar: Sabit bir ad gerektiren DbProviderFactory örneği.

Dekont

EF6'daki sağlayıcıyla ilgili hizmetler hakkında daha fazla bilgi için EF6 sağlayıcı modeli bölümüne bakın.

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

Sunulan sürüm: EF6.0.0

Nesne döndürüldü: önceden oluşturulmuş görünümler içeren derlemelerin önbelleği. Değiştirme genellikle EF'e herhangi bir bulma yapmadan önceden oluşturulmuş görünümler içeren derlemeleri bildirmek için kullanılır.

Anahtar: Kullanılmaz; null olur

System.Data.Entity.Infrastructure.Pluralization.IPluralizationService

Sunulan sürüm: EF6.0.0

Döndürülen nesne: EF tarafından adları çoğullaştırmak ve tekilleştirmek için kullanılan bir hizmet. Varsayılan olarak İngilizce çoğullaştırma hizmeti kullanılır.

Anahtar: Kullanılmaz; null olur

System.Data.Entity.Infrastructure.Interception.IDbInterceptor

Sunulan sürüm: EF6.0.0

Döndürülen nesneler: Uygulama başlatıldığında kaydedilmesi gereken herhangi bir kesme noktası. Bu nesnelerin GetServices çağrısı kullanılarak istendiğini ve herhangi bir bağımlılık çözümleyicisi tarafından döndürülen tüm kesme bileşenlerinin kaydedileceğini unutmayın.

Anahtar: Kullanılmaz; null olur.

Func<System.Data.Entity.DbContext, Eylem<dizesi>, System.Data.Entity.Infrastructure.Interception.DatabaseLogFormatter>

Sunulan sürüm: EF6.0.0

Döndürülen nesne: Bağlam sırasında kullanılacak veritabanı günlük biçimlendiricisini oluşturmak için kullanılacak bir fabrika. Database.Log özelliği verilen bağlamda ayarlanır.

Anahtar: Kullanılmaz; null olur.

Func<System.Data.Entity.DbContext>

Sunulan sürüm: EF6.1.0

Döndürülen nesne: Bağlamın erişilebilir bir parametresiz oluşturucu olmadığında Geçişler için bağlam örnekleri oluşturmak için kullanılacak bir fabrika.

Anahtar: Bir fabrikanın gerekli olduğu türetilmiş DbContext türü için Type nesnesi.

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

Sunulan sürüm: EF6.1.0

Döndürülen nesne: Kod İlk Geçişleri'nde kullanılmak üzere seri hale getirilip XML'de desterilize edilebilecek şekilde kesin olarak belirlenmiş özel ek açıklamaları seri hale getirmek için serileştiriciler oluşturmak için kullanılacak bir fabrika.

Anahtar: Seri hale getirilen veya seri durumdan çıkarılan ek açıklamanın adı.

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

Sunulan sürüm: EF6.1.0

Döndürülen nesne: İşleme hatalarını işleme gibi durumlarda özel işlemenin uygulanabilmesi için işlemler için işleyiciler oluşturmak için kullanılacak bir fabrika.

Anahtar: Sağlayıcı sabit adını ve isteğe bağlı olarak işlem işleyicisinin kullanılacağı sunucu adını içeren bir ExecutionStrategyKey nesnesi.