У меня есть две сущности, EntityA и EntityB.EntityB в базе данных имеет ссылку FK на EntityA.Id, поэтому для каждой строки в EntityA потенциально может быть ноль, одна или несколько строк в EntityB.Обычно это упоминается просто как отношение один ко многим.
У меня есть две сущности, сопоставленные с NHibernate 3.2, например:
<class name="EntityA" table="EntityA">
<id name="Id" type="Guid" column="id">
<generator class="guid.comb" />
</id>
<set name="EntityBs" lazy="false" inverse="true" cascade="all" table="EntityB">
<key column="id" />
<one-to-many class="EntityB" />
</set>
<properties...
</class>
<class name="EntityB" table="EntityB">
<id name="Id" type="Guid" column="id">
<generator class="guid.comb" />
</id>
<many-to-one name="EntityA" class="EntityA" column="entityAId" />
<properties...
</class>
Я не могу понять, как написать этот запрос LINQ.Я хочу, чтобы все строки EntityA, которые не имеют каких-либо строк в EntityB с внешним ключом ссылки на EntityA.
Основываясь на других примерах, которые я обнаружил, я попробовал что-то вроде этого:
var results =
nhSession.Query<EntityA>()
.Where(x => !x.EntityBs.Any()).ToList();
То, что я хочу, чтобы LINQ-to-NHibernate испускал, выглядит примерно так:
SELECT
id,
column1,
column2,
etc..
FROM EntityA
WHERE id NOT IN (
SELECT entityAId
FROM EntityB
)
Любая помощь, которую кто-либо может оказать, очень ценится, спасибо.