如何使用NHibernate设置属性的属性?
这是一个例子(只是一个例子!)
public class Person
{
private FullName _subClassProperty = new FullName();
public FullName Name
{
get { return _subClassProperty; }
set { return _subClassProperty; }
}
}
public class FullName
{
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
}
Person 被序列化为如下所示的数据库表:
table Person {
FirstName varchar,
LastName varchar
}
我想为 Person 类编写一个映射文件,以便NHibernate在序列化/反序列化Person时访问Person的FullName属性的FirstName和LastName属性。我不希望NHibernate实例化FullName类 - Person类仍然应该负责实例化FullName类。
我怀疑使用IPropertyAccessor是可行的,但是我找不到很多关于如何实现这一目标的文档。有人可以帮NHibernate新手出去吗?
答案 0 :(得分:2)
对于我来说,这看起来像NHibernate组件的经典用例。如果您使用XML进行映射,请执行以下操作:
<component name="FullName" class="YourNamespace.FullName, YourAssembly">
<property name="FirstName" type="String" />
<property name="LastName" type="String" />
</component>
如果您正在使用Fluent:
Component(p => p.FullName, m =>
{
m.Map(p => p.FirstName);
m.Map(p => p.LastName);
});