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