我有一個NHibernate和postgresql POINT數據類型的問題(儘管我相信這是所有這些的常見問題試圖映射一個沒有被NHibernate SqlTypes覆蓋的SQL TYPE)。爲POINT postgresql數據類型(或任何非原始類似nhibernate類型的列)實現新的NHibernate類型
我的Data.Point類有兩個公共浮點數:xcoordinate和ycoordinate。
我第一次嘗試是想貫徹IUserType接口,但我很快就發現,問題就來了較早,在映射階段:
MappingException是未處理由用戶代碼:
無法確定類型爲:Data.PointUserType,Data.Point,爲列:NHibernate.Mapping.Column(座標)
我很新的NHibernate的,但在我看來,我只能創建一個新的類型,如果該數據庫中的列是已知類型(float,int,var字符和所有「經典」類型,但不是我需要的幾何類型)。
我已經設法通過映射到座標[0]和座標[1]將我的POINT映射到兩個不同的屬性。但是這隻對SELECT和UPDATE查詢有用,對於INSERT,postgresql會抱怨「座標」不可爲空。另外,我找不到NHibernate Spatial擴展的實際版本,我寧願控制我的POINT類型,因爲我很少使用這種類型,因此我寧願不加載整個NHibernate Spatial程序集(假設它們是積極開發的,否則我會遠離它們)。我最後的想法是我需要搞亂NHibernate的SQL生成(因爲插入SQL的某些部分將是'(a,b)':: point,非常具體),也許這是一個太麻煩了(也許不是,我會願意檢查出來)。
我對NHibernate相當新,但我越來越絕望。 任何人都可以指點我嗎?
我知道這是一個有點晚,但均你能做到嗎?我試圖在Nhibernate中映射postgresql Point類型,有或沒有NH.Spatial,我一直在找你的問題。 – 2013-11-25 10:46:36
確實,我有,但有些事情需要注意。請通過gmail dot com的mzabani與我聯繫。 – 2013-11-25 13:46:01