c# - 流利的 Nhibernate,子类,ManyToMany。表中的关联引用未映射的类

标签 c# nhibernate fluent-nhibernate

我正在使用 Fluent(1.1.0) NHibernate(2.1.2),并且我有一个(子)子类,其中包含对另一个类的多对多引用:

(Sub)子类--<交叉表>--其他类

FloorplanObject(基类)

几何(子类)

展台(子子类)--< ExhibitorStand >-- 参展商

基类:

public class FloorplanObject
{
    public int Id { get; set; }
    public string Name { get; set; }
}

基类映射:

class FloorplanObjectMap : ClassMap<FloorplanObject>
{
    public FloorplanObjectMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);              
    }
}

子类:

public class Geometry : FloorplanObject
{
    public virtual List<float> Positions { get; set; }

    public Geometry()
    {
        Positions = new List<float>();
    }
}

子类映射:

public class GeometryMap : SubclassMap<Geometry>
{
    public GeometryMap()
    {
        Map(x => x.Positions);
    }
}

(子)子类:

public class Stand : Geometry
{
    public virtual string StandNumber { get; set; }
    public virtual List<Exhibitor> HasExhibitors { get; set; }

    public Stand()
    {
        HasExhibitors = new List<Exhibitor>();
    }
}

(子)子类映射:

public class StandMap : SubclassMap<Stand>
{
    public StandMap()
    {
        Map(x => x.StandNumber);
        HasManyToMany(x => x.HasExhibitors)
            .Cascade.All()
            .Inverse()
            .Table("ExhibitorStand");
    }
}

其他类:

public class Exhibitor
{
    public virtual int Id { get; private set; }
    public virtual string Name { get; set; }

    public virtual List<Stand> OnStands { get; set; }

    public Exhibitor()
    {
        OnStands = new List<Stand>();
    }
}

其他类映射:

public class ExhibitorMap : ClassMap<Exhibitor>
{
    public ExhibitorMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        HasManyToMany(x => x.OnStands)
            .Cascade.All()
            .Table("ExhibitorStand");
    }
}

在使用上述映射初始化 ISession 时,出现以下错误:

NHibernate.MappingException: An association from the table ExhibitorStand refers to an unmapped class: Stand

有人知道我在这里做错了什么吗?

最佳答案

亲爱的。真是个假人:

class FloorplanObjectMap : ClassMap<FloorplanObject>
{
    public FloorplanObjectMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);              
    }
}

应该是:

public class FloorplanObjectMap : ClassMap<FloorplanObject>
{
    public FloorplanObjectMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);              
    }
}

如果您浪费时间阅读这篇文章,我们深表歉意。第一个也是……:/

关于c# - 流利的 Nhibernate,子类,ManyToMany。表中的关联引用未映射的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3960760/

相关文章:

NHibernate 和延迟加载 : how to get only few rows from the collection?

mysql - 流畅的 Nhibernate 查询执行速度非常慢(数据库托管在本地主机上)

c# - 流畅的NHibernate批量数据插入

c# - 如何在 Blazor WebAssembly-PWA 中将本地数据同步到服务器?

c# - WPF Canvas 无法在 XP 上渲染以编程方式添加的子项

c# - 为什么在 4 月份从一体化代码框架中删除了所有 C# Shell 扩展示例?

nhibernate - NHibernate SessionFactory 线程安全吗

c# - 将动态数据绑定(bind)到 rowdetails 模板内的 wpf datagrid

nhibernate - NHibernate 中的 Configuration.AddAssembly ("") 有什么作用?

c# - FluentNhibernate - 已添加时尝试添加多对一 'Document'