Fluent-NHibernate继承映射问题

Fluent-NHibernate继承映射问题,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我正在使用Fluent NHibernate和每个子类的表继承映射。 我想引用特定对象的列表,但我不知道如何将结果重新映射到一个特定类的对象。 classpetmap:ClassMap { 公共地图() { Id(c=>c.Id).GeneratedBy.Identity(); } } 类地图:类地图 { 公共地图() { Mac(c=>c.DogSpecificProperty); } } 类CatMap:子类map { 公共CatMap() { Mac(c=>c.CatSpecificPr

我正在使用Fluent NHibernate和每个子类的表继承映射。 我想引用特定对象的列表,但我不知道如何将结果重新映射到一个特定类的对象。

classpetmap:ClassMap
{
公共地图()
{
Id(c=>c.Id).GeneratedBy.Identity();
}
}
类地图:类地图
{
公共地图()
{
Mac(c=>c.DogSpecificProperty);
}
}
类CatMap:子类map
{
公共CatMap()
{
Mac(c=>c.CatSpecificProperty);
}
}
类PersonMap:ClassMap
{
公众人物地图()
{  
Id(c=>c.Id).GeneratedBy.Identity();
//这个很好用
有很多宠物(c=>c.Pets);
//这不起作用,因为结果包含狗和猫
//我怎么能告诉NHibernate只去接狗或猫?
有许多猫(c=>c.Cats);
有很多(c=>c.狗);
}
}
等级宠物
{ 
int-ID;
}
类别:宠物狗
{
客体属性;
}
类别猫:宠物
{
对象属性;
}
班主任
{
int-ID;
宠物;
爱犬;
猫科动物;
}

有人能帮我吗?请原谅我的英语不好。

我不是流利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);
    }
}
classpersonmap:ClassMap
{
公众人物地图()
{  
Id(c=>c.Id).GeneratedBy.Identity();
//这个很好用
有很多宠物(c=>c.Pets);
//这不起作用,因为结果包含狗和猫
//我怎么能告诉NHibernate只去接狗或猫?
有许多猫(c=>c.Cats);
有很多(c=>c.狗);
}
}

因为您是Person,所以有一个Dogs属性,它是IList而不是IList,反过来,猫也是如此。

有很多(c=>c.Cats)
这看起来有点愚蠢,但我认为它是正确的,因为Pet表引用了Person表。我从另一个堆栈溢出问题得到这个解决方案。在我看来,HasMany(c=>c.Cat)与HasMany(c=>c.Cat).KeyColumn(“PetID”)的作用是一样的。在这两种情况下,我都会得到猫和狗的结果。@trichterwolke如果你说猫和狗类实际上来自数据库中的宠物表,那么我认为你会在猫和狗图中这样说,而不是在人图中。我相信这就是我过去使用FNH时所做的。
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);
    }
}