C# Don';子类中的t映射属性

C# Don';子类中的t映射属性,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,是否可以告诉Fluent NHibernate不要在父类的类映射中定义的子类映射中映射属性?因此: public class ParentMap : ClassMap<Parent> { public ParentMap() { this.Map(x => x.Id); this.HasManyToMany(x => x.Somethings) .Table("ParentSomethings")

是否可以告诉Fluent NHibernate不要在父类的
类映射中定义的
子类映射中映射属性?因此:

public class ParentMap : ClassMap<Parent>
{
    public ParentMap()
    {
        this.Map(x => x.Id);
        this.HasManyToMany(x => x.Somethings)
            .Table("ParentSomethings")
            .ParentKeyColumn("ParentId")
            .ChildKeyColumn("SomethingId");
        this.DiscriminateSubClassesOn("Foo");
    }
}

public class ChildMap : SubclassMap<Child> // with Child : Parent
{
    this.DiscriminatorValue("Child");
    this.DontMap(x => x.Somethings); // fictional method
}
公共类父映射:类映射
{
公共ParentMap()
{
this.Map(x=>x.Id);
this.HasManyToMany(x=>x.something)
.Table(“parentsomething”)
.ParentKeyColumn(“ParentId”)
.ChildKeyColumn(“SomethingId”);
此项。区分子类别(以下简称“Foo”);
}
}
公共类ChildMap:子类Map//子类:父类
{
这是鉴别器值(“儿童”);
this.DontMap(x=>x.Somethings);//虚构的方法
}

如果您需要这样做,那么您的映射是错误的,您需要创建一个到父级的类映射,并且不映射此属性“something”,并为子级创建两个不同的映射,一个包含“something”属性,另一个不包含。

这会打破Liskov原则吗?如果没有正确的(预期的)映射,您如何将
子对象作为父对象处理呢?@RadimKöhler
子对象
中的
Somethings
以非数据库方式处理,但需要用于
父对象
,但我需要能够执行
Query()
以同时获取
父对象
子对象
s。所以就代码而言,LSP没有被破坏。你的地图错了
ChildMap
需要扩展
Subclass Map
@LucasAbilidebob Ah打字错误,感谢您指出。谢谢,但我收到错误“无法解析符号'IgnoreProperty'”,因此我编辑了我的答案,验证是否有可能更改您的映射。是的,我认为我需要走这条路。谢谢