Свяжите данные с пользователем UAM ASP.NET по умолчанию, используя Entity Framework Core - PullRequest
0 голосов
/ 08 марта 2019

Попытка создать простое приложение MVC, которое имеет базовое управление учетными записями пользователей с регистрацией в социальных сетях.

Создано приложение ASP.NET Core 2.2 с индивидуальной аутентификацией, добавлено ядро ​​EF через NuGet (sqlserver и инструменты).Ранее я создавал некоторые базовые приложения ASP.NET MVC и приложения MVC на других языках.

Я получил логин Facebook для работы за этого урока .

Теперь я потерялся.

Там есть каталог «Данные», в котором уже есть куча кода, и нормальные каталоги MVC.Однако я не вижу файлов MVC, которые соответствовали бы каким-либо страницам или действиям, связанным с управлением учетными записями, к которым у меня есть доступ, когда я запускаю приложение, включая /Identity/Account/Login, /Identity/Account/Manage, /Identity/Account/Manage/SetPassword и т. Д.

Хотя все эти функции работают и работают в считанные минуты, это круто, но я уже не в курсе, как и почему это работает.Поиск всего, что я ожидал бы пролить некоторый свет на это, дает мне техническую документацию, которая заставляет мою голову вращаться и обеспечивает нулевое просветление.

Я хочу, чтобы коллекция наборов данных («Книги») была связана с каждым пользователем.Один пользователь для многих книг.Учитывая, что модель User (account?) Отсутствует в каталоге Models приложения MVC, я не думаю, что это то место, где ее нужно добавить.И если это так, я не знаю, как создать эту связь с пользователем.

Это то, что я вижу в файле с именем ApplicationDbContextModelSnapshot.cs

namespace Bookshelf.Data.Migrations
    [DbContext(typeof(ApplicationDbContext))]
    partial class ApplicationDbContextModelSnapshot : ModelSnapshot
    {
        protected override void BuildModel(ModelBuilder modelBuilder)
        {
        ...

        modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
            {
                b.Property<string>("Id")
                    .ValueGeneratedOnAdd();

                b.Property<string>("ConcurrencyStamp")
                    .IsConcurrencyToken();

                b.Property<string>("Name")
                    .HasMaxLength(256);

                b.Property<string>("NormalizedName")
                    .HasMaxLength(256);

                b.HasKey("Id");

                b.HasIndex("NormalizedName")
                    .IsUnique()
                    .HasName("RoleNameIndex")
                    .HasFilter("[NormalizedName] IS NOT NULL");

                b.ToTable("AspNetRoles");
            });

... и т. Д., Который выглядит довольно читабельным, но не соответствует ни одному изучебники, которые я видел до сих пор.

TL; DR:

Где / как правильно создать новые модели?Это как это в каталоге Models (как я привык) или это устарело?

В любом случае, как правильно связать данные с пользователем, учитывая встроенное управление учетными записями пользователей для ASP.NET Core 2.2?

1 Ответ

1 голос
/ 08 марта 2019

Там есть каталог «Данные», в котором уже есть куча кода, и нормальные каталоги MVC.Однако я не вижу файлов MVC, которые соответствовали бы каким-либо страницам или действиям, связанным с управлением учетными записями, к которым я могу получить доступ при запуске приложения, включая / Identity / Account / Login, / Identity / Account / Manage,/ Identity / Account / Manage / SetPassword и т. Д.

Это связано с тем, что из ASP.NET Core 2.1 удостоверение предоставляется как Razor Class Library с проектом ASP.NET Coreшаблоны.Если вы хотите просмотреть эти коды, связанные с Identity, и настроить их, то вам необходимо Scaffold Identity в вашем проекте.

Подробнее об этом: Scaffold Identity в ASP.NET Coreпроекты

Более того, если вам нужна ASP.NET Core Identity в формате MVC, то вот мой GitHub Репозиторий , где Razor Page Identity был преобразован в MVC в ASP.NET Core 2.2.

...