在NHibernate中映射嵌套类的XML语法是什么?

Dan*_*yes 2 .net nhibernate orm nested-class

假设您有以下类定义:

public class SomeEntity
{
    public class Key
    {
        public virtual OtherEntity Other { get; set; }
        public virtual int Index { get; set; }

        public override bool Equals(object other)
        {
            // something here...
        }

        public override int GetHashCode()
        {
            // something here...
        }
    }

    public virtual Key Id { get; set; }
}

public class OtherEntity
{
    public virtual int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后你想要一个类似于下面的映射文件:

<class name="SomeEntity" table="SOME">

  <composite-id name="Id" class="SomeEntity.Key">
    <key-many-to-one name="Other" column="OTHER_ID" class="OtherEntity" />
    <key-property name="Index" column="INDEX" type="int" />
  </composite-id>

</class>

<class name="OtherEntity" table="OTHER">

  <id name="Id" column="ID" type="int">
    <generator class="identity" />
  </id>

</class>
Run Code Online (Sandbox Code Playgroud)

试图初始化NHibernate导致NHibernate.MappingException被抛出,"无法找到类:SomeEntity.Key"的消息.最有可能的问题是class="SomeEntity.Key"属性.我无法找到引用嵌套类的正确语法.

另外我想得到一个提示我应该在哪里寻找答案(例如,我在"NHibernate in Action"一书中找不到答案).关于NHibernate这类问题的首选资源是什么?

Die*_*hon 5

您必须对内部类使用CLR语法:

<composite-id name="Id" class="SomeEntity+Key">
...
Run Code Online (Sandbox Code Playgroud)