![](/img/trans.png)
[英]How to do a case-insensitive string where in NHibernate Linq query?
[英]LINQ to NHibernate, how to do this query
我有兩個實體,EntityA和EntityB。 數據庫中的EntityB具有對EntityA.Id的FK引用,因此對於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查詢。 我希望EntityB中沒有任何行的EntityA的所有行都具有對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
)
任何人都可以提供的幫助非常感謝,謝謝。
如果在EntityA和EntityB之間建立雙向關系,則會更容易。 (對不起,NHForge目前正在關閉,否則我會把你鏈接到一些文檔)。
然后你可以像這樣編寫查詢:
Session.Query<EntityA>
.Where(x => !x.EntityBs.Any())
.ToList();
在沒有雙向映射的情況下執行此操作在Linq中很難 - 我會使用CreateCriteria或HQL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.