Asp.net identity 如何使用约束定义AspNetCore.Identity自定义字段。

Asp.net identity 如何使用约束定义AspNetCore.Identity自定义字段。,asp.net-identity,entity-framework-core,data-annotations,Asp.net Identity,Entity Framework Core,Data Annotations,我想向AspNetCore.Identity添加自定义字段,并已完成此操作 public class ApplicationUser : IdentityUser { public string FirstName { get; set; } public string LastName { get; set; } } 我试着这么做 public class ApplicationUser : IdentityUser {

我想向AspNetCore.Identity添加自定义字段,并已完成此操作

   public class ApplicationUser : IdentityUser
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }
我试着这么做

   public class ApplicationUser : IdentityUser
    {
        [Required]
        public string FirstName { get; set; }
        [Required]
        public string LastName { get; set; }
    }

但这没有任何作用

通常,如果DB表不为空,则不能添加“NOTNULL”的新列

现在,您可以清空数据库并重新创建这些字段,或者手动将它们更改为NOTNULL,这样就可以了。
当然,如果有记录并且您不想丢失它们,您需要在“名字”和“姓氏”列中填入一些值

您是否也将这些记录添加到了DB表中?添加到DB表中是什么意思?我让EF生成db,它会这样做并创建字段,但是作为“null”,可能是我正在运行的cmd?我做了“dotnet ef数据库更新”好的,首先使用代码,字段已经出现在数据库中(已创建)。你面临的问题是什么?你想取得什么样的结果?现在还不清楚问题出在哪里。是的,数据库是用字段创建的,我添加了FirstName和LastName,我确实看到了,当我想要它们“notnull”时,它们都被标记为“null”。我尝试在它们上添加注释并重新生成db,但仍然得到“notnull”,您可能事先在表中还有其他行。数据库不允许包含NOTNULL,除非表为空,因为这些列没有默认值。我删除了整个数据库并再次运行cmd。也许还有别的问题?当我第二次更改列名时,它仍然是旧名称.Hm,这应该已经解决了这个问题(我的意思是,删除数据库并从EF命令调用update数据库)。不管怎么说,这里有一个相似的东西:我一直在遵循这个:gttps://www.codeproject.com/Articles/1216796/ASP-NET-Core-Identity-Setting-up-a-web-project-and-the 他们说要运行:“dotnet ef迁移添加初始”然后“dotnet ef数据库更新”。如果我删除了初始文件,那么我就得到了正确的更改,尽管它不应该在每次更改时都生成迁移脚本吗?当我添加新属性并运行更新时,我看到:没有应用迁移。数据库已经是最新的。未应用任何迁移。数据库已经是最新的。在过去的两年里,我自己开始使用数据库优先的方法,以便更好地控制数据库。我希望有更多代码优先经验的人能在这里提供帮助。祝你好运