繁体   English   中英

使用nHibernate存储行为类

[英]Store behavior class with nHibernate

我想知道是否有一种方法如何仅将具有行为的类存储到具有nHibernate的数据库中。 我的意思是。 我有一个使用装饰器模式的解决方案,类似于类图 在此处输入图片说明

这是我要解决的问题。 我有一个ClassWithStoredBehaviorInProperty类,并具有DesiredBehavior类型的IBehavior属性。 我在其他地方混合行为fe var beh = new FlyBehavior(new WalkBehavior(new BatmanBehavior))并将其存储在DesiredBehavior属性中。 这是我的问题。 有什么方法可以使用nHibernate将其存储在数据库中,然后正确加载它,或者我必须做一些解决方法。 如果有可能,如何绘制? 谢谢

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM