2009-08-08 122 views
0

我試圖用類結構使用表每個子類(其流利,NHibernate的automaps默認),如下所示:映射額外集合屬性派生類中的NHibernate

public class Product 
{ 
    public virtual int Id{ get; set; } 
    public virtual string Title{ get; set; } 
} 

public class ProductPackage : Product 
{ 
    public ProductPackage(){ Includes = new List<Product>(); } 
    public virtual IList<Prodcut> Includes{ get; private set; } 

    [EditorBrowsable(EditorBrowsableState.Never)] 
    public class ProductPackageAutoOverride : IAutoMappingOverride<ProductPackage> 
    { 
     public void Override(AutoMap<ProductPackage> mapping) 
     { 
      mapping.HasManyToMany(x => x.Includes) 
       .WithTableName("IncludesXProduct") 
       .WithParentKeyColumn("ProductId") 
       .WithChildKeyColumn("IncludesProductId") 
       .Cascade.SaveUpdate(); 
     } 
    } 
} 

相反添加一個新表「IncludesXProduct」來表示多對多映射,它將一個屬性「ProductPackageId」添加到Product表中。當然堅持這個模式是行不通的。

我錯過了一些簡單的東西,或者這種類型的東西沒有真正被NHibernate支持?

回答

0

用NHibernate可以做到這一點。不幸的是,我的流利的語法不是很好,但看起來FNH在某種程度上將關係視爲多對一而不是多對多關係。

如果你用「流利的nhibernate」標記你的問題,那麼你可能會得到更多的知識淵博的人回答。