2014-10-31 2 views
0

"Articles"라는 테이블이 있고 "RelatedArticles"라는 연결 테이블이 있습니다.엔티티 프레임 워크 - 링크 테이블 이름 문제

관련 기사 테이블은 단순히 기사를 다른 기사에 매핑합니다. Entity Framework에서 "ArticleArticles"테이블을 찾고 있습니다. Entry Framework에이 연결 테이블의 실제 이름을 알려주는 OnModelCreating 메서드에 무엇을 넣을 수 있습니까?

Table RelatedArticles { 
    int articleId 
    int relatedArticleId 
} 

클래스 "관련 기사"가 없습니다. 클래스 조에서 만 목록 속성 :

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

미안, 내가 대답 그때 당신이 내가 생각한 것을하지 않을 수도 있다는 것을 깨달았습니다. 실제 C# 클래스를 표시 할 수 있습니까? – Casey

답변

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

이 클래스 인 경우는 속성 [Table(Name = "RelatedArticles"]를 사용할 수 있습니다. the docs about TableAttribute on MSDN을 참조하십시오.

당신은 당신이하지 않는, 그래서 당신이 원하는 생각 언급했습니다

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

이 속성은 클래스에서 사용되지만 RelatedArticles 클래스는 없습니다. 목록 또는 기사를 포함하는 Article 클래스 내의 필드. 이 정보로 질문을 업데이트하겠습니다. –

+0

귀하의 답변을 수락하고 싶었지만 D Stanley가 테이블 열을 매핑하는 문제를 해결했습니다. 나는 상관없이 당신의 도움에 정말로 감사드립니다. 감사. –

관련 문제