流利的Nhibernate,Subclass,ManyToMany.表中的关联引用了未映射的类

Jon*_*ard 2 c# nhibernate fluent-nhibernate

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

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

要么

FloorplanObject(基类)

几何(子类)

展位(SubSubclass) - <ExhibitorStand> - 参展商

基类:

public class FloorplanObject
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

基类映射:

class FloorplanObjectMap : ClassMap<FloorplanObject>
{
    public FloorplanObjectMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);              
    }
}
Run Code Online (Sandbox Code Playgroud)

子类:

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

    public Geometry()
    {
        Positions = new List<float>();
    }
}
Run Code Online (Sandbox Code Playgroud)

子类映射:

public class GeometryMap : SubclassMap<Geometry>
{
    public GeometryMap()
    {
        Map(x => x.Positions);
    }
}
Run Code Online (Sandbox Code Playgroud)

(子)子类:

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

    public Stand()
    {
        HasExhibitors = new List<Exhibitor>();
    }
}
Run Code Online (Sandbox Code Playgroud)

(子)子类映射:

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

其他类:

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>();
    }
}
Run Code Online (Sandbox Code Playgroud)

其他类映射:

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

在使用上述映射初始化ISession时,我收到以下错误:

NHibernate.MappingException:表ExhibitorStand中的关联引用了一个未映射的类:Stand

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

Jon*_*ard 10

噢亲爱的.什么假人:

class FloorplanObjectMap : ClassMap<FloorplanObject>
{
    public FloorplanObjectMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);              
    }
}
Run Code Online (Sandbox Code Playgroud)

应该:

public class FloorplanObjectMap : ClassMap<FloorplanObject>
{
    public FloorplanObjectMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);              
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你浪费时间阅读这篇文章,请道歉.第一个......:/