Asp.net 身份额外的用户信息,如电子邮件等

Posted

技术标签:

【中文标题】Asp.net 身份额外的用户信息,如电子邮件等【英文标题】:Asp.net identity extra user information like email etc 【发布时间】:2013-12-21 23:28:39 【问题描述】:

我正在使用新的 ASP.NET 标识。我添加了一些额外的用户信息,如电子邮件、移动设备等,但在创建用户时我收到以下异常:

执行命令定义时出错。有关详细信息,请参阅内部异常。

内部异常:

"无效的列名'Discriminator'。\r\n无效的列名'FirstName'。\r\n无效的列名'LastName'。\r\n无效的列名'DateOfBirth'。\r\n无效的列名'Age '。\r\n无效的列名'Mobile'。"

代码:

AccountController

            var user = new ApplicationUser()
            
                UserName = model.Email,
                DateOfBirth = model.DateOfBirth,
                FirstName = model.FirstName,
                LastName = model.LastName,
                Mobile = model.Mobile,
                Age = model.Age
            ;

            var result = UserManager.Create(user, model.Password); //exception

Model:

public class ApplicationUser : IdentityUser

    public string FirstName  get; set; 
    public string LastName  get; set; 
    public DateTime DateOfBirth  get; set; 
    public int Age  get; set; 
    public string Mobile  get; set; 


public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

    public ApplicationDbContext()
        : base("DefaultConnection")
     

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    
        modelBuilder.Entity<ApplicationUser>().Property(p => p.DateOfBirth).HasColumnType("datetime2");

        base.OnModelCreating(modelBuilder);
    

我做错了什么??

【问题讨论】:

检查您的值插入到哪个表中,它与您的通行证值匹配 你的视图模型是什么样的?错误在哪里抛出?什么时候? 【参考方案1】:

显示代码模型和数据库中的不匹配。

在运行应用程序之前验证您已迁移更改。适当使用以下命令。

添加迁移 更新数据库

还要确保在开始时提供适当的数据库迁移策略。例如,

Database.SetInitializer&lt;ApplicationDbContext&gt;(new System.Data.Entity.MigrateDatabaseToLatestVersion&lt;ApplicationDbContext, Configuration&gt;());

【讨论】:

以上是关于Asp.net 身份额外的用户信息,如电子邮件等的主要内容,如果未能解决你的问题,请参考以下文章

动态声明 asp.net 核心身份没有数据库持久性

无需输入电子邮件即可重置密码(ASP.NET 身份)

asp.net cookie、身份验证和会话超时

asp.net 身份中的用户名验证消息问题

从 Twitter API 获取用户的电子邮件以进行外部登录身份验证 ASP.NET MVC C#

ASP.net 身份框架 - 重新发送确认电子邮件