你好,我有一個應用程序,使用nhibernate作爲orm,我需要存儲的數據,代表時間, 什麼是最好的辦法呢?時間和Nhibernate
nhibenate不知道將時間字段從數據庫轉換爲時間跨度,只有字符串。
你好,我有一個應用程序,使用nhibernate作爲orm,我需要存儲的數據,代表時間, 什麼是最好的辦法呢?時間和Nhibernate
nhibenate不知道將時間字段從數據庫轉換爲時間跨度,只有字符串。
NHibernate支持DateTime, Ticks, TimeSpan and Timestamp。確保你在映射元素上明確指定類型,因爲不同的時間類型有不同的語義,所以NHibernate猜測的可能是不正確的。
如果您仍然有問題,請修改您的帖子以包含實體的相關部分,映射文件以及您遇到的實際問題。
編輯:
例如,下面的類爲TimeSpan
:
public class MyClass
{
// Other properties
// ...
// ...
public virtual TimeSpan MyTimeProperty { get; set; }
}
和映射文件:
<!-- other properties -->
<property name="MyTimeProperty" type="TimeSpan" /> <!-- Note: NH expects the DB type to be DbType.Int64 -->
表明您正在嘗試映射時間跨度(「nhibenate不知道將時間字段從數據庫轉換爲時間跨度,只有字符串」)。如果這是.NET(typeof
TimeSpan
)與數據庫(DbType.Int64
)之間的正確類型匹配,則NH應自動執行此操作(即,您不需要指定type="TimeSpan"
)。所以如果它不能正常工作,我懷疑你的設置方式有問題。如果您使用完整簽名發佈屬性/字段聲明,映射文件中該屬性的<property>
行以及數據庫中的列定義,則可能會有所幫助。
此外,請確保您使用數據庫中可以爲null的DateTimes的可用空值。
DateTime?而不僅僅是DateTime。
如果不是,NHibernate會嘗試初始化您的日期到一個默認值,這可能不是你想要的。
我需要指定流利的nhibernate類型嗎? – 2009-06-06 14:28:44