Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在ApplicationUser类中添加其他字段_Asp.net_Asp.net Identity - Fatal编程技术网

Asp.net 在ApplicationUser类中添加其他字段

Asp.net 在ApplicationUser类中添加其他字段,asp.net,asp.net-identity,Asp.net,Asp.net Identity,我有一个使用新ASP.NET标识的WebForms应用程序。我在类中添加了两个额外的字段以允许电子邮件和一个名为IsOnLine的布尔值 我使用迁移来明确地更新表,并且可以看到我的新字段在那里。但是,每当我现在尝试登录时,都会出现以下错误: 其他信息:“ApplicationUser”上的“IsOnLine”属性无法设置为“null”值。必须将此属性设置为“System.Boolean”类型的非空值 网络上所有的exmamples都与MVC有关,我还没有使用它 如何解决此问题?布尔值不能为空,因

我有一个使用新ASP.NET标识的WebForms应用程序。我在类中添加了两个额外的字段以允许电子邮件和一个名为IsOnLine的布尔值

我使用迁移来明确地更新表,并且可以看到我的新字段在那里。但是,每当我现在尝试登录时,都会出现以下错误:

其他信息:“ApplicationUser”上的“IsOnLine”属性无法设置为“null”值。必须将此属性设置为“System.Boolean”类型的非空值

网络上所有的exmamples都与MVC有关,我还没有使用它


如何解决此问题?

布尔值不能为空,因此在数据库中设置为空。如果希望它为null,则需要使用?接线员

public class ApplicationUser : IdentityUser
{
    public bool? IsOnline { get; set; }
}
要在数据库中更新此信息,请参阅本文。在本例中,注册过程中会更新一个布尔标志isconfirm,该标志类似于您的IsOnline标志。下面是更新数据库的相关代码片段

    user.IsOnline = true;
    DbSet<ApplicationUser> dbSet = context.Set<ApplicationUser>();
    dbSet.Attach(user);
    context.Entry(user).State = EntityState.Modified;
    context.SaveChanges();
user.IsOnline=true;
DbSet DbSet=context.Set();
附加(用户);
context.Entry(user.State=EntityState.Modified;
SaveChanges();

我更喜欢尽可能避免空值,为了确定属性是否可以接受空值,最好考虑该信息在域问题中代表什么。在这种情况下,我认为IsOnline的值不确定是没有意义的,因为用户是在线或离线的,而不是中间术语适用于这个事实。 为了解决数据库的这个问题,利用您正在使用的代码迁移,您可以使用配置类中的Seed方法,并将值分配给不可为null的新字段

伪代码:

Seed() 
    for each user
        set user IsOnline to false

好的,这样就解决了这个问题。下一个问题。一旦用户通过身份验证,如何将bool设置为true?