流利的nHibernate-映射问题

时间:2019-04-14 11:56:02

标签: c# nhibernate fluent-nhibernate fluent-nhibernate-mapping

我的包装器类具有以下映射代码:

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的{​​{1}}
  2. HasMany-Command应该映射一个自定义对象列表,但只返回一个空列表。

说明:

  1. 模块类具有一个简单的ID列,因为它是基础对象,没有复合ID。
  2. 数据库中实际上有5行应与Composite-ID相匹配,但仍未正确映射。

如何将HasOne与具有不同ID星座的映射一起使用?为什么即使存在现有组合,映射也不会加载ModifierList?

0 个答案:

没有答案