我正在嘗試使用字符串在數據庫中存儲不同類型的數據類型。當我做查詢時,我需要在查詢本身中將字符串轉換爲正確的類型。我在NHibernate中使用.Net,很高興知道存在這樣的功能。使用Projections.Cast進行NHibernate查詢DateTime
對於我使用這個簡單的類的實例:
public class Foo
{
public string Text { get; set; }
}
我成功地使用Projections.Cast投爲數值,例如以下查詢正確返回所有Foos,並存儲爲int的整數 - 在1-10之間。
var result = Session.CreateCriteria<Foo>()
.Add(Restrictions.Between(Projections.Cast(NHibernateUtil.Int32, Projections.Property("Text")), 1, 10))
.List<Foo>();
現在,如果我嘗試使用這個DateTime我無法讓它工作,無論我嘗試。爲什麼?!
var date = new DateTime(2010, 5, 21, 11, 30, 00);
AddFooToDb(new Foo { Text = date.ToString() }); // Will add it to the database...
var result = Session
.CreateCriteria<Foo>()
.Add(Restrictions.Eq(Projections.Cast(NHibernateUtil.DateTime, Projections.Property("Text")), date))
.List<Foo>();
這是日期的格式嗎?嘗試將date.ToString()格式化爲「dd MMMM yyyy」並查看。不知道,我沒有嘗試過,只是一個想法 – 2010-05-21 12:01:15
如果你需要在查詢之前施放,這將成爲屁股的一大痛苦。如果你真的需要它,我會考慮添加一個列來存儲實際類型。這樣你就可以確保你的演員會工作。 – dotjoe 2010-05-21 15:37:19
您是否介意解釋如何確定演員陣容的作品?因爲我會知道類型。 – stiank81 2010-05-21 18:43:30