将关联属性与 Entity Framework 结合使用

Use association properties with Entity Framework

我只是建立一个模型,你有新闻文章和它们所属的主题。这是一个简单的关联,但现在有点 "extended"。这些主题关联之一可以标记为 "mainTopic"。

我设置了 3 个表:

此外,我有这三个表的模型。我的关联模型设计如下:

[Table("avsn_content_topcis")]
public class TopicNewsModel
{
    [Key]
    [Column("assocId")]
    public int Id { get; set; }

    public NewsArticleModel NewsArticle { get; set; }

    public TopicModel Topic { get; set; }

    [Column("mainTopic")]
    public bool IsMainTopic { get; set; }
}

我的关系设置如下所示:

modelBuilder.Entity<NewsArticleModel>()
                    .HasMany(x => x.Topics)                        
                    .WithMany()
                    .Map(m => m.MapLeftKey("id")
                               .MapRightKey("topicId")
                               .ToTable("avsn_content_topics"));

我收到这个错误:

One or more validation errors were detected during model generation:

NewsArticleModelTopicNewsModel: Name: The EntitySet 'NewsArticleModelTopicNewsModel' with schema 'dbo' and table 'avsn_content_topics' was already defined. Each EntitySet must refer to a unique schema and table.

删除 ToTable 选项没有帮助,所以我在这里做错了什么?

好吧,发布后马上找到了答案。试图从绳索的另一端找出问题表明我必须从 TopicNewsModel 而不是 NewsModel 开始。

  modelBuilder.Entity<TopicNewsModel>()
                    .HasRequired(topicNews => topicNews.NewsArticle)
                    .WithMany(news => news.Topics)
                    .Map(m => m.MapKey("id"));

        modelBuilder.Entity<TopicNewsModel>()
                    .HasRequired(topicNews => topicNews.Topic)
                    .WithMany()
                    .Map(m => m.MapKey("topicId"));