C# 流畅的纤维状,亚类,许多。表中的关联引用未映射的类

C# 流畅的纤维状,亚类,许多。表中的关联引用未映射的类,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,我正在使用Fluent(1.1.0)NHibernate(2.1.2),我有一个(子)子类,其中包含对另一个类的多对多引用: (子)子类----其他类 或 FloorplanObject(基类) 几何(子类) 展台(亚类)——参展商 基类: public class FloorplanObject { public int Id { get; set; } public string Name { get; set; } } 基类映射: class FloorplanObjec

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

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

FloorplanObject(基类)

几何(子类)

展台(亚类)——参展商

基类:

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 GeometryMap : SubclassMap<Geometry>
{
    public GeometryMap()
    {
        Map(x => x.Positions);
    }
}
public class StandMap : SubclassMap<Stand>
{
    public StandMap()
    {
        Map(x => x.StandNumber);
        HasManyToMany(x => x.HasExhibitors)
            .Cascade.All()
            .Inverse()
            .Table("ExhibitorStand");
    }
}
public class ExhibitorMap : ClassMap<Exhibitor>
{
    public ExhibitorMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        HasManyToMany(x => x.OnStands)
            .Cascade.All()
            .Table("ExhibitorStand");
    }
}
class FloorplanObjectMap:ClassMap
{
公共楼层平面ObjectMap()
{
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>();
    }
}
公共类几何图形:FloorplanObject
{
公共虚拟列表位置{get;set;}
公共几何()
{
位置=新列表();
}
}
子类映射:

class FloorplanObjectMap : ClassMap<FloorplanObject>
{
    public FloorplanObjectMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);              
    }
}
public class GeometryMap : SubclassMap<Geometry>
{
    public GeometryMap()
    {
        Map(x => x.Positions);
    }
}
public class StandMap : SubclassMap<Stand>
{
    public StandMap()
    {
        Map(x => x.StandNumber);
        HasManyToMany(x => x.HasExhibitors)
            .Cascade.All()
            .Inverse()
            .Table("ExhibitorStand");
    }
}
public class ExhibitorMap : ClassMap<Exhibitor>
{
    public ExhibitorMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        HasManyToMany(x => x.OnStands)
            .Cascade.All()
            .Table("ExhibitorStand");
    }
}
公共类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>();
    }
}
公共类展位:几何
{
公共虚拟字符串StandNumber{get;set;}
公共虚拟列表{get;set;}
公众看台()
{
HasExhibitors=新列表();
}
}
(子)子类映射:

class FloorplanObjectMap : ClassMap<FloorplanObject>
{
    public FloorplanObjectMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);              
    }
}
public class GeometryMap : SubclassMap<Geometry>
{
    public GeometryMap()
    {
        Map(x => x.Positions);
    }
}
public class StandMap : SubclassMap<Stand>
{
    public StandMap()
    {
        Map(x => x.StandNumber);
        HasManyToMany(x => x.HasExhibitors)
            .Cascade.All()
            .Inverse()
            .Table("ExhibitorStand");
    }
}
public class ExhibitorMap : ClassMap<Exhibitor>
{
    public ExhibitorMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        HasManyToMany(x => x.OnStands)
            .Cascade.All()
            .Table("ExhibitorStand");
    }
}
公共类标准图:子类标准图
{
公众站地图()
{
地图(x=>x.StandNumber);
HasManyToMany(x=>x.hasmenters)
.Cascade.All()
.Inverse()
.表格(“参展商展位”);
}
}
其他类别:

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>();
    }
}
公共级参展商
{
公共虚拟整数Id{get;private set;}
公共虚拟字符串名称{get;set;}
公共虚拟列表支持{get;set;}
公众参展商()
{
OnStands=新列表();
}
}
其他类映射:

class FloorplanObjectMap : ClassMap<FloorplanObject>
{
    public FloorplanObjectMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);              
    }
}
public class GeometryMap : SubclassMap<Geometry>
{
    public GeometryMap()
    {
        Map(x => x.Positions);
    }
}
public class StandMap : SubclassMap<Stand>
{
    public StandMap()
    {
        Map(x => x.StandNumber);
        HasManyToMany(x => x.HasExhibitors)
            .Cascade.All()
            .Inverse()
            .Table("ExhibitorStand");
    }
}
public class ExhibitorMap : ClassMap<Exhibitor>
{
    public ExhibitorMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        HasManyToMany(x => x.OnStands)
            .Cascade.All()
            .Table("ExhibitorStand");
    }
}
公共类参展商地图:类地图
{
公共参展商地图()
{
Id(x=>x.Id);
Map(x=>x.Name);
HasManyToMany(x=>x.OnStands)
.Cascade.All()
.表格(“参展商展位”);
}
}
使用上述映射初始化ISession时,我遇到以下错误:

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

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

哦,天哪。真是个傻瓜:

class FloorplanObjectMap : ClassMap<FloorplanObject>
{
    public FloorplanObjectMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);              
    }
}
class FloorplanObjectMap:ClassMap
{
公共楼层平面ObjectMap()
{
Id(x=>x.Id);
Map(x=>x.Name);
}
}
应该是:

public class FloorplanObjectMap : ClassMap<FloorplanObject>
{
    public FloorplanObjectMap()
    {
        Id(x => x.Id);
        Map(x => x.Name);              
    }
}
公共类FloorplanObjectMap:ClassMap
{
公共楼层平面ObjectMap()
{
Id(x=>x.Id);
Map(x=>x.Name);
}
}

如果你浪费时间读这篇文章,我向你道歉。第一个也是/

您的映射看起来是正确的,您的会话工厂初始化逻辑似乎出于某种原因没有拾取StandMap类。只需验证fluent.Configure()代码是否可以访问所有类映射。

这与我遇到的问题完全相同!而我,一点也不浪费时间……可能帮我节省了几个小时!