Я использую 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 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>();
}
}
(Sub) Отображение подкласса:
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");
}
}
При инициализации сеанса IS с приведенными выше сопоставлениями я получаю следующую ошибку:
NHibernate.MappingException: ассоциация из таблицы ExhibitorStand ссылается на не отображенный класс: Stand
Кто-нибудь знает, что я здесь делаю не так?