流畅的NHibernate自我参考表与复合键

时间:2012-10-02 01:41:57

标签: fluent-nhibernate fluent-nhibernate-mapping

我只是想知道这是否可以用流利的nhibernate。

我的数据库中有一个自引用表。

Table Service
{
int Season (PK) (FK)
int Service_No (PK)
int ParentService_No (FK)
}

该表有一个复合键,如Season和Service_No,以及自我引用的外键,如季节和ParentService_No

我尝试在我的服务类中创建一个名为ChildServices的集合属性,作为多对多关系。

HasManyToMany(x => x.ChildServices )
.Table("SERVICE")
.Access.Property()
.AsBag()
.Cascade.SaveUpdate()
.LazyLoad()
.Generic()
.ParentKeyColumns.Add("SEASON")
.ParentKeyColumns.Add("SERVICE_NO")
.ChildKeyColumns.Add("SEASON")
.ChildKeyColumns.Add("P_SERVICE_NO");

如果我使用上面的映射,它将抛出我的异常,说明集合的映射中的重复列:Service.ChildServices列:SEASON

我该怎么做?这是流利的nhibernate的限制吗?

感谢您回答我的问题。

1 个答案:

答案 0 :(得分:0)

这是NHibernate的限制。您不能将一列用于两个不同的事情,例如在您的案例主键和外键中。 see my question on the same subject

您可以尝试猜测NHibernate生成的别名,并使用ParentService_No列作为foreignkey,并使用service_no上的别名where条件