我正在尝试使用table-per-subclass(默认情况下为fluent-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 :(得分:0)
可以使用NHibernate完成此操作。不幸的是,我的流利语法不是很好,但看起来FNH在某种程度上将这种关系视为多对一而不是多对多。
如果您使用“fluent-nhibernate”标记您的问题,那么您可能会让更多知识渊博的人回答。