0

我只想知道这是否可能与流利的nhibernate有关。

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

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

该表有一个复合键作为 Season 和 Service_No,以及用于自引用的外键作为 Season 和 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的限制吗?

谢谢回答我的问题。

4

1 回答 1

0

这是 NHibernate 的一个限制。您不能将一列用于两种不同的事物,例如在您的情况下主键和外键。看到我关于同一主题的问题

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

于 2012-10-05T10:04:25.227 回答