映射抽象类,应该在抽象类或子类中映射公共属性

本文关键字:映射 抽象类 属性 子类 | 更新日期: 2023-09-27 18:00:58

我有ArticleBase,它由ArticleComputerArticleCar继承。我使用的是带有鉴别器值的nhibernate继承映射。一切都在运行,但我有dilema,因为ArticleBase有属性Tags,我应该在ArticleBaseMap类中映射这个属性,还是应该留给子类来映射这个公共属性。

我想它应该映射到抽象基类中,但我想听听有经验的用户的意见。

感谢

映射抽象类,应该在抽象类或子类中映射公共属性

这里的答案非常简单:

  • 如果属性在ArticleBase(鉴别器列所在(上可用,将其映射到那里
  • 如果列属于子表(例如ArticleComputer(,则它属于子映射

因此,列所在的位置。。应该是映射

它实际上并不意味着:在哪里声明(base,interface(。原因可能是,在C#中,我们在基本实现中做了一些常见的事情,而一些子级(出于任何原因(不能将其作为映射的一部分(它只是虚拟的(

即:我们应该将其映射到列所在的位置。没有别的。然后,如果我们要重复将其映射到所有子上的所有位置(因为列是在那里声明的(

改变数据库的设计。将其从子表移回父表。