3
我有兩個實體EntityA和EntityB。數據庫中的EntityB具有對EntityA.Id的FK引用,因此對於EntityA中的每一行,EntityB中都有可能爲零,一行或多行。通常這被簡稱爲一對多關係。LINQ to NHibernate,如何做這個查詢
我有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到NHibernate的發射是一樣的東西:
SELECT
id,
column1,
column2,
etc..
FROM EntityA
WHERE id NOT IN (
SELECT entityAId
FROM EntityB
)
任何幫助任何人都可以提供非常感謝,謝謝。
我添加了雙向關係。我將編輯我上面的原始問題以反映這個想法。但是,查詢不起作用。它什麼都不選,即使它應該。 – tnktnk 2012-01-30 06:12:02
好的,我弄清楚了ISet是錯誤類型的另一個障礙,現在我看到它正在生成的查詢,它完全錯誤,我不知道LINQ語法會產生正確的查詢。我想我必須放棄這個方向。儘管感謝您的回覆。 – tnktnk 2012-01-30 06:46:57
你能發佈你正在尋找的確切的SQL查詢嗎? – cbp 2012-01-30 08:10:51