2009-08-03 65 views
2

我有類似以下的一類(NB名稱已被更改,以保護無辜的!):(流利)NHibernate的映射類與計算性能

public class Person 
{ 
    public virtual int Id { get; private set; } 
    public virtual string Name { get; set; } 
    public virtual DateTime Birthday { get; set; } 
    public virtual TimeSpan Age { get { return DateTime.Now - this.Birthday; } } 
} 

我用流利的NHibernate的配置我的映射:

public class PersonMap : ClassMap<Person> 
{ 
    public PersonMap() 
    { 
     Id(x => x.Id); 
     Map(x => x.Name); 
     Map(x => x.Birthday); 
    } 
} 

的問題是,這將引發異常:

找不到財產0123二傳手類「年齡」「人」

如果年齡沒有被標記的虛擬I得到:

以下類型可能不被用作 代理:聯繫人:方法get_Age應該 是「公開/保護虛擬'或 '受保護的內部虛擬'

當然,它不能找到一個setter,它不應該!我怎樣才能使這個映射工作?

回答

4

真正的問題是爲什麼流利的NHibernate試圖映射Age屬性呢?它甚至不在你的映射中。我只使用早期版本的流利NHibernate,在整個自動映射功能之前,從來沒有這個問題。

我懷疑你的慣例是導致它試圖映射年齡,或者你以某種方式啓用了與你的手動映射相沖突的自動映射。

另外請注意,流利的NHibernate有點最近改變了慣例。所以我會看看下列文件:

http://wiki.fluentnhibernate.org/show/Conventions

http://wiki.fluentnhibernate.org/show/ConvertingToNewStyleConventions

http://wiki.fluentnhibernate.org/show/AutoMapping

+1

這是導致它的公約...謝謝。 – veggerby 2009-08-03 21:22:23