Я имею дело со схемой базы данных, которая ошибочна ... не идеально. Домен занимается курсами. Курсы имеют предпосылки и соответствующие курсы. Модель БД выглядит примерно так:
Курсы
конечно
код -varchar
related_courses
part_number varchar
related_part_number varchar
введите int
Как вы уже догадались, курс и связанная с ним таблица курсов не связаны с курсом pk, а столбцом кода. Тогда тип отношения определяется столбцом типа в related_course.
Мне бы хотелось иметь список предварительных условий и список связанных курсов в моем объекте курса, но я безуспешно делал это. Сейчас я пытаюсь сопоставить курс с соответствующими предметами, а затем отфильтровать по типу. Это тоже не работает.
Вот мое текущее отображение курса и курса.
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 * / в целое число.
Любая помощь с этим будет принята с благодарностью,