2010-12-08 10 views
0

私は最新のアプリケーションでNHibernateとリポジトリパターンを使用しています。私は3つのテーブル/エンティティを持っています:以下のスキーマを持つリージョン、タグ、翻訳。NHibernateとリポジトリパターンを使用して存在しない項目の子コレクションを返す

Regions 

Id 
RegionName 


Tags 

Id 
FilePath 
FileName 
TagContent 


Translations 

Id 
RegionId 
TagId 
Translation 

タグテーブルにはフレーズ(タグ)のリストが含まれており、ユーザーは各タグの翻訳を指定できます。それで、tagsテーブルに50個のフレーズ(タグ)が含まれているとします。ユーザーがこれらのタグのうち10個をスペイン語に翻訳した後、スペイン語の地域エンティティには10個の翻訳タグの子コレクションがあります。私は40の非翻訳タグの子コレクションを返すリージョンクラスのプロパティ/メソッドを持つことができるようにしたいと思います。

私は、すべてのタグを取得し、タグが存在するかどうかを領域エンティティのtranlatedタグの子コレクションに確認することで、これを実現できます。しかし、それはすべてクライアント上で起こります。私はそれがサーバー上で起こるようにしたい(SQLに仕事をさせる)。

NHibernateでこれを達成できますか?私のマッピングは何ですか(私はFluentNHibernateを使用しています)

+0

まだ存在しない翻訳の翻訳レコードはありますか?つまり、そこにはレコードがありますが、NULL変換フィールドがありますか?そうであれば、RegionのTranslationsのコレクション全体を取得し、TranslationフィールドがNULLであることをフィルタリングすることができます。 – David

+0

...これが当てはまらない場合は、これに相当するものをNHibernateは返します存在しない翻訳オブジェクトのリスト?いいえ、できません。彼らはどのように見えるでしょうか? – David

+0

linqまたはhqlクエリを使用して、関連する翻訳レコードが存在しないタグのリストを返すことができます。しかし、私が考えることができるオブジェクト・アソシエーションの観点からこれを表現する方法はありません。 – David

答えて

0

私の意見では、このコレクションを取得することは、ドメインモデルの一部ではなく、リポジトリクラスのクエリでなければなりません。 HQL、Criteria、またはLINQを使用してクエリを記述できます。あなたの好みを述べるなら、誰かが例を挙げて答えると確信しています。

+0

はい私はあなたが正しいと思う(Davidへの私の最後のコメントを見てください)。私はあなたのアドバイスを取って、私が必要とするコレクションを返すためにリポジトリにlinqクエリを追加することに行きます。 –

関連する問題