Свободное владение nHibernate - проблема с отображением - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть следующий код сопоставления для моего 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");

    }
}

Теперь у меня две проблемы:

  1. Я получаю сообщение о том, что type Int64 expects 1 columns, but 2 were mapped для команды HasOne(x => x.Module);
  2. Команда HasMany должна отображать список пользовательских объектов, но возвращает только пустой список.

Объяснение для:

  1. Модуль-класс имеет простой столбец идентификатора, так как это базовый объект без составного идентификатора.
  2. На самом деле в БД есть 5 строк, которые должны соответствовать составному идентификатору и по-прежнему не отображаются правильно.

Как я могу использовать HasOne с сопоставлениями, имеющими разные Id-созвездия, и почему мое сопоставление не загружает ModifierList, даже если существуют существующие комбинации?

...