У меня есть HasMany
отношение, и я получаю следующий способ:
session.Query<ResearchEntity>()
public class ResearchEntityMap : ClassMap<ResearchEntity>{
public ResearchEntityMap()
{
Table("research_entity");
Id(x => x.Id).GeneratedBy.Identity().Column("id");
HasMany(x => x.Names).Cascade.All().KeyColumns.Add("research_id").Not.LazyLoad().Fetch.Subselect();
HasMany(x => x.Phones).Cascade.All().KeyColumns.Add("research_id").Not.LazyLoad().Fetch.Subselect();
}
У меня 2 проблемы.
Я ожидаю, что выборка будет с Subselect
, потому что это LazyLoad
.(см. сопоставления выше).во время выполнения я вижу, что он создает два разных запроса для вывода LazyLoad
и Phones
.
Я также вижу, что эти 2 запроса сгенерированы NHibernate без where reseach_id=?
SELECT
phones0_.research_id as research11_12_1_,
phones0_.id as id1_12_1_,
phones0_.id as id1_12_0_,
phones0_.date_created as date2_12_0_,
phones0_.last_updated_date as last3_12_0_,
phones0_.deleted as deleted4_12_0_,
phones0_.value as value5_12_0_,
phones0_.is_primary as is6_12_0_,
phones0_.finding_status as finding7_12_0_,
phones0_.source as source8_12_0_,
phones0_.created_by as created9_12_0_,
phones0_.last_updated_by as last10_12_0_
FROM
phone_entity phones0_
WHERE
phones0_.research_id in (
select
this_.id
FROM
research_entity this_
WHERE
1=1
)
Спасибо