Ассоциация один-ко-многим - PullRequest
       27

Ассоциация один-ко-многим

0 голосов
/ 15 октября 2011

У меня такая простая модель:

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; }
}

Тогда у меня есть такие отображения:

BLOG

<?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" />
  <!-- components/columns -->
  <!-- associations -->
  <set name="Posts" cascade="all">
     <!-- key column? -->       
  </set>
  </class>
</hibernate-mapping>

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>

Как мне сопоставить ассоциацию «один ко многим» (однонаправленную)?

Спасибо!

Ответы [ 2 ]

1 голос
/ 15 октября 2011

В файле отображения блога вам нужно определить отношение one-to-many между столбцом внешнего ключа, который ссылается на сущность Blog в таблице записей, скажем, что это BlogId, и вам нужно сказать им, какой класс этототношение-ко-многим относится, в вашем случае это будет класс Post, и вам нужно определить его с помощью полностью определенного пространства имен, содержащего этот класс и запятую, а затем имя сборки следующим образом:

<set name="Posts" table="Post">
  <key column="BlogId"/>
  <one-to-many class="Application.Domain.Entities.Post, Application.Domain"/>
</set>
1 голос
/ 15 октября 2011

Я думаю, что это та же проблема, что и описанная здесь .

А также, я думаю, у вас есть ошибка в отображении имени класса Post - не должно быть Blog.Кроме того, в вашем примере нет никакой связи между публикацией и блогом.

...