2014-09-26 6 views
2

나는 Mvc (Country -> State -> City)를 사용하며 Fluent API를 사용하여 외래 키 관계를 만들고 싶다. 여기에 모델이있다.Mvc, 외래 기업과의 관계

public class Country 
{ 
    public int Country_Id { get; set; } 
    public String Country_Name { get; set; } 
} 
public class State 
{ 
    public string State_Name { get; set; } 
    public int State_Id { get; set; } 
    public virtual Country Country { get; set; } 
} 
public class City 
{ 
    public string City_Name { get; set; } 
    public int City_Id { get; set; } 
    public virtual State State { get; set; } 
} 

는 지금은 정보 UserContext 클래스 사람이 당신은 당신의 엔티티 클래스의 각 구성 클래스를 만들 수 있습니다

public class UsersContext : DbContext 
{ 
    public UsersContext() 
     : base("DefaultConnection") {} 

    public DbSet<UserProfile> UserProfiles { get; set; } 
    public DbSet<Country> TbCountries { get; set; } 
    public DbSet<State> TbState { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     //Country 
     modelBuilder.Entity<Country>().HasKey(c => c.Country_Id); 
     modelBuilder.Entity<Country>().Property(p => p.Country_Name).HasColumnType("VARCHAR").IsRequired().HasMaxLength(50); 
     //State 
    } 
+0

[EF 코드의 첫 번째 Fluent API는 외래 키 속성을 지정합니다] (http://stackoverflow.com/questions/19359608/ef-code-first-fluent-api-specifying-the-foreign-key-property) – Marco

답변

0

이 엔티티 사이의 관계를 만드는 방법을 nows 수있는 DbContext과 유창함 API를 정의합니다

internal partial class CountryConfiguration : EntityTypeConfiguration<Country> 
    { 
     public CountryConfiguration() 
     { 
      ToTable("dbo.Country"); 
      HasKey(x => x.Country_Id); 

      Property(x => x.Country_Id).HasColumnName("Country_Id").IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
      Property(x => x.Country_Name).HasColumnName("Country_Name").IsOptional().HasMaxLength(255); 
     } 
} 


internal partial class StateConfiguration : EntityTypeConfiguration<State> 
{ 
     public StateConfiguration() 
     { 
      ToTable("dbo.State"); 
      HasKey(x => x.State_Id); 

      Property(x => x.State_Id).HasColumnName("State_Id").IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
      Property(x => x.State_Name).HasColumnName("State_Name").IsOptional().HasMaxLength(255); 
      // Foreign keys 
      HasOptional(a => a.Country).WithMany(b => b.States).HasForeignKey(c => c.CountryId); 
     } 
} 

다음 OnModelCreating 방법, 당신은 같이 그들을 연결할 수 있습니다 :

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Configurations.Add(new CountryConfiguration()); 
     modelBuilder.Configurations.Add(new StateConfiguration()); 
    } 

이미 데이터베이스가있는 경우 데이터베이스에서 코드 우선 POCO 클래스를 생성 할 수있는 very handy tool이 있습니다.