我正在使用最新版本的NHibernate,最近我偶然發現了一個有趣的問題。在某些情況下ORM額外的計算列?
比方說,我有一個名爲Profile的表,我想要接收我的所有配置文件的列表。但是,有了它,我有一個名爲CanDelete
的計算列,它禁止在(例如)正在使用的情況下刪除配置文件。
但是,這CanDelete
計算列不是我的實體的一部分,我不想污染實體,當我在這種情況下只需要CanDelete
值 - 並且對每個配置文件單獨計算它太慢。
有沒有在NHibernate的方式執行某些查詢並獲取該查詢的行作爲對象,但然後以某種方式獲取一個額外的計算列以及?
假設我正在使用N層體系結構。在表示層中,我需要一個所有配置文件的列表(並且對於每個配置文件,我是否可以刪除它)。我的業務邏輯層和數據訪問層如何看起來像?
現在在我的資源庫中,我有一個GetProfiles
方法,然後我運行了一個CanDeleteProfile
方法,用於獲取每個配置文件。但就像我上面提到的那樣,它太慢了。我可以創建一個GetProfilesWithCanDeleteStatus
方法,但這需要我創建一個專門的實體,並在其上包含該計算列。
當我不想在配置文件列表中擊中O(n^2)
性能時,如何以適當方式構建此建議,您有什麼建議?我想避免n + 1問題。
我不一定在尋找一個NHibernate解決方案(我標記了NHibernate,因爲它可能有這種類型的東西的一些特定的工具),並歡迎其他ORM的一般解決方案。