【发布时间】:2011-10-21 18:17:37
【问题描述】:
我的申请是这样的:
- 我有一个类产品
- 我有用户跟踪这个产品,所以类 Track
注意多个用户可以跟踪一个产品,所以 Product : Track 之间的关系是 1 : n
但是,如果用户当前已登录,它只能是 1 与产品关联的跟踪,并且在我的列表页面中,我应该显示当前用户的产品列表及其跟踪状态,类似:
- 产品 A - 2011-01-01 跟踪
- 产品 B - 未跟踪
- 产品 C - 于 2010 年 12 月 20 日追踪
- ...
因此在普通的 sql 中,我可能会有这样的查询:
select * from Product as p
left outer join Track as t
on t.ProductId = p.Id and t.UserId = {currentUser.Id}
但是使用NHibernate我觉得实现起来并不容易,目前我有一个ProductWithTrack类,它继承自Product类并添加了一个Track 属性:
class ProductWithTrack : Product {
public Track Track { get; set; }
}
我的努力是将这个类映射到 Product 表,就像 Product 类一样,但是 我如何计算 Track 属性的映射,我试过了:
- 一对多,但 Track 不是集合
- 多对一/一对一,这需要 Product 表中肯定不存在的外键列
请帮忙解决这个映射问题,谢谢。
【问题讨论】:
标签: c# .net nhibernate mapping nhibernate-mapping