繁体   English   中英

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

[英]Entity Framework - Link Table Name Issue

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

RelatedArticles表仅将文章映射到另一文章。 实体框架正在查找表“ ArticleArticles”。 可以在告诉实体框架此链接表的实际名称的OnModelCreating方法中放什么?

Table RelatedArticles {
    int articleId
    int relatedArticleId
}

没有“ RelatedArticles”类。 类Article中只有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; }
}

您可以重写OnModelCreating以指定表和列名称:

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

如果是类,则可以使用[Table(Name = "RelatedArticles"]属性,请参阅MSDN上有关TableAttribute的文档

您已经提到您没有,所以我认为您想要这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM