使用 Entity Framework Core 将数据关联到默认 ASP.NET UAM 用户

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

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

我让 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;博士:


我在哪里/如何正确创建新模型?在 Models 目录中是这样的(我习惯了)还是已经过时了?


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


慕神8447489
浏览 98回答 1
1回答

慕容森

有一个“数据”目录,里面已经有一堆代码,还有普通的 MVC 目录。但是,我没有看到与我在启动应用程序时可以清楚访问的任何与帐户管理相关的页面或操作相关的 MVC 文件,包括 /Identity/Account/Login、/Identity/Account/Manage、 /身份/帐户/管理/设置密码等这是因为从 ASP.NET Core 2.1 开始,身份作为Razor 类库与 ASP.NET Core 项目模板一起提供。如果您想查看那些与身份相关的代码并进行自定义,那么您必须在项目中使用脚手架身份。以下是有关此的更多详细信息:ASP.NET Core 项目中的脚手架标识此外,如果您需要 MVC 格式的 ASP.NET Core 标识,那么这里是我的 GitHub存储库,其中 Razor 页面标识已在 ASP.NET Core 2.2 中转换为 MVC。
打开App,查看更多内容
随时随地看视频慕课网APP