我的应用程序使用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属性也用于身份验证。

您可能必须写下自己的身份,或者只是“忽略”它(顺其自然)。

07-24 09:50
查看更多