2011-06-20 9 views
0

私はこのように私のベースのデータアクセスクラスのメソッドが必要になります。この方法を一般化する方法はありますか?

public virtual void InitializaEntity(T entity, object relatedEntity) 
    { 
     using (session) 
     { 
      T mergedEntity = (T)session.Merge(entity); 
      NHibernateUtil.Initialize(relatedEntity); 
     } 
    } 

私は怠惰メインオブジェクトに関連オブジェクトを初期化したいです。私はすべての関係について以下のような方法を使うことができますが、私はその方法を一般化するのが好きです。

public Keyword GetKeywordCategoryByKewordId(long id) 
    { 
     Keyword k = session.Get<Keyword>(id); 
     NHibernateUtil.Initialize(k.Categories); 

     session.Close(); 

     return k; 
    } 

解決策はありますか?

答えて

0

私はそれはあなたが一般化したいですが、どのような完全に明確ではないよ:

あなたは、あなたが遅延し、それらをロードしたいと言うが、あなたはは常にはすぐInitializeを呼び出しているならば、あなたにも怠惰なるかもしれませんロードオフ。また、Webアプリケーションを使用している場合は、リクエストごとにセッションを使用できます。自分でセッションを終了する必要はありません。また、心臓のコンテンツを遅延させることもできます。

+0

私はWindowsアプリケーションを持っています。エンティティを遅延ロードしますが、場合によってはこれらのエンティティを熱心に読み込む必要があります。今、ベースのDAOクラスに一般的なメソッドを追加して、その依存エンティティを熱心に読み込むようにしたいと思います。私はすべてのDAOクラスにメソッドを記述したくありません。 –

関連する問題