2017-01-31 9 views
1

У меня есть 3 класса, которые должны быть связаны друг с другом, но когда я запускаю свой проект, Entity Framework не может сопоставить их с SQL Server столы. Я использовал миграции.Code-first Entity Framework может иметь большое отношение к дополнительным полям, не работающим

Мой класс пользователей здесь:

[Table("tbl_User")] 
    public class User 
    { 
       public User() 
       { 
       } 

       #region Properties 
       [Key] 
       [Required][DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]    
       public long Id { get; set; }     
       public string FirstName { get; set; }    
       public string LastName { get; set; } 
       public string LoginName { get; set; } 
       public string Email { get; set; } 
       public string Password { get; set; } 
       public bool EmailVerify { get; set; } 
       public string Image { get; set; }    
       public DateTime CreateDate { get; set; } 
       public DateTime UpdateDate { get; set; } 
       public DateTime LoginDate { get; set; } 
       public bool Enabled { get; set; } 
       public bool Deleted { get; set; } 
       #endregion 

       #region Relations    
       public virtual IList<UserRole> UserRole { get; set; }   
       #endregion Relations 
    } 

класс Роль здесь:

[Table("tbl_Role")] 
public class Role 
{ 
     public Role() 
     { 
     } 

     #region Properties 
     [Key] 
     [Required] 
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)]  
     public int Id { get; set; } 
     public string RoleName { get; set; } 
     public int Order { get; set; } 
     public string Icon { get; set; }     
     public DateTime CreateDate { get; set; } 
     public DateTime UpdateDate { get; set; }   
     public bool Enable { get; set; }  
     public bool Deleted { get; set; } 
     #endregion Properties 

     #region Relations      
     public virtual IList<UserRole> UserRole { get;set;} 


     #endregion Relations 
} 

UserRole это мой многие-ко-многим таблице:

[Table("tbl_UserRole")] 
public class UserRole 
{ 
      internal class Configuration : System.Data.Entity.ModelConfiguration.EntityTypeConfiguration<UserRole> 
      { 
       public Configuration() 
       { 
        HasRequired(current => current.User) 
         .WithMany(userrole => userrole.UserRole) 
         .HasForeignKey(fk => fk.UserId); 

        HasRequired(current => current.Role) 
         .WithMany(userrole => userrole.UserRole) 
         .HasForeignKey(fk => fk.RoleId); 
       } 
      } 

      public UserRole() 
      { 
      } 

      #region Properties 
      [Key] 
      [Required]    
      public long Id { get; set; }   
      public DateTime GrantDate { get; set; } 
      public DateTime ExpireDate { get; set; } 
      public bool Enabled { get; set; } 
      public bool Deleted { get; set; } 
      #endregion Properties 

      #region Relations 
      public long UserId { get; set; } 
      public virtual User User { get; set; } 
      public int RoleId { get; set; } 
      public virtual Role Role { get; set; } 
      #endregion Relations 
} 

и здесь есть мой контекст базы данных

public class LiveMiracleDbContext:DbContext 
    { 
      public LiveMiracleDbContext() : base("LMConnection") 
      { 
      } 

      public DbSet<User> tbl_User { get; set; } 
      public DbSet<Role> tbl_Role { get; set; } 
      public DbSet<UserRole> tbl_UserRole { get; set; } 
    } 

Когда я запускаю проект без этих классов, моя база данных генерируется, но когда я использую эти классы, моя база данных не генерируется.

+0

Попробуйте «Обновить-Database -Script», чтобы увидеть SQL, сгенерированный EF. Затем используйте это для дальнейшего устранения проблемы. – wertzui

+0

Что это за атрибуты 'TypeConverter'? Кстати, может быть хорошей идеей немного сократить этот лес атрибутов для удобочитаемости. –

+0

поблагодарить u его хорошая идея, я обрезал атрибуты для удобочитаемости –

ответ

0

OK цистерна для Герта Арнольд комментарий

проблемы была в моих атрибутах это верно Структура компании

я удалил атрибуты.