两个聚集的根源在流利的nhibernate

时间:2011-03-15 14:21:40

标签: fluent-nhibernate many-to-many aggregateroot mappings

问题是我有两个聚合根

聚合根源

  1. 项目。
  2. NewsArticle。
  3. 项目可以拥有相关新闻文章的集合。 新闻文章可以包含相关项目的集合。


    要求是:

    1. 用户可以从项目中添加多个NewsArticle。
    2. 用户可以从NewsArticles中添加一些Project。

    3. 在数据库中。

      NewsArticle - * NewsArticleProject * - Project。


      在映射中

      新闻文章方面

      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 :(得分:0)

尝试并在“NewsArticle”上使用Inverse()来保存双方的责任。

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