projectと多対多の関係を持つユーザー オブジェクトがあります。私のユーザーマッピングでは、これがあります:
HasManyToMany(x => x.Projects).Table("UsersProjects").ParentKeyColumn("UserID").Access.None();
簡単な ID クエリによる取得を実行すると、次のようになります。
session.QueryOver<User>()
.Where(x => x.PrimaryID == id)
.Take(1).SingleOrDefault();
2 つのクエリが実行されます。1 つ目は ID による取得を行うクエリで、2 つ目はプロジェクトのリストを取得するクエリです。
noop プロパティのポイントは、NHibernate が関係を認識できるようにするためだと思いましたが、実際にはプロパティを設定しません...? 興味深いことに、クエリの後で Projects プロパティが null になるため、プロパティは設定されません (2 番目のクエリはさらに冗長になります!)。
私はNHibernate v3.1.0.4000とFluentNHibernate v1.2.0.712を使用しています
編集
少しテストを行った結果、これは流暢なクエリ インターフェイスの使用に固有の問題ではないことがわかりました。さらに、hbm ファイルへのマッピングをダンプすると、このプロパティのマッピングは次のようになります。
<set access="none" name="Projects" table="UsersProjects">
<key>
<column name="UserID" />
</key>
<many-to-many class="Project">
<column name="ProjectID" />
</many-to-many>
</set>
これは私が期待するもののように見えます ( http://ayende.com/blog/4054/nhibernate-query-only-properties )。