NHibernate:在多个物理数据模型之间动态交换单个域模型

NHibernate:在多个物理数据模型之间动态交换单个域模型,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,在中,Ayende描述了如何将单个域模型映射到多个物理数据模型。是否可以扩展此原则,以便可以动态选择映射 例如,假设我们有一个实体,根据它的当前状态,它可以通过三种方式写入同一个物理模式,让我们假设,不管状态如何,每个实体都有一个唯一的标识符 一种解决方案是用三个单独的类来表示处于不同状态的实体:每个映射对应一个类。然后可以加载实体,为了更改其状态,可以将实体映射到表示其其他状态之一的类,然后使用不同的映射将其保存回模式 我想知道是否有可能由一个持有状态标志(有点像一个鉴别器)的类来表示相同的实

在中,Ayende描述了如何将单个域模型映射到多个物理数据模型。是否可以扩展此原则,以便可以动态选择映射

例如,假设我们有一个实体,根据它的当前状态,它可以通过三种方式写入同一个物理模式,让我们假设,不管状态如何,每个实体都有一个唯一的标识符

一种解决方案是用三个单独的类来表示处于不同状态的实体:每个映射对应一个类。然后可以加载实体,为了更改其状态,可以将实体映射到表示其其他状态之一的类,然后使用不同的映射将其保存回模式

我想知道是否有可能由一个持有状态标志(有点像一个鉴别器)的类来表示相同的实体,并且任何保存到模式的操作都会根据状态标志的值选择适当的映射

希望这是有意义的


非常感谢。

即使可能,我认为这不是一个好主意。这基本上是相同的问题,在问,我同意的答案张贴在那里。基本上,保持简单,并在单个映射类中建模您的状态。

谢谢您的回复。在我看来,如果这是可能的话,那么它会更干净。我只是想澄清一下:我不是在更改实体的类型(如果不可能,我将需要这样做),而是在更改它的持久化方式。这是对象模型不应该关心的事情,需要有多个类来表示同一个实体会污染对象模型。您用不同的类表示同一事物的不同状态。IMO根据内部状态有效地更改实体类型。我不建议这样做,特别是因为你有一个更简单的解决方案,它只是用普通属性,甚至是一些
关系来表示状态?