2011-06-29 28 views
2

我想檢索一個使用where子句針對DateTime的行。對日期時間屬性查詢流利NHibernate問題

注意:Query是從ISession.Query擴展的IQueryable

var results = Query 
    .Where(row => row.TimeStampUtc == timeStampUtc); 

這不會返回任何結果。

var results = Query.ToList() 
    .Where(row => row.TimeStampUtc == timeStampUtc); 

這將返回結果。(通過使用ToList()即時避免NHibernate查詢提供程序)。

我缺少什麼把戲?

更新:

SQL事件探查器告訴我,它的查詢

where row.TimeStampUtc = '2011-01-28T09:28:55.00' /* @p0 */ 

但實際列值是'2011-01-28 09:28:55.987'因此沒有比賽。映射期間

某處(推測讀取)我失去子第二數據。

+0

如何在db上定義列,它是什麼數據庫? – Variant

+0

SQL2008。該列是自動映射的。我現在正在研究CustomType(DateTime2),它可以工作,但它似乎不起作用,因爲該列也是CompositeId定義的一部分...需要找到方法來執行CompositeId,同時確認CustomType – Schneider

回答

0

問題通過柱用作CompositeId的一部分的事實引起的。

我無法在列上單獨使用CustomType,因爲如果該列也被定義爲CompositeId的一部分,則忽略它。

的解決方案是使用Type方法上KeyProperty定義。

mapping.CompositeId() 
       .KeyProperty(x => x.Name) 
       .KeyProperty(x => x.TimeStampUtc, k => k.Type("DateTime2"));