在 EF Core 6 中将枚举存储为字符串

问题描述 投票:0回答:1

在寻找将所有枚举作为字符串存储在数据库中的解决方案时,我想出了以下代码。

protected override void ConfigureConventions(ModelConfigurationBuilder builder)
{
    builder.Properties(typeof(Enum))
        .HaveConversion<string>()
        .HaveColumnType("nvarchar(128)");
}

做了一些测试,这似乎工作得很好,即使对于可为空的枚举也是如此。 128 个字符的限制完全是可选的,默认为

nvarchar(max)

由于围绕该主题的所有其他解决方案都需要更多和复杂的代码,我想知道我相当简单的方法是否有任何缺点?

entity-framework-core ef-code-first
1个回答
0
投票

我认为唯一关心的是,如果您更改了枚举元素名称,那么您将在表中获得不同的值,并且当您从表中选择时无法将其转回。

我知道您问的是解决方案本身的缺点而不是要求,但我只是想让您关注这个问题。

该问题的一个可能的解决方案是添加迁移脚本以将旧值更改为新值,从而保持数据完整性。

© www.soinside.com 2019 - 2024. All rights reserved.