我正在使用 ASP.Net 在Web应用程序中工作。我正在尝试将枚举类型的新列添加到名为帐户状态(活动、非活动、过期和锁定(的 AspNetUsers 中。
我正在遵循"向标识用户添加属性"的教程,因此我执行以下操作:
在 Register.cshtml.cs 文件中,我添加了以下行:
public enum AccountStatus { Active,InActive,Expired,Locked}
我创建了"ApplicationUser"类,该类继承自IdentityUsers,如下所示:
using System;
using Microsoft.AspNetCore.Identity;
namespace RegisterTest.Models
{
public class ApplicationUser : IdentityUser
{
public enum AccountStatus { Active, InActive, Expired, Locked }
}
}
然后,我在此处添加了 DbSet:
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using RegisterTest.Models;
namespace RegisterTest.Data
{
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public DbSet<ApplicationUser> ApplicationUser { get; set; }
}
}
然后,我添加了迁移并更新了数据库,但我实际上得到了一个名为"鉴别器"的新字段
谁能帮我解决这个问题?我不知道我是否遗漏了任何概念或做错了什么? 我需要将帐户状态作为枚举字段添加到身份用户表中。 请任何帮助,非常感谢。
尝试在DbContext 中为枚举设置转换,如下所示:
modelBuilder
.Entity<Wine>()
.Property(e => e.WineVariantId)
.HasConversion<int>();
此代码取自 https://entityframeworkcore.com/knowledge-base/50375357/how-to-create-a-table-corresponding-to-enum-in-ef-core-code-first-。看起来首先将枚举设置为代码比简单地在模型中定义它更重要。