2
我想讓流暢的Nhibernate自動映射到沒有指定主鍵或複合鍵的只讀視圖。看起來好像是可能的,因爲ClassMap的API文檔公開了Id()的默認構造函數。使用流暢的NHibernate來映射一個只讀的sql視圖
http://fluentnhibernate.org/api/FluentNHibernate.Mapping/ClassMap%601.htm
它說
IdentityPart ID() 創建一個不具有在域對象的相應屬性,或在數據庫中的列的ID。這主要用於只讀訪問和/或視圖。默認爲帶有「增量」生成器的int標識。
我試着重寫對應於我的視圖的實體的映射,並刪除了指定Id字段名稱的主鍵約定。它添加了一個id
列來查看失敗的視圖,因爲沒有這樣的列。
我想擺脫我的看法假主鍵,因爲我認爲應該有更好的方式來做到這一點。
這裏是覆蓋片段我使用
public class PersonMap: IAutoMappingOverride<Person>
{
public void Override(AutoMapping<Person> mapping)
{
mapping.Id();
}
}
爲什麼不這項工作?
這不正是OP不想做的事? – CrazyDart
不,他只是規定他不想有一個假的,無用的主鍵。我建議他使用實際上對他有價值的專欄,並將其作爲ID映射而不是作爲常規屬性。對nhibernate不應該有任何區別,應該讓他解決問題。 – Fourth
由於這些是sql視圖,所以唯一性有時必須由許多屬性確定。爲了實現這一點,您必須建立一個組合鍵,並覆蓋該實體的Equals和GetHashCode方法。我的希望是,我可以繞過建立任何id,因爲它是一個只讀結構。 – user1169684