Свободная проблема отображения наследования NHibernate - PullRequest
2 голосов
/ 12 ноября 2009

Я использую Fluent NHibernate с отображением наследования таблиц на подклассы. Я хочу сослаться на список конкретных объектов, но не могу понять, как ограничить результат объектами одного определенного класса. </p> <pre><code>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; }

Может кто-нибудь мне помочь? Пожалуйста, извините за мой плохой английский.

1 Ответ

1 голос
/ 12 ноября 2009

Я не специалист в Fluent NH, но мне кажется, что ваша личная карта должна выглядеть так:

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<Cat>(c => c.Cats);
        HasMany<Dog>(c => c.Dogs);
    }
}

Поскольку у вас есть свойство Dogs, представляющее собой IList, а не IList, и наоборот, то же самое для кошек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...