2010-06-22 33 views
8

比方說,我有以下實體:如何用NHibernate流暢地映射一個沒有setter和沒有支持屬性的屬性?

public class CalculationInfo 
{ 
    public virtual Int64 Id { get; set; } 

    public virtual decimal Amount { get; set; } 

    public virtual decimal SomeVariable { get; set; } 

    public virtual decimal SomeOtherVariable { get; set; } 

    public virtual decimal CalculatedAmount 
    { 
     get 
     { 
      decimal result; 

      // do crazy stuff with Amount, SomeVariable and SomeOtherVariable 

      return result; 
     } 
    } 
} 

基本上我想讀所有的領域與CalculatedAmount例外,我只是想寫,而不是讀寫信給我與NHibernate的數據庫回到英寸

每個類似的問題和相應的答案都已經處理了指定該值的後備存儲,我不會在這種情況下。

我該如何使用Fluent NHibernate來完成這項工作?

謝謝!

UPDATE:下面是我嘗試和錯誤它導致:

這裏是我的屬性映射...

Map(x => x.CalculatedAmount) 
     .ReadOnly(); 

和異常它產生...

找不到在類屬性的設置'CalculatedAmount 'xxx.CalculationInfo'

回答

2

我不使用流利,但在映射沒有二傳手一個持久屬性映射與access="readonly",因此尋找類似.Readonly()

(只讀從模式觀點;該值被寫入數據庫並用於髒檢查)

+0

我已經更新了我的答案,以解決......這是第一件事情之一我遇到過,但我仍然以上述例外結束。你能想到在NHibernate的設置,將阻止這個工作? – 2010-06-23 14:21:19

+0

您可以導出FluentNH生成的XML嗎? – 2010-06-23 16:59:55

0

看起來這是一個計算值。如果你可以在任何時候計算這個值,那爲什麼要存儲它呢?

+0

偉大的問題...簡短的答案是不可否認的。即使我的計算方法發生變化,我總是可以指出在給定的時間點/與某個動作相關的時間內計算出的結果。 – 2010-06-23 02:14:16

+0

@Brandon林頓:夠公平的。 +1。爲什麼私人支持領域是不受歡迎的,還是更多是美學問題? – 2010-06-23 02:24:44

+0

它只是永遠不會結束使用......每次都應該執行計算,因爲可變因素隨時都可能發生變化。 – 2010-06-23 14:15:48

5

我想通了,順便得到這個映射功能NHibernate的工作就是簡單地將訪問屬性:

Map(x => x.CalculatedAmount).Access.ReadOnly(); 
相關問題