2013-08-03 35 views
5

EF 6, benim varlığımdaki bağımlılık enjeksiyonuna izin veriyor mu? Aşağıda ihtiyaç duyulan şeyin bir örneği var.EF: Varlık Bağımlılık Enjeksiyon

class User 
{ 
    private IPasswordEncryptor _passwordEncryptor; 

    public User(IPasswordEncryptor passwordEncryptor) 
    { 
     _passwordEncryptor = passwordEncryptor; 
    } 

    ... 
} 

Yani, Entity Framework Kullanıcı içine IPasswordEncryptor enjekte etmenin bir yolunu bulmalıyız. Genel bir soru, yukarıda bir örnek verdim.

+1

Bunu bir daha gözden geçirmek isteyebilirsiniz. Bkz. Http://thinkbeforecoding.com/post/2009/03/04/How-not-to-inject-services-in-entities –

+3

Diğer tüm nesnelerdeki varlıklar dış bağımlılıkları olabilir. Bu sadece OOP. Benim bakış açıma göre, EF gibi belirli bir çerçeve, kurum bağımlılıklarını dışlamak için bir engel olmamalıdır. Örneğin NHibernate, bağımlılıkları enjekte etmeyi sağlar. Yukarıdaki örnek, bu bağımlılığın neden gerekli olduğuna iyi bir örnektir. Kullanıcı şifreyi yönetmekle sorumludur. Ancak, Kullanıcı şifrelemenin nasıl uygulandığı ve hangi algoritmanın seçildiği ile ilgili değildir. Bu nedenle IPasswordEncryptor'a bağlıdır. – Markus

+0

Bunu yapmak için bir yol bulmak Markus? Oldukça iyi bir kullanım durumum var. –

cevap

2

DI kabı kullananlar için, bağımlılıklarını toplu köke enjekte etmeyi deneyebilirsiniz. Bu çok sayıda olan sorunların tüm ana yol açar, ben içine girerek mükemmel bir iyi durumda raydanlık etmeyeceğim. Bunun yerine, başka bir, daha fazla niyet açma seçeneği: çift gönderim modeli.

Bir yorumdan Jimmy Bogard tarafından alıntılanmıştır. Bu gönderiyi (bir örnek içerir) burada bulabilirsiniz: http://lostechies.com/jimmybogard/2010/03/30/strengthening-your-domain-the-double-dispatch-pattern/.

İlgili konular