NHibernate映射类

时间:2014-03-12 10:28:48

标签: c# nhibernate

我是NHibernate的新手,需要帮助。我有两个班:

class Pop3
{
    public virtual long Id { set; get; }
    public virtual string HostName { set; get; }
    public virtual int Port { set; get; }
    public virtual bool UseSsl { set; get; }
}

class Email
{
    public virtual long Id { set; get; }
    public virtual string UserName { set; get; }
    public virtual string Password { set; get; }
    public virtual Pop3 Host { set; get; }
}

我需要将它们映射到NHibernate(使用Sqlite)。 使用Pop3类

很容易
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                  assembly="TestAsm"
                  namespace="TestAsm.Entity.Mail">

  <class name="Pop3" table="pop3hosts">
    <id name="Id">
      <generator class="identity" />
    </id>
    <property name="HostName" />
    <property name="Port" />
    <property name="UseSsl" />
  </class>

</hibernate-mapping>

但是我如何映射Email类包含Pop3类作为属性? 我需要在Host属性中设置Pop3.Id吗?但我认为这是错误的方式。

1 个答案:

答案 0 :(得分:1)

这个映射属于最基本的,典型的和有据可查的,我想说

一个示例,其中Pop3类与many-to-onePop3Id对齐{/ 1}}:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                  assembly="TestAsm"
                  namespace="TestAsm.Entity.Mail">

  <class name="Email" table="email_table">
    <id name="Id" generator="identity" />

    <property name="UserName" />
    <property name="Password" />

    <many-to-one name="Host" column="Pop3Id" class="Pop3 " />

  </class>

</hibernate-mapping>

请查看Chapter 21. Example: Parent/Child