如何在NHibernate中设置属性的属性

时间:2009-07-02 07:25:47

标签: c# nhibernate properties

如何使用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新手出去吗?

1 个答案:

答案 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);
});