我的应用程序使用ASP.NET身份,但是当用户使用UserName
登录时却没有使用Email
属性。因此,我想从数据库表中删除它,以使事情保持整洁,这是通过以下代码完成的:
public class UserEntityConfiguration : EntityTypeConfiguration<User>
{
public UserEntityConfiguration()
{
ToTable("User");
Property(u => u.Id).HasColumnOrder(0);
Property(u => u.Title).HasMaxLength(50).HasColumnOrder(1);
Property(u => u.FullName).HasMaxLength(256).IsRequired().HasColumnOrder(2);
Property(u => u.Email).HasMaxLength(512).IsRequired().HasColumnOrder(3);
Property(u => u.EmailConfirmed).HasColumnOrder(4);
Property(u => u.PasswordHash).HasColumnOrder(5);
Property(u => u.SecurityStamp).HasMaxLength(256).HasColumnOrder(6);
Ignore(u => u.UserName); // not used
Ignore(u => u.PhoneNumber); // not used
Ignore(u => u.PhoneNumberConfirmed); // not used
}
}
如果我未设置
UserName
属性,则会出现运行时错误名称不能为null或为空。
如果然后尝试设置该属性,则会收到此错误:
LINQ中不支持指定的类型成员'UserName'
实体。仅初始化器,实体成员和实体导航
支持属性。
因为没有数据库列可将属性映射到。
是否可以在用户表中没有UserName列的情况下使用ASP.NET Identity(在我的情况下将不使用)?
最佳答案
我认为默认IdentityUser
是不可能的。 UserName属性也用于身份验证。
您可能必须写下自己的身份,或者只是“忽略”它(顺其自然)。