2015-03-25 5 views
0

Я новичок в использовании EF6 с кодовым кодом, и теперь я не знаю, как создать правильные отношения на моей карте.Entity Framework - Code First - Relationship

В принципе у меня есть эта сущность

Menu 
MenuGrupo 

Menu 1 x N MenuGrupo 

Somenthing, как Menu 1 X n MenuItens

Это мои классы:

public class Menu 
{ 
     public Menu() 
     { 
      ListaFilhos = new List<Menu>(); 
     } 

     public Int32 MenuID { get; set; } 
     public String Nome { get; set; } 
     public String Action { get; set; } 
     public String Controller { get; set; } 
     public String Url { get; set; } 
     public Int32? Pai { get; set; } 
     public Boolean? Ativo { get; set; } 

     public virtual List<Menu> ListaFilhos { get; set; } 
} 

public class MenuMap : EntityTypeConfiguration<Entidade.Menu> 
{ 
     public MenuMap() 
     { 
      HasKey(x => x.MenuID); 
      Property(x => x.MenuID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
      Property(x => x.Pai).IsRequired(); 
      Property(x => x.Nome).HasColumnType("varchar").HasMaxLength(100).IsRequired(); 
      Property(x => x.Url).HasColumnType("varchar").HasMaxLength(250); 
      Property(x => x.Action).HasColumnType("varchar").HasMaxLength(50); 
      Property(x => x.Controller).HasColumnType("varchar").HasMaxLength(50); 
      Property(x => x.Ativo).IsRequired(); 
      ToTable("Menu"); 
     } 
} 

public class MenuGrupo 
{ 
     public MenuGrupo() 
     { 
      ListaMenu = new List<Menu>(); 
     } 

     public Int32 MenuGrupoID { get; set; } 
     public Int32 MenuID { get; set; } 
     public virtual List<Menu> ListaMenu { get; set; } 
} 

public class MenuGrupoMap : EntityTypeConfiguration<Entidade.MenuGrupo> 
{ 
     public MenuGrupoMap() 
     { 
      HasKey(x => x.MenuGrupoID); 
      Property(x => x.MenuGrupoID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
      Property(x => x.MenuID).IsRequired(); 
      ToTable("MenuGrupo");    
     } 
} 

ответ

0

Пожалуйста, посмотрите на Getting Started with Entity Framework 6 Code First using MVC 5. Это действительно очень полезно и позволяет правильно строить проект.

Что касается вашей ситуации, было бы достаточно использовать DataAnnotations вместо Fluent API, по крайней мере, для запуска.

Hoıpe это помогает ...

0

Вы используете List<Menu>, в то время как вы должны использовать ICollection<Menu>. Причина, по которой это необходимо, довольно низкоуровневая, но достаточно сказать, что она связана с тем, как Entity Framework обрабатывает отношения и такие вещи, как ленивая загрузка. Для свойства List<T> требуется, чтобы запрос выполнялся немедленно.