【发布时间】:2012-10-05 11:34:26
【问题描述】:
我正在尝试检索根聚合及其子集合,对子集合应用日期过滤器。
CREATE TABLE Shop
(
Id int
)
CREATE TABLE Order
(
ShopId int,
OrderDate datetime
)
子对象自然没有 ShopId 属性来避免双向引用:
class Shop
{
int Id { get; set; }
List<Order> { get; set; }
}
class Order
{
DateTime OrderDate { get; set; }
}
FNHB 映射如下所示:
public ShopMap()
{
this.Table("SHOP");
this.Id(x => x.Id).Column("ID");
this.HasMany(x => x.Orders).Table("ORDER").KeyColumn("SHOP_ID");
}
public OrderMap()
{
this.Table("ORDER");
this.Map(x => x.OrderDate);
}
我正在尝试检索在特定日期之间下订单的给定商店,给定参数 shopId, fromDate, toDate,我已经尝试过,但它会引发异常:
Session.Query<Shop>().Where(shop => shop.Id == shopId)
.FetchMany(
shop => shop.Orders.Where(
order => order .OrderDate >= fromDate && order.OrderDate <= toDate));
如果不使用魔术字符串(NHb 标准、HQL 等),是否可以通过简单的 Linq 查询来实现?
【问题讨论】:
-
如果可以的话,可以用 QueryOver 来完成。
标签: linq nhibernate fluent-nhibernate