C# 使用nHibernate存储行为类

C# 使用nHibernate存储行为类,c#,nhibernate,C#,Nhibernate,我想知道是否有一种方法可以将仅具有行为的类存储到nHibernate数据库中。 我的意思是。我有一个解决方案,我使用了decorator模式,类似于类图 这是我试图解决的问题。我有一个类ClassWithStoredBehaviorInProperty,并且有一个类型为IBehavior的属性DesiredBehavior。在其他地方,我混合了行为f.e.var beh=new FlyBehavior(new WalkBehavior(new BatmanBehavior))并将其存储在Des

我想知道是否有一种方法可以将仅具有行为的类存储到nHibernate数据库中。 我的意思是。我有一个解决方案,我使用了decorator模式,类似于类图


这是我试图解决的问题。我有一个类
ClassWithStoredBehaviorInProperty
,并且有一个类型为
IBehavior
的属性
DesiredBehavior
。在其他地方,我混合了行为f.e.
var beh=new FlyBehavior(new WalkBehavior(new BatmanBehavior))
并将其存储在
DesiredBehavior
属性中。这是我的问题。有没有办法用nHibernate将其存储在数据库中,然后正确加载,或者我必须做一些变通。如果可能,如何绘制地图?谢谢

您可以使用NHibernate处理的分层数据结构。从数据库的角度来看,Decorator模式只是一个层次结构,其中只有一个子节点而不是集合。这里有一些介绍性的信息


因此,您可以使用“每类一表的层次结构”方法非常轻松地映射同一层次结构的子类,其中每个装饰器成为表中的一行,并指向一个内部装饰器。在表中使用鉴别器列,因此当从数据库检索时,NHibernate知道需要实例化什么类型的类。显然,实现与每个装饰器相关的特定行为的“代码”不会存在于数据库中

您可以使用NHibernate处理的分层数据结构。从数据库的角度来看,Decorator模式只是一个层次结构,其中只有一个子节点而不是集合。这里有一些介绍性的信息

因此,您可以使用“每类一表的层次结构”方法非常轻松地映射同一层次结构的子类,其中每个装饰器成为表中的一行,并指向一个内部装饰器。在表中使用鉴别器列,因此当从数据库检索时,NHibernate知道需要实例化什么类型的类。显然,实现与每个装饰器相关的特定行为的“代码”不会存在于数据库中