2009-06-24 130 views
0

我有类似下面的实体:日期筛选集合,而不功能

public class Entity 
{ 
    public List<DateItem> PastDates { get; set; } 
    public List<DateItem> FutureDates { get; set; } 
} 

public class DateItem 
{ 
    public DateTime Date { get; set; } 
    /* 
    * Other Properties 
    * */ 
} 

凡PastDates和FutureDates都映射到同一个类型/表。我一直在试图找到一种方法来让Nhibernate自动映射过去和未来属性。我最接近的是映射中的where子句,如下所示

HasMany(x => x.PastDates) 
      .AsBag().Cascade 
      .AllDeleteOrphan() 
      .KeyColumnNames.Add("EventId").Where("Date < currentdate()") 
      .Inverse(); 

其中currentdate是UDF。我不想拥有这些数据库特定的功能,如果我可以避免它,主要是因为我不能用SQLite测试我的DAL,因为它不支持函数或存储过程。

目前我正在使用Criteria构建过去和未来的集合,并手动添加到我的DTO中。

任何人都知道如何在不使用任何UDF的情况下实现这一点?

非常感谢,

回答

1

我不能肯定,但我不认为Where串曾经被解析;它只是纯粹的SQL,并直接注入到查询中。我可能是错误的,所以它可能值得看像extending the dialect与你自己的自定义函数(这意味着你可以对你的内存方言也一样)。