我正在处理数据库模式是错误的......不太理想。该域名涉及课程。课程有先决条件和相关课程。在DB模式是财产以后这样的:建模三元关系
课程 courseid - 诠释 代码-varchar
related_courses PART_NUMBER VARCHAR related_part_number VARCHAR int类型
正如你可能已经猜到了,当然和相关课程表没有连接到课程pk,而是代码栏。然后,关系类型由related_course中的类型列定义。
我很想在课程对象中列出必备条件列表和相关课程列表,但我一直没有这么做。我现在试图将相关项目与课程进行匹配,然后过滤该类型。那也行不通。
这是我当前的课程和course_related的映射。
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,所以我m猜测它试图将relatedite__Part_Id ='1632LGEE-ILT'/ * @ p0 * /转换为整数。
任何帮助与此将不胜感激,
感谢。他们被映射。为了简洁,我只是删除了它们。也许我应该展示整个映射类。 – 2010-11-18 18:01:39