У меня есть пользователь объект, который имеет отношение многие ко многим с project .В моем отображении пользователя у меня есть это:
HasManyToMany(x => x.Projects).Table("UsersProjects").ParentKeyColumn("UserID").Access.None();
Когда я запускаю простой запрос get by id:
session.QueryOver<User>()
.Where(x => x.PrimaryID == id)
.Take(1).SingleOrDefault();
Я получаю два запускаемых запроса - первый - это запрос ксделайте get by id, второй запрос для получения списка проектов.
Я думал, что смысл свойства noop заключается в том, что NHibernate может знать о связи, но не заполнять это свойство...?Интересно, что свойство Projects после запроса равно нулю - поэтому свойство не задается (что делает второй запрос еще более избыточным!)
Я использую 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).