Соглашение о сопоставлении внешних ключей Entity Framework 5

StackOverflow https://stackoverflow.com//questions/12687176

  •  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"));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top