Nhibernate一对多关联

Nhibernate一对多关联,nhibernate,nhibernate-mapping,associations,one-to-many,Nhibernate,Nhibernate Mapping,Associations,One To Many,我有这样一个简单的模型: public abstract class Entity { public virtual Guid Id { get; protected set; } } public class Post : Entity { public String Title { get ; set; } public String Content { get; set; } public DateTime Timestamp { get; set; }

我有这样一个简单的模型:

public abstract class Entity
{
    public virtual Guid Id { get; protected set;  }
}

public class Post : Entity
{
    public String Title { get ; set; }
    public String Content { get; set; }
    public DateTime Timestamp { get; set; }
    public Byte[] Thumbnail { get; set; }
}

public class Blog : Entity
{   
    public String Title { get; set; }
    public ISet<Post> Posts { get; set; }
}
POST

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true" assembly="Application.Domain" namespace="Application.Domain.Entities">
  <class name="Blog">
    <!-- id generator -->
    <id name="Id">
      <generator class="guid.comb" />
    </id>
    <!-- properties/columns -->
    <property name="Title" not-null="true" />
    <property name="Content" not-null="true" />
    <property name="Timestamp" not-null="true"/>
    <property name="Thmbnail" />
    <!-- components/columns -->
    <!-- associations -->
  </class>
</hibernate-mapping>

如何映射一对多关联(单向)


谢谢

我认为这与描述的问题相同


而且,我认为您在映射后类名时犯了一个错误,不应该是Blog。此外,在您的示例中,Post与Blog之间没有关系。

在Blog映射文件中,您需要在引用Post表中
Blog
实体的外键列之间定义一个
一对多
关系,并告诉他们该一对多关系与哪个类相关,在您的情况下,这将是
Post
类,您需要使用它的完全限定命名空间来定义它,该命名空间包含该类和一个逗号,然后是程序集名称,如下所示:

<set name="Posts" table="Post">
  <key column="BlogId"/>
  <one-to-many class="Application.Domain.Entities.Post, Application.Domain"/>
</set>

<set name="Posts" table="Post">
  <key column="BlogId"/>
  <one-to-many class="Application.Domain.Entities.Post, Application.Domain"/>
</set>