如何将表和关系添加到生成的 Asp.Net Core MVC Identity 数据库?

Yop*_*opa 1 c# asp.net asp.net-mvc asp.net-identity asp.net-core

我有一个项目,我必须在其中创建一个 ASP.NET Core MVC Web 应用程序,我应该在其中包含用户注册、登录和具有基本 CRUD 操作和相应视图的 SQL 数据库。对于登录和注册,我决定按照本教程使用 Asp.Net Core Identity:https : //youtu.be/CzRM-hOe35o. 一切正常,注册和登录看起来都很好,但我不知道如何将我的数据库与 Identity 生成的数据库一起使用。我对项目数据库的想法是为用户和文章创建一个表(有更多的表,但我将保持简单来解释我的问题)具有一对多的关系。现在我有一个关于用户的所有事情的生成数据库(来自身份教程)我如何在数据库中包含这个文章表并在 AspNetUsers 和文章之间建立一对多的关系?或者我可以在我的项目中使用两个数据库,一个用于用户,另一个用于其他项目表?但是如何在不同数据库的表之间建立关系,甚至可能吗?

Olt*_*iza 6

首先,您应该知道您可以使用两个数据库,但不能在这种情况下使用。

要执行您想要的操作,请按照下列步骤操作:

步骤 1 - 在名为“Data”的项目文件夹中创建一个名为“User”的类。类将是这样的:

public class User : IdentityUser
{
   
}
Run Code Online (Sandbox Code Playgroud)

第 2 步 - 在名为“Data”的同一文件夹中创建另一个名为“Article”的类。

 public class Article
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public virtual User User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

第 3 步 - 转到您在第一步中创建的“用户”类并将其编辑为如下所示

 public class User : IdentityUser
{
    public virtual ICollection<Article> Articles { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

第 4 步 - 在您添加这两个类的同一个文件夹中,您有另一个名为“ApplicationDbContext”的类。打开它并注册 User 和 Article 类。

 public class ApplicationDbContext : IdentityDbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<Article> Articles { get; set; }
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

第 5 步 - 在本地数据库中删除之前从项目生成的现有数据库。之后“添加迁移”和“更新数据库”

有关 Entity Framework Core 如何工作的更多信息,请参阅链接:https : //www.learnentityframeworkcore.com/conventions/one-to-many-relationship# :~: text= The%20easiest%20way%20to%20configure, public% 20class%20作者