2012-09-11 52 views
1

我需要使用功能NHibernate映射以下屬性(VMS在美孚):如何繪製複雜的IDictionary <ProtectionGroupIdentifier,HashSet的<VMIdentifier >>

public class Foo 
{ 
    [DataMember] 
    public IDictionary<VpgId, HashSet<VmId>> Vms 
    { get; private set; } 
} 

public class VpgId 
{ 
    [DataMember] 
    public virtual Guid GroupGuid 
    { get; private set; } 
} 

public class VmId 
{ 
    [DataMember] 
    public virtual string VmName 
    { get; private set; } 

} 

我試圖HashSet的改變的ISet並添加以下FNH配置

.Override<Foo>(obj => obj.HasMany(x => x.Vms).Cascade.AllDeleteOrphan()) 

,但我得到以下異常:

拋出異常。 NHibernate.MappingException:NHibernate.MappingException:關聯引用未映射的類:System.Collections.Generic.ISet`1 [[Common.VmId,Common,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]。

問:我如何映射包含在集合中的集合?

回答

1

您無法映射嵌套集合。你需要創建一個包含內部集合的類(它需要是一個ISet)。然後,您可以將其映射爲複合元素。

相關問題