Я использую Fluent NHibernate с таблицей для сопоставления наследования подкласса. Я хочу ссылаться на список конкретных объектов, но я не могу понять, как вывести результат на объекты одного определенного класса. Проблема с отображением наследования NHibernate Fluent
class PetMap : ClassMap<Pet>
{
public PetMap()
{
Id(c => c.ID).GeneratedBy.Identity();
}
}
class DogMap : ClassMap<Dog>
{
public DogMap()
{
Mac(c => c.DogSpecificProperty);
}
}
class CatMap : SubclassMap<Cat>
{
public CatMap()
{
Mac(c => c.CatSpecificProperty);
}
}
class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Id(c => c.ID).GeneratedBy.Identity();
//this works fine
HasMany(c => c.Pets);
//this dosen't work, because the result contains dogs and cats
//how can I tell NHibernate to only fetch dogs or cats?
HasMany<Pet>(c => c.Cats);
HasMany<Pet>(c => c.Dogs);
}
}
class Pet
{
int ID;
}
class Dog : Pet
{
object DogSpecificProperty;
}
class Cat : Pet
{
object CatSpecificProperty;
}
class Person
{
int ID;
IList<Pet> Pets;
IList<Dog> Dogs;
IList<Cat> Cats;
}
Может ли кто-нибудь мне помочь? Пожалуйста, извините мой бедный английский.
HasMany(c => c.Cats)
Это выглядит немного глупо, но я думаю, что это правильно, потому что таблица Pet имеет ссылку на таблицу Person. Я получаю это решение из другого вопроса переполнения стека. Мне кажется, что HasMany@trichterwolke, если вы говорите, что классы Cat и Dog на самом деле происходят из таблицы Pet в вашей БД, тогда я бы подумал, что вы скажете это в CatMap и DogMap, а не в PersonMap. Я считаю, что именно так я и делал это в прошлом при использовании FNH. – Joseph