2012-09-19 119 views
1

我剛開始使用Fluent NHibernate開發一個項目。流利的NHibernate映射使用組件

使用Fluent NHibernate映射下列類的正確方法是什麼?

public class DurationUnit 
{ 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 
} 

public class Duration 
{ 
    public virtual int Value { get; set; } 
    public virtual DurationUnit Unit { get; set; } 
    public virtual int DurationInMinutes { get{ throw new NotImplementedException(); } } 
} 

public class Event 
{ 
    public virtual int Id { get; set; } 
    public virtual String Name { get; set; } 
    public virtual Duration MaxDuration { get; set; } 
    public virtual Duration MinDuration { get; set; } 
} 

我的方法是爲DurationUnit和Event聲明一個ClassMap,並將Duration作爲Event的一個組件。當嘗試這個,我收到一個例外:

NHibernate.MappingException:無法確定類型: Entities.DurationUnit

回答

2

如果你的映射看起來像這樣

public EventMap() 
{ 
    Component(x => x.MaxDuration, c => 
    { 
     c.Map(x => x.Value, "MaxDurationValue"); 
     c.Reference(x => x.Unit, "MaxDurationUnitId"); 
    }); 
} 

然後確保class DurationUnitMap是公開的,並被添加到配置

+1

這工作正常。我是一個白癡,在我的組件映射中使用Map而不是Reference。非常感謝! – TonE