c# - 如何向生成的 Asp.Net Core MVC Identity 数据库添加表和关系?

标签 c# asp.net asp.net-mvc asp.net-core asp.net-identity

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

最佳答案

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

按照以下步骤做你想做的事:

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

public class User : IdentityUser
{
   
}

第 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; }
}

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

 public class User : IdentityUser
{
    public virtual ICollection<Article> Articles { get; set; }
}

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

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

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

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

关于c# - 如何向生成的 Asp.Net Core MVC Identity 数据库添加表和关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62485906/

相关文章:

c# - MVC3中使用Get方法提交表单?

jquery - jQuery ajax 中有进度更新事件吗?

c# - 无效操作异常 : Can only base on a Style with target type that is base type 'TextBlock'

c# - WebClient() 可以同时下载多个字符串吗?

c# - 数据网格 asp.net 中的超链接列

asp.net - 我需要在 ASP.NET 中取消注册事件吗

c# - 如何字符串字段是唯一的 mvc 5 asp.net

asp.net-mvc - "business logic layer"适合 MVC 应用程序的什么位置?

c# - 无法在本地网络中远程访问 WCF 自承载服务

c# - 如何获取目录名称