У меня есть следующий код сопоставления для моего Wrapper-Class:
public class ActiveModuleMapping : ClassMap<ActiveModule>
{
public ActiveModuleMapping()
{
CompositeId().KeyProperty(x => x.ModuleID, "suite_activeModuleModuleID").KeyProperty(x => x.CityID, "suite_activeModuleCityID").Mapped();
Id(x => x.ActiveModuleID).Column("suite_activeModuleID");
HasOne(x => x.Module);
HasMany(x => x.ModifierList).Table("suite_activemodifier").KeyColumns.Add("suite_modifiersModuleID", "suite_modifiersCityID").Cascade.All().Not.LazyLoad();
Table("suite_activemodule");
}
}
Это мой базовый класс модуля:
public class ModuleMapping : ClassMap<Module>
{
public ModuleMapping()
{
Id(x => x.ModuleID).Column("suite_availableModulesID");
Map(x => x.ModuleName).Column("suite_availableModulesName").Not.LazyLoad();
Map(x => x.CanOpen).Column("suite_availableModulesCanOpen").Not.LazyLoad();
Map(x => x.CanConfigure).Column("suite_availableModulesCanConfigure").Not.LazyLoad();
Table("suite_modules");
}
}
А это моё отображение-модификатор:
public class ActiveModifierMapping : ClassMap<ActiveModifier>
{
public ActiveModifierMapping()
{
CompositeId().KeyProperty(x => x.ModuleID, "suite_modifiersModuleID").KeyProperty(x => x.CityID, "suite_modifiersCityID");
Table("suite_activemodifier");
}
}
Теперь у меня две проблемы:
- Я получаю сообщение о том, что
type Int64 expects 1 columns, but 2 were mapped
для команды HasOne(x => x.Module);
- Команда HasMany должна отображать список пользовательских объектов, но возвращает только пустой список.
Объяснение для:
- Модуль-класс имеет простой столбец идентификатора, так как это базовый объект без составного идентификатора.
- На самом деле в БД есть 5 строк, которые должны соответствовать составному идентификатору и по-прежнему не отображаются правильно.
Как я могу использовать HasOne с сопоставлениями, имеющими разные Id-созвездия, и почему мое сопоставление не загружает ModifierList, даже если существуют существующие комбинации?