2009-06-24 153 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與你自己的自定義函數(這意味着你可以對你的內存方言也一樣)。