Identity 3.0 - как использовать AspNetUsers ID в качестве внешнего ключа в многоуровневом приложении - PullRequest
0 голосов
/ 10 ноября 2019

Намерение:

A Подписки таблица базы данных, которая содержит столбец UserId , который имеет отношение внешнего ключа к Id столбец таблицы AspNetUsers .

Настройка проекта (в порядке их ссылочной иерархии) :

  • Веб-уровень (содержит классы ApplicationDbContext и ApplicationUser)
  • Уровень DTO
  • Уровень доступа к данным (Содержит EFDbContext)

Проект в конфигурации Первый код .

База данныхНастройка:

ApplicationDbContext и EFDbContext ссылаются на одну и ту же базу данных 1038 *.

  • ApplicationDbContext: ссылаются на все сущности удостоверений
  • EFDbContext: Ссылкиобъект "Мои подписки" (среди прочего)

Вопрос:

Учитывая, что мой EFDbContext находится в моем слое данных, , который не содержит ссылокк идентичности 3.0 , возможно ли создать ограничение внешнего ключа между AspNetUsers и подписками?

1 Ответ

1 голос
/ 10 ноября 2019

Можно ли создать ограничение внешнего ключа между AspNetUsers и подписками?

Конечно, это так. Это обычная вещь, с которой вы столкнетесь, когда будете пересекать такие границы.

Вместо того, чтобы EF создавал отношения, которые вам нужны, чтобы

  • создать новую пустую миграцию
  • добавить код для определения внешнего ключа в метод up
  • добавить код для отмены внешнего ключа в метод down
  • запустить миграцию в базе данных

Миграция будет выглядеть примерно так:

    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.AddForeignKey(
            name: "FK_Table_PrincipalTable_TableId",
            table: "Table",
            column: "PrincipalTableId",
            principalTable: "PrincipalTable",
            principalColumn: "Id",
            onDelete: ReferentialAction.Cascade)
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropForeignKey(
            name: "FK_Table_PrincipalTable_TableId",
            table: "Table");
    }
...