【问题标题】:Add foreign key to AspNetUser table将外键添加到 AspNetUser 表
【发布时间】:2019-11-01 12:59:57
【问题描述】:

我创建了一个带有用户身份的 ASP.NET Core Razor Pages 应用程序。

创建的项目包括添加所有用户表的迁移,例如AspNetUserAspNetRoles。但是,它不会为这些表创建任何代码模型。

现在我已经创建了自己的实体模型,我希望其中一些具有AspNetUser 表的外键。

我该怎么做?平台是否将这些作为类公开?我是否需要手动创建模型并尝试让它们与表格完全匹配?或者就此而言,我如何访问用户的所有详细信息?

【问题讨论】:

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


    【解决方案1】:

    默认身份使用IdentityUser,它不会暴露给项目代码,但您可以创建一个派生自IdentityUser的新用户模型(例如AppUser),然后将外键添加到新用户型号:

    public class AppUser : IdentityUser
    {
        public int AddressId { get; set; }
        public UserAddress Address { get; set; }
    }
    
    public class UserAddress
    {
        public int Id { get; set; }
    
        // ...
    
        public string UserId { get; set; }
        public AppUser User { get; set; }
    }
    

    然后将启动时的 IdentityUser 替换为 AppUser :

    services.AddDefaultIdentity<AppUser>();
    

    然后创建新的迁移以创建新的用户表。

    【讨论】:

    • 我这样做了。但是当我运行程序时出现异常:InvalidOperationException: No service for type 'Microsoft.AspNetCore.Identity.UserManager`1[Microsoft.AspNetCore.Identity.IdentityUser]' has been registered。 不幸的是,我没有得到任何行号。
    • 我解决了这个问题。我不得不将 _LoginPartial.cshtml 中对 IdentiyUser 的引用更改为 AppliationUser
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2020-06-09
    • 2013-07-10
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多