C# Don';子类中的t映射属性
是否可以告诉Fluent NHibernate不要在父类的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")
类映射中定义的子类映射中映射属性?因此:
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'”,因此我编辑了我的答案,验证是否有可能更改您的映射。是的,我认为我需要走这条路。谢谢