У меня есть две таблицы (tbArea, tbPost), которые относятся к следующим классам.
class Area
{
int ID
string Name
...
}
class Post
{
int ID
string Title
Area Area
...
}
Эти два класса отображаются вместе с Fluent Nhibernate. Ниже приведено сопоставление постов.
public class PostMapping : ClassMap<Post>
{
public PostMapping()
{
Cache.NonStrictReadWrite();
this.Table("tbPost");
Id(x => x.ID)
.Column("PostID")
.GeneratedBy
.Identity();
References(x => x.Area)
.ForeignKey("AreaID")
.Column("AreaID");
...
}
}
Каждый раз, когда я выполняю запрос к таблице сообщений "где AreaID = 1 (любой AreaId)", nhibernate присоединяется к таблице областей.
(Что генерирует Nhibernate для запроса)
SELECT
post fields
, area fields (automatically added)
FROM tbPost p
LEFT JOIN tbArea a on
p.areaid = a.areaid
where
p.areaid = 1
Я попытался установить для Area значение LazyLoad, Fetch.Select, ReadOnly и любые другие параметры для ссылки, но он всегда будет присоединяться к Area.
Я пытаюсь оптимизировать запросы к базе данных бэкэнда, и, поскольку мне не нужно загружать объект области только что отфильтрованным, я бы хотел исключить ненужное объединение с областью каждый раз, когда я отправляю запрос.
Какие конфигурации мне нужно изменить или сопоставить, чтобы область оставалась связанной с публикацией в моих объектах, но не запрашивала ее при фильтрации по AreaID?