【问题标题】:Convert inherited NHibernate-Object to another Objects which inherits from the same base将继承的 NHibernate-Object 转换为从同一基础继承的另一个对象
【发布时间】:2011-06-30 18:45:35
【问题描述】:
我有闲置的 NHibernate-Objects:
Person 继承自 Contact
公司继承自 Contact
共有三个表:Contact、Person、Company。
每个表都有一个 Guid 类型的列 ID。
现在,我正在寻找将 Person 对象转换为 Company 对象的最简单方法。具体来说,联系人记录应该保留,个人记录应该被删除,而是应该在公司中创建一个新记录,我在其中写入一些值。
【问题讨论】:
标签:
c#
nhibernate
inheritance
type-conversion
【解决方案1】:
在 Company 上创建一个接受 Person 并映射属性的构造函数:
public Company(Person person)
{
// map properties from person to company
}
用法:
var company = new Company(person);
// set additional properties
session.Delete(person);
session.Save(company);
session.Flush();
【解决方案2】:
我建议您查看 nhibernates 鉴别器逻辑,看看这是否是您想要使用的。让我知道这是否适合您.. 一个小小的谷歌应该会有所帮助.. 晚上坐下来解释它的工作原理有点懒惰。
谢谢,