2013-08-03 18 views
5

L'EF 6 consente l'iniezione di dipendenza nelle mie entità? Di seguito è riportato un esempio di ciò che è necessario.EF: iniezione di dipendenza dall'entità

class User 
{ 
    private IPasswordEncryptor _passwordEncryptor; 

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

    ... 
} 

Così, ho bisogno di trovare un modo per iniettare l'IPasswordEncryptor in uso in Entity Framework. È una domanda generale, ho appena fornito un esempio sopra.

+1

Si consiglia di riconsiderare questo. Vedere http://thinkbeforecoding.com/post/2009/03/04/How-not-to-inject-services-in-entities –

+3

Entità come qualsiasi altro oggetto potrebbe avere dipendenze esterne. È solo OOP. Dal mio punto di vista, un dato framework come EF non dovrebbe essere un ostacolo per escludere le dipendenze dell'entità. NHibernate, ad esempio, consente di iniettare le dipendenze. L'esempio sopra è un buon esempio del perché questa dipendenza sia necessaria. L'utente è responsabile della gestione della password. Tuttavia, l'utente non è interessato a come viene implementata la crittografia e quale algoritmo viene scelto. Pertanto dipende da IPasswordEncryptor. – Markus

+0

Hai mai trovato un modo per farlo Markus? Ho un buon caso d'uso. –

risposta

2

Per quelli che utilizzano un contenitore DI, è possibile provare a iniettare le dipendenze nella radice aggregata. Ciò porta a un'intera serie di problemi , che sono così numerosi che non farò deragliare perfettamente un post entrando in esso. Invece, c'è un'altra, più opzione di rivelazione dell'intenzione: il modello di doppia spedizione.

Citato da un post di Jimmy Bogard. Trova quel post (che include un esempio) qui: http://lostechies.com/jimmybogard/2010/03/30/strengthening-your-domain-the-double-dispatch-pattern/.