我只是想知道这是否可以用流利的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的限制吗?
感谢您回答我的问题。
答案 0 :(得分:0)
这是NHibernate的限制。您不能将一列用于两个不同的事情,例如在您的案例主键和外键中。 see my question on the same subject
您可以尝试猜测NHibernate生成的别名,并使用ParentService_No
列作为foreignkey,并使用service_no上的别名where条件