2013-12-09 1 views
0

작은 게임 리뷰 웹 사이트를 시뮬레이트하는 asp.NET MVC4에서 미니 프로젝트를 만들려고했습니다. 멋진 도구는 없으며 도구와 언어의 여러 측면을 다루기를 원했습니다.asp.Net 두 개의 데이터베이스 엔티티가있는 MVC4가 서로 참조합니다.

현재 Genres를 ID에 연결하는 데이터베이스를 만들려고 했으므로 Game 데이터베이스 세트를 만들 때 관련 장르별로 게임을 참조 할 수 있습니다. 나는 모델을 만들기 위해 코드 첫 번째 접근법을 사용하고 있었지만 가상 컬렉션에 저장된 장르를 올바르게 참조하는 방법을 잘 모르겠습니다. 게임을 기반으로하는 장르 나 테이블을 기반으로 테이블을 만들면 참조를 올바르게 나는이 MVC 접근법을 배워서 내 용어가 꺼져 있으면 사과한다.

public class GamingModels : DbContext 
{ 
    public DbSet<Games> GameDb { get; set; } 
    public DbSet<Genre> GenreDb { get; set; } 

    public GamingModels() 
     : base("DefaultConnection") 
    { } 


    public class Games { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     public string Summary { get; set;} 
     public int Rating { get; set; } 
     public virtual ICollection<Genres> Genres { get; set; } 
    } 

    public class Genre { 
     public int ID { get; set; } 
     public string Name { get; set; } 
     public virtual ICollection<Games> Games { get; set; } 
    } 
} 
+1

[답을 쓰기 시작 그러나 이것은 더] [1] [1] : http://stackoverflow.com/questions/7050404/create-code-first-many-to-many - 추가 필드 - 연관 테이블 포함 – Nogusta

+0

Model First 접근 방식을 고려할 수도 있습니다. 코드 첫 번째는 데이터베이스 스키마를 포함하여 모든 "소스 코드"를 한 곳에 저장하는 것이 좋지만 데이터베이스를 만들 때 사소한 많은 것들은 처음에는 코드 첫 번째 접근법으로 복잡하고 심지어 비밀스럽게됩니다. 데이터베이스를 만들고 Entity Framework를 사용하여 DAL 레이어를 렌더링하고 이동합니다. 프로덕션 환경으로 이동해야하는 개발 데이터베이스 변경 사항을 추적하려면 Red Gates Sql Compare 도구를 사용하는 것이 좋습니다. –

답변

1

게임과 장르를 매핑하는 중간 테이블이 있습니까? 그렇지 않은 경우, 당신은이 방법을 시도 할 수 있습니다 :

오버라이드 OnModelCreating 방법 :

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Games>().HasMany(x=> x.Genres) 
     .WithMany(x => x.Games) 
     .Map(x => x.MapLeftKey("ID").MapRightKey("ID").ToTable("Genre")); 
    modelBuilder.Entity<Genre>().HasMany(x => x.Games) 
     .WithMany(x => x.Genres) 
     .Map(x => x.MapLeftKey("ID").MapRightKey("ID").ToTable("Games")); 
} 

은 다 대다 다음 Nogusta의 추천에 따라 해결하는 테이블이있는 경우.

관련 문제