Как добавить ключ foregin в таблицу aspnetroles в первом подходе к коду ядра EF?

#c# #asp.net #entity-framework #asp.net-core #ef-code-first

#c# #asp.net #entity-framework #asp.net-core #ef-code-first

Вопрос:

Я создал пример приложения в ASP.NET Ядро с аутентификацией. Создано несколько таблиц, и приложение работает хорошо.

Теперь мне нужно создать новую таблицу «Организации». Эта таблица должна быть связана с таблицей по умолчанию «AspNetRoles» ключом foregin в отношении один ко многим. С каждой ролью может быть связано много организаций. Проблема в том, что я не могу найти эти таблицы по умолчанию в своем приложении и не знаю, как создать внешний ключ, используя первый подход code. Я пробовал что-то вроде этого:

 public class Organization
{
   public int OrganizationId {get; set;}

   [ForeginKey="AspNetRoles"]
   public int RoleId {get; set;}

}
  

Справка.

Ответ №1:

Наконец-то я узнал, как этого добиться.

 public virtual string RoleId { get; set; }

[ForeignKey("RoleId")]
public virtual IdentityRole Roles { get;set; }
  

AspNetRoles называется IdentityRole.

Комментарии:

1. ПРИВЕТ @justme, из таблицы IdentityRole будет отношение «один ко многим» к таблице, содержащей IdentityRoles в качестве внешней таблицы, не могли бы вы рассказать, как вы этого добились?

Ответ №2:

Когда у вас есть свойство навигации для связанного объекта, просто назовите соответствующий ключ таким же, как свойство навигации, за которым следует Id или ID, и EF автоматически распознает его как внешний ключ для связанного объекта (например, Role — RoleId).

 public string RoleId { get; set; }
public IdentityRole Role { get; set; }
  

вы можете прочитать больше о соглашениях об именовании в коде EF здесь

кроме того, вот хороший учебник по сложным моделям данных