【发布时间】: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