Соглашение о сопоставлении внешних ключей Entity Framework 5
-
12-12-2019 - |
Вопрос
У меня есть две сущности: Роль и Разрешение с ассоциацией один ко многим соответственно.
public class Role
{
public int Id { get; set; }
public bool IsAdmin { get; set; }
public virtual ICollection<Permission> Permissions { get; set; }
}
public class Permission
{
public int Id { get; set; }
public string Code { get; set; }
public string GroupName { get; set; }
public virtual Role Role { get; set; }
}
И создал для них классы отображения, унаследованные от EntityTypeConfiguration
сорт.
Когда я запускаю свое приложение, EF создал для меня базу данных, а внешний ключ для этих объектов выше был идентификатор роли.
Как я могу изменить существующее или добавить новое соглашение, чтобы избавиться от подчеркивания во внешнем ключе?
Поэтому я хочу иметь идентификатор роли в качестве внешнего ключа для моих объектов.
Я не хочу использовать атрибуты аннотаций данных и не хочу добавлять дополнительное свойство в класс разрешений (public int RoleId { get; set; }
), чтобы использовать его при отображении следующим образом:
HasRequired(x => x.Role).WithMany(y => y.Permissions).HasForeignKey(o => o.RoleId);
Спасибо,
Алексей
Решение
Entity Framework в настоящее время не поддерживает пользовательские глобальные соглашения, но вы можете перезаписать имя ключа в API Fluen:
modelBuilder.Entity<Permission>()
.HasRequired(x => x.Role)
.WithMany(y => y.Permissions)
.Map(m => m.MapKey("RoleId"));