You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET中枚举转字符串及EF Core存储枚举字符串至SQL的方法

在EF Core中存储枚举字符串值及.NET枚举与字符串转换方法

EF Core配置枚举存储为字符串

要让EF Core将枚举字段存储为字符串而非数值,通过Fluent API配置是最直接的方式:

在你的DbContext类中重写OnModelCreating方法,为Student的Type字段指定字符串转换:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>()
        .Property(s => s.Type)
        // 指定转换为字符串类型
        .HasConversion<string>()
        // 可选:指定数据库列的类型和长度,优化存储
        .HasColumnType("nvarchar(20)");
}

核心是HasConversion<string>配置,它会让EF Core将枚举值以成员名称的字符串形式持久化到数据库中。如果需要结合数据注解,可搭配[Column(TypeName = "nvarchar(20)")]标注字段,但Fluent API的转换配置是必须的。

.NET中枚举与字符串的转换方法

枚举转字符串

  • 直接调用ToString():最常用的方式,直接返回枚举成员的名称
UserTypeEnum studentType = UserTypeEnum.Master;
string typeName = studentType.ToString(); // 输出 "Master"
  • 使用Enum.GetName():通过枚举类型和成员获取名称
string phdTypeName = Enum.GetName(typeof(UserTypeEnum), UserTypeEnum.PhD); // 输出 "PhD"
  • 获取所有枚举成员名称:用Enum.GetNames()返回所有枚举成员的名称数组
string[] allTypeNames = Enum.GetNames(typeof(UserTypeEnum)); // 结果: ["Bachelor", "Master", "PhD"]

字符串转枚举

  • 使用Enum.Parse():将字符串解析为枚举成员,转换失败会抛出异常
string targetType = "Bachelor";
UserTypeEnum parsedType = (UserTypeEnum)Enum.Parse(typeof(UserTypeEnum), targetType);
  • 安全转换Enum.TryParse():避免转换失败抛出异常,返回布尔值标识转换结果
string inputType = "InvalidType";
if (Enum.TryParse<UserTypeEnum>(inputType, out UserTypeEnum result))
{
    // 转换成功,使用result
}
else
{
    // 处理转换失败的逻辑
}

内容的提问来源于stack exchange,提问作者moein hajebrahimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 22:11:07