Я использую NHibernate с текущими API и получил MainEntity
сопоставление следующим образом:
mapping.References(c => c.Parent1).Not.Nullable().Fetch.Select();
mapping.HasMany(c => c.Children1).Fetch.Select();
mapping.HasMany(c => c.Children2).Fetch.Select();
Затем я пытаюсь запросить MainEntity следующим образом:
var query = Session.Query<MainEntity>().Where(e => e.ID == id);
query.Fetch(e => e.Parent1).ToFuture();
query.FetchMany(e => e.Children1).ToFuture();
query.FetchMany(e => e.Children2).ThenFetch(c => c.Children21).ToFuture();
var entity = query.ToFuture().FirstOrDefault();
Иполучил запрос sql, как это:
select * from MainEntity
left outer join Parent1 on MainEntity.Parent1ID = Parent1.ID
where MainEntity.ID = @id;
select * from MainEntity
left outer join Children1 on MainEntity.ID = Children1.MainEntityID
where MainEntity.ID = @id;
select * from MainEntity
left outer join Children2 on MainEntity.ID = Children2.MainEntityID
left outer join Children21 on Children2.Children21ID = Children21.ID
where MainEntity.ID = @id;
select * from MainEntity
where MainEntity.ID = @id;
Но я хочу, чтобы NHibernate сначала выбрал MainEntity, а затем Parent1
и Children1
, Children2
по условию:
select *
from Parent1
where ID = @parent1ID;
select *
from Children1
where MainEntityID = @id;
@parent1ID
и @id
выбираются по первому запросу MainEntities.
Пожалуйста, помогите мне настроить отображение для этого.