我知道這個問題可能會導致一個主觀的答案,但我想從其他人那裏得到一個意見。在NHibernate中映射隱藏屬性的最佳方式(流利)
一些背景 目前,我有一個公用字符串WKT一個私人字符串屬性映射到一個PostgreSQL(PostGIS的)數據庫表中的幾何列一類。 WKT被PostGIS用於使用觸發器自動更新幾何列。由於我不想在域模型中包含任何空間參考,因此所有查詢均使用WKT字符串和自定義空間標準完成,該空間標準將WKT包裝在空間PostGIS函數中,並查詢專用幾何特性列參考。所有這些按預期工作。
問題 因爲我需要的列引用,我還需要物業在我的DomainModel,對NHibernate的映射到,所以我在想,最好的解決辦法是什麼,對NHibernate的,以從未選擇這個性質。
我目前的解決方案看起來與功能NHibernate如下:
Map(Reveal.Member<LocationReference>("Geometry"), "geometry")
.Generated.Always()
.ReadOnly()
.LazyLoad();
這是卓有成效的,當我選擇實體,我不會得到的財產,除非我手動加載它(這ISN」通過lambda擴展可能)。不幸的是,我仍然可以爲該屬性進行Criteria或HQL查詢。
那麼有沒有什麼辦法可以讓我做任何事情來阻止NHibernate能夠做到曾經有過包括select中的列?或者,上述解決方案是在與Query<>
或QueryOver<>
一起選擇時至少忽略列的唯一方法?
我不太瞭解,並您的域名實際使用此LocationReference私有財產?在您的域中使用它有什麼用途? – Vadim 2011-05-27 21:30:32
嗯,我實際上只需要屬性就可以讓NHibernate在執行查詢時意識到它。 NHibernate應該自動映射到正確的列別名,並且正如我寫的那樣,我創建了一個自定義空間標準,該標準使用該屬性的字符串名稱。 – Siewers 2011-05-28 03:59:12