У меня есть следующие объекты:
public class User
{
public virtual ICollection<Role> Roles { get; set; }
}
public class Role
{
public virtual ICollection<User> Users { get; set; }
}
И следующий код в MyContext.OnModelCreating
:
mb.Conventions.Remove<OneToManyCascadeDeleteConvention>();
mb.Entity<T>().ToTable("Users", "myschema");
mb.Entity<T>().ToTable("Roles", "myschema");
mb.Entity<User>().HasMany(x => x.Roles).WithMany().Map(a => a.ToTable("UsersRoles", "myschema"));
mb.Entity<Role>().HasMany(x => x.Permissions).WithMany().Map(a => a.ToTable("RolesPermissions", "myschema"));
Все остальные соглашения являются стандартными. Во время инициализации базы данных таблица Users имеет столбец внешнего ключа Role_Id . Это не имеет смысла . Таблицы Users , Roles и UsersRoles являются правильными.
При использовании EF User.Role_Id всегда равен NULL , и транзакции завершаются успешно, а UsersRoles обновляется, как ожидается. Если я удалю столбец, EF не будет жаловаться на это.
Почему EF делает это и как я могу это исправить - предпочтительно удаляя ненужный столбец?