2009-04-09 123 views
1

我們使用將整數值保存到varchar列的遺留數據庫。我們需要將此列映射到Int32屬性,並且如果數據庫列中的數據爲數字或NULL,則它工作良好。(流利)NHibernate - 將Varchar映射到Int32

但是,如果列包含空字符串而不是null,那麼我們會遇到問題--nhibernate會拋出無法將其轉換爲整數的錯誤。

是否可以配置類映射來自動將異常提升到的所有值都轉換爲默認值(在這種情況下爲零)?

回答

2

可能使用攔截器轉換值。您可以通過搜索「空值替換」來獲得一些建議。

但是你真的有這個需求嗎?您可以映射varchar列的專用或只讀成員,並使用其他屬性來控制它。

private string _varcharField; 

public string VarcharField 
{ 
    get { return _varcharField; } 
} 

public int IntProperty 
{ 
    get { [parse and return _varcharField]; } 
    set { _varcharField = value.ToString(); } 
} 

在這個例子中,_varcharField將使用訪問策略映射到NHibernate中。

+0

謝謝,這是我想做的事情,如果它不能通過映射完成。 – nihique 2009-04-10 07:14:13