实体框架 - 链接表名称问题

时间:2014-10-31 19:37:33

标签: c# .net entity-framework

我有一个名为“Articles”的表,然后是一个名为“RelatedArticles”的链接表。

RelatedArticles表只是将文章映射到另一篇文章。实体框架正在寻找表“ArticleArticles”。我可以在OnModelCreating方法中放入什么来告诉Entity Framework这个链接表的实际名称?

Table RelatedArticles {
    int articleId
    int relatedArticleId
}

没有类“RelatedArticles”。只有类别文章中的List属性:

public class Article
{
    public Article()
    {
        Links = new HashSet<Link>();
        RelatedArticles = new HashSet<Article>();
    }

    public int Id { get; set; }
    public string Title { get; set; }
    public string Body { get; set; }
    public System.DateTime Created { get; set; }

    public virtual ICollection<Link> Links { get; set; }
    public virtual ICollection<Article> RelatedArticles { get; set; }
}

2 个答案:

答案 0 :(得分:2)

您可以覆盖OnModelCreating以指定表名和列名:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Article>()
        .HasMany(a => a.RelatedArticles)
        .WithMany()
        .Map(t => t.MapLeftKey("articleId")
            .MapRightKey("relatedArticleId")
            .ToTable("RelatedArticles"));
}

答案 1 :(得分:1)

如果是类,您可以使用属性[Table(Name = "RelatedArticles"]。请参阅the docs about TableAttribute on MSDN

你提到过你没有,所以我想你想要这个:

modelBuilder
  .Entity<Article>
  .HasMany(a => a.RelatedArticles)
  .WithMany()
  .Map(a => a.ToTable("RelatedArticles");