我有一个名为“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; }
}
答案 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");