Если вы думаете, что пытаетесь смоделировать отношение «многие ко многим» между пользователем и ролью.В этом случае ваша модель полностью неверна.
Используйте это вместо:
public partial class App_user
{
public int id { get; set; }
public string name { get; set; }
public string email_address { get; set; }
public string password { get; set; }
public int user_type { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
public partial class Role
{
public int id { get; set; }
public string name { get; set; }
public virtual ICollection<User> Users { get; set; }
}
Это создаст многие-ко-многим автоматически, и вам не придется беспокоиться о соединительной таблице.Если вам нужно открыть таблицу соединений, вы должны использовать это:
public partial class App_user
{
public int id { get; set; }
public string name { get; set; }
public string email_address { get; set; }
public string password { get; set; }
public int user_type { get; set; }
public virtual ICollection<User_Role> UserRoles { get; set; }
}
public partial class Role
{
public int id { get; set; }
public string name { get; set; }
public virtual ICollection<User_Role> UserRoles { get; set; }
}
public partial class User_role
{
[Key, ForeignKey("App_user"), Column(Order = 0)]
public int user_id { get; set; }
[Key, ForeignKey("Role"), Column(Order = 1)]
public int role_id { get; set; }
public virtual Role Role { get; set; }
public virtual App_user App_user { get; set; }
}
Предоставление таблицы соединений не имеет смысла, если вам не нужны дополнительные свойства в ней.
К вашей ошибке - у каждой сущности в платформе сущностей должен быть определен первичный ключ.