我有以下课程:
class Employee
{
public string Name { get; set; }
}
class HistoricalEmployee : Employee
{
public DateTime TerminationDate { get; set; }
}
class Company
{
public IList<Person> CurrentEmployees { get; set; }
}
使用table-per-class-heirarchy策略映射Employee和HistoricalEmployee。
当我检索CurrentEmployees集合时,我希望它只包含Employee,而不是HistoricalEmployees的元素。
当员工'去世'时,他们并没有真正删除,但他们成为了HistoricalEmployee(还有一些属性,例如终止日期等)。
显然,随着时间的推移,HistoricalEmployees的数量将超过员工的数量,因此当我只需要当前的员工时,我无法获取所有的HistoricalEmployees。
我如何(流利地)配置集合以仅检索超类的元素?
我认为这与多态性属性有关,但我无法弄清楚如何做到这一点。
感谢,
的Jhonny
答案 0 :(得分:1)
好的,我是这样做的:
mapping.HasMany(x => x.CurrentEmployees)
//.Where(pqa => pqa.TimeOut != null)
.Where("TerminationDate is null")
显然,.Where()函数在属性上创建了一个过滤器,这正是我所需要的
注意我使用了字符串版本,并注释掉了Func&lt;&gt;版本。
这是因为目前(FNH 1.1),据我所知,Func&lt;&gt;版本不起作用。
希望这有助于某人,
Ĵ