У меня есть 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; }
}
Когда я запускаю проект без этих классов, моя база данных генерируется, но когда я использую эти классы, моя база данных не генерируется.
Попробуйте «Обновить-Database -Script», чтобы увидеть SQL, сгенерированный EF. Затем используйте это для дальнейшего устранения проблемы. – wertzui
Что это за атрибуты 'TypeConverter'? Кстати, может быть хорошей идеей немного сократить этот лес атрибутов для удобочитаемости. –
поблагодарить u его хорошая идея, я обрезал атрибуты для удобочитаемости –