【问题标题】:Associate data to default ASP.NET UAM user using Entity Framework Core使用 Entity Framework Core 将数据关联到默认 ASP.NET UAM 用户
【发布时间】:2019-03-07 22:25:01
【问题描述】:

尝试创建一个简单的 MVC 应用程序,该应用程序具有基本的用户帐户管理和社交帐户注册。

创建了带有个人身份验证的 ASP.NET Core 2.2 应用,通过 NuGet(sqlserver 和工具)添加了 EF 核心。我之前已经构建了一些基本的 ASP.NET MVC 应用程序和其他语言的 MVC 应用程序。

我通过this tutorial 登录 Facebook 工作。

现在我迷路了。

有一个“数据”目录,里面已经有一堆代码,还有普通的 MVC 目录。但是,我看不到与我在启动应用程序时可以清楚访问的任何与帐户管理相关的页面或操作相关的 MVC 文件,包括/Identity/Account/Login/Identity/Account/Manage/Identity/Account/Manage/SetPassword 等。

虽然在几分钟内启动并运行所有这些功能很酷,但我已经处于不知道它如何工作或为什么工作的劣势。搜索任何我希望对此有所了解的东西都会给我提供技术文档,让我头晕目眩并提供零启示。

我想要一个与每个用户关联的数据集(“书籍”)集合。一个用户对多本书。鉴于用户(帐户?)模型不在 MVC 应用程序的 Models 目录中,我认为不应在此处添加它。如果是,我不知道如何创建与用户的关联。

这就是我在名为 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:

在哪里/如何正确创建新模型?是like this in the Models directory(我习惯了)还是已经过时了?

无论哪种方式,在给定 ASP.NET Core 2.2 的内置用户帐户管理的情况下,如何正确地将数据与用户关联?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-core entity-framework-core-2.1


    【解决方案1】:

    有一个“数据”目录,里面已经有一堆代码,还有普通的 MVC 目录。但是,我没有看到与我在启动应用程序时可以清楚访问的任何与帐户管理相关的页面或操作相关的 MVC 文件,包括 /Identity/Account/Login、/Identity/Account/Manage、 /Identity/Account/Manage/SetPassword等

    这是因为从 ASP.NET Core 2.1 开始,身份被提供为 Razor Class Library 与 ASP.NET Core 项目模板。如果您想查看那些与身份相关的代码并进行自定义,那么您必须在您的项目中Scaffold Identity

    这里有更多详细信息:Scaffold Identity in ASP.NET Core projects

    此外,如果您需要 MVC 格式的 ASP.NET Core 标识,那么这里是我的 GitHub Repository,其中 Razor 页面标识已在 ASP.NET Core 2.2 中转换为 MVC。

    【讨论】:

    • 有点相关,在尝试上面的脚手架标识链接时,添加上下文中没有“新脚手架项目”选项,使用 VS 2017 中的核心 2.2。
    • @RandyHall 你试过了吗:YourProject&gt;Add&gt;New Scaffolded Item&gt; Identity?
    • 是的。 MyProject&gt;Add 没有 New Scaffolded Item 选项,这很奇怪。我相信我有所有正确的包能够
    • @RandyHall 请将您的 VS 2017 更新到最新版本!
    • 哈哈,就是这样
    猜你喜欢
    • 2019-02-23
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 2020-06-16
    • 2018-03-19
    • 2011-06-18
    • 2017-09-30
    • 1970-01-01
    相关资源
    最近更新 更多