2013-08-03 15 views
5

EF 6は自分のエンティティに依存性注入を許可しますか?以下は、必要なものの例です。EF:エンティティ依存性注入

class User 
{ 
    private IPasswordEncryptor _passwordEncryptor; 

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

    ... 
} 

だから、私は、Entity FrameworkのユーザーにIPasswordEncryptorを注入する方法を見つける必要があります。それは一般的な質問です、私は上記の例を提供しました。

+1

これを再検討してください。 http://thinkbeforecoding.com/post/2009/03/04/How-not-to-inject-services-in-entities –

+3

他のオブジェクトと同じように、エンティティは外部依存関係を持つ可能性があります。それはただのOOPです。私の見地からは、EFのような所与の枠組みは、エンティティの依存関係を排除する障害であってはならない。例えば、NHibernateは依存関係を注入することができます。上記の例は、この依存関係が必要な理由の良い例です。ユーザーはパスワードの管理を担当します。しかし、ユーザーは暗号化がどのように実装され、どのアルゴリズムが選択されるかには関係しません。したがって、IPasswordEncryptorに依存します。 – Markus

+0

これを行う方法を見つけたことはありますか?私はかなり良いユースケースを持っています。 –

答えて

2

DIコンテナを使用している場合は、 の依存関係を集約ルートに挿入してみます。それは非常に多くの私は完全に良い投稿 に入ることによって脱線しない問題は、 問題のホスト全体につながります。代わりに、別のものがあります。 意向を明らかにするオプション:ダブルディスパッチパターン。

Jimmy Bogardの投稿から引用されています。その投稿(例を含む)をここに見つけてください:http://lostechies.com/jimmybogard/2010/03/30/strengthening-your-domain-the-double-dispatch-pattern/