два агрегатных корня в беглом nhibernate - PullRequest
0 голосов
/ 15 марта 2011

Проблема в том, что у меня есть два совокупных корня

Совокупные корни *

  1. Project.
  2. NewsArticle.

Проект может иметь коллекцию связанных NewsArticle.NewsArticle может иметь коллекцию связанных проектов.


Требования следующие:

  1. Пользователь может назначить несколько NewsArticle из проектов.
  2. Пользователь может связать несколько проектов из NewsArticles.

В базе данных.

NewsArticle - * NewsArticleProject * - Project.


В сопоставлениях

NewsArticle сторона

public void Override(AutoMapping<NewsArticle> mapping)
{
mapping.HasManyToMany(c => c.FeaturedProjects).Cascade.All().Table("NewsArticleProject").AsSet();
}

сторона проекта

public void Override(AutoMapping<Project> mapping)
{
mapping.HasManyToMany(c => c.FeaturedNewsArticles).Table("NewsArticleProject").Inverse().AsSet();
}

Я также попытался HasMany(), но это дает мне сообщение об ошибке с жалобой на ColumnNameкоторый я также установил.


Я изо всех сил пытаюсь получить свободное владение nHibernate для того, чтобы он хорошо играл в отображениях, чтобы он мог выполнить мои требования.

Мне удалось получить егоработать только для одной стороны, но когда я пытаюсь заставить его работать с другой стороной, я получаю это сообщение об ошибке.

Не могу понять, какая другая сторона свойства многие ко многим«FeaturedNewsArticles» должно быть.

Спасибозаранее, если кто-нибудь может помочь мне придумать решение.

1 Ответ

0 голосов
/ 05 июня 2011

Попробуйте и возложите ответственность за сохранение на обе стороны, используя Inverse () для "NewsArticle".

public void Override(AutoMapping<NewsArticle> mapping)
{
  mapping.HasManyToMany(c => c.FeaturedProjects).Cascade.All().Table("NewsArticleProject").Inverse().AsSet();
}
...