Nhibernate 三元关系建模
我正在处理一个错误的数据库模式。。。不太理想。该领域涉及课程。课程包括先修课程和相关课程。db模型是这样的: 课程 courseid-int 代码-varchar 相关课程 零件号varchar 相关零件号varchar int型 正如您可能已经猜到的,课程和相关课程表并没有连接到课程pk,而是连接到代码列。然后,关系的类型由相关课程中的“类型”列定义 我希望在我的课程目标中有一份先修课程和相关课程的清单,但我一直没有成功。我现在尝试将课程与相关项目进行匹配,然后根据类型进行筛选。这也行不通 这是我目前对课程和课程相关课程的映射Nhibernate 三元关系建模,nhibernate,Nhibernate,我正在处理一个错误的数据库模式。。。不太理想。该领域涉及课程。课程包括先修课程和相关课程。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")
我不知道这是否行得通,因为我不确定我是否完全理解您的型号谢谢。它们被映射。为了简洁起见,我把它们去掉了。也许我应该展示整个映射类。