0

我有一个 Items 表,其中 ItemID 作为主键

我有一个包含复合主键 StoreID 和 ItemID 的 StoreItems 表。ItemID 使用对 Items 表的外键引用。

我需要创建一个看起来像这样的查询(目标是选择两个商店中存在的项目)

select * from Items i
inner join storeitems s1 on s1.ItemID = i.ItemID and s1.StoreID = myfirststoreid
inner join storeitems s2 on s2.ItemID = i.ItemID and s2.StoreID = mysecondstoreid

我怎样才能做流畅的映射来实现这一点?

4

1 回答 1

0

未经测试。它首先选择 ID,然后获取项目。可以合并为一个语句:

var itemsIdsInBothStores =
    from i in session.Query<Item>()
    from s in i.Stores
    where s.Id == myfirststoreid || s.Id == mysecondstoreid
    group i by i.Id into g
    where g.Count() = 2
    select g.Key;

var itemsInBothStores = ´session.QueryOver<Item>().WhereRestrictionOn(i => i.Id).In(itemsIdsInBothStores.ToList());
于 2012-10-08T08:37:52.500 回答