0

問題は、2 つの集計ルートがあることです

集約ルートは

  1. 計画。
  2. ニュース記事。

プロジェクトは、関連する NewsArticle のコレクションを持つことができます。NewsArticle は、関連するプロジェクトのコレクションを持つことができます。


要件は次のとおりです。

  1. ユーザーは、プロジェクトから多数の NewsArticle を関連付けることができます。
  2. ユーザーは、NewsArticles から多数のプロジェクトを関連付けることができます。

データベース内。

NewsArticle --* NewsArticleProject *-- プロジェクト。


マッピングで

ニュース記事面

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' の反対側がどうあるべきかわかりません。

誰かが解決策を考え出すのを手伝ってくれるなら、事前に感謝します。

4

1 に答える 1

0

「NewsArticle」でも Inverse() を使用して、保存の責任を両側に与えるようにしてください。

public void Override(AutoMapping<NewsArticle> mapping)
{
  mapping.HasManyToMany(c => c.FeaturedProjects).Cascade.All().Table("NewsArticleProject").Inverse().AsSet();
}
于 2011-06-05T13:32:05.860 に答える