我正在尝试设置和对象之间的映射,以及它在另一个对象中的查找值。这是我的表:
Orders:
OrderId int,
OrderDate datetime,
StatusId int
Statuses:
id int
StatusName varchar(20)
我正在努力建立一种可以让我做这样的事情的关系:
SELECT O.OrderId, S.StatusName as OrderStatus
FROM Orders O
INNER JOIN Statuses S ON O.StatusId = S.Id
在我的订单映射中,我这样做了:
mapping.HasOne<Statuses>(x => x.StatusId).PropertyRef(x => x.id);
但是当我尝试使用上面的SQL使用HQL查询它时,它不起作用。
然后我尝试将Statuses对象添加到我的Order域对象,如下所示:
public class Order
{
public virtual long Id { get; set; }
...
public virtual Statuses StatusList { get; set; }
}
然后像这样做HQL:
SELECT O.OrderId, O.StatusList.StatusName as OrderStatus
FROM Orders O
在我的映射文件中使用它:
mapping.References(b => b.StatusList , "StatusId").PropertyRef(x => x.id);
这样可行,但是当我去保存订单时,它不知道如何处理StatusList属性。它似乎试图保存它,这显然不是我想要的。
总而言之,如何在NHibernate中创建查找映射而不必将其包含在源域模型中(即:Order)?
由于