我正在处理一个错误的数据库模式......不太理想。该域名涉及课程。这些课程有先决条件和相关课程。 db模型是这样的:
课程 courseid -int code -varchar
related_courses part_number varchar related_part_number varchar 输入int
正如您可能已经猜到的那样,课程和相关课程表不是通过课程pk连接,而是代码列。然后,关系类型由related_course中的type列定义。
我希望在课程对象中列出一系列先决条件和相关课程列表,但我没有成功。我现在正试图将课程与相关项目匹配,然后过滤类型。这也不起作用。
这是我当前的课程和课程相关的映射。
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 * /转换为整数。
非常感谢任何帮助,
答案 0 :(得分:0)
尝试将Identity属性映射到您的实体。 对于CourseMap这样的东西
Id(x => x.Id).Column("courseid")
我不知道是否会这样做,因为我不确定我是否完全理解你的模型