Nhibernate 三元关系建模

Nhibernate 三元关系建模,nhibernate,Nhibernate,我正在处理一个错误的数据库模式。。。不太理想。该领域涉及课程。课程包括先修课程和相关课程。db模型是这样的: 课程 courseid-int 代码-varchar 相关课程 零件号varchar 相关零件号varchar int型 正如您可能已经猜到的,课程和相关课程表并没有连接到课程pk,而是连接到代码列。然后,关系的类型由相关课程中的“类型”列定义 我希望在我的课程目标中有一份先修课程和相关课程的清单,但我一直没有成功。我现在尝试将课程与相关项目进行匹配,然后根据类型进行筛选。这也行不通 这

我正在处理一个错误的数据库模式。。。不太理想。该领域涉及课程。课程包括先修课程和相关课程。db模型是这样的:

课程 courseid-int 代码-varchar

相关课程 零件号varchar 相关零件号varchar int型

正如您可能已经猜到的,课程和相关课程表并没有连接到课程pk,而是连接到代码列。然后,关系的类型由相关课程中的“类型”列定义

我希望在我的课程目标中有一份先修课程和相关课程的清单,但我一直没有成功。我现在尝试将课程与相关项目进行匹配,然后根据类型进行筛选。这也行不通

这是我目前对课程和课程相关课程的映射

public CourseMap()
{
    Map(x => x.Code);
    HasMany(x => x.RelatedItems)
        .Access.Property()
        .PropertyRef("Code")
        .KeyColumn("Part_Id");
}

public CourseRelatedMap()
{
    References(x => x.Course, "part_id");
    HasMany(x => x.RelatedCourses)
        .Access.Property()
        .KeyColumn("part_related_id");
        //.PropertyRef("part_related_id");
}
当我尝试查询相关课程时,这会为我生成正确的sql:

SELECT relatedite0_.Part_Id         as Part2_1_,
       relatedite0_.CourseRelatedId as CourseRe1_1_,
       relatedite0_.CourseRelatedId as CourseRe1_12_0_,
       relatedite0_.part_id         as part2_12_0_,
       relatedite0_.Type            as Type12_0_
FROM   OCT_Course_Related relatedite0_
WHERE  relatedite0_.Part_Id = '1632LGEE-ILT' /* @p0 */
但是NH在尝试将字符串转换为int时抛出了一个错误,所以我猜它正在尝试将relatedite0.Part_Id='1632LGEE-ILT'/*@p0*/转换为整数


如果您对此有任何帮助,将不胜感激。

请尝试将标识属性映射到您的实体。 像这样的课程地图

Id(x => x.Id).Column("courseid")

我不知道这是否行得通,因为我不确定我是否完全理解您的型号

谢谢。它们被映射。为了简洁起见,我把它们去掉了。也许我应该展示整个映射类。