我想在我的 DBContext 中有一个全局配置,以将模型中的所有枚举保存为数据存储中的字符串,约束是即使枚举可为空,我也需要配置才能工作
我已经找到了这个解决方案,但仅当枚举不可为空时才有效。
protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder)
{
configurationBuilder.Properties<Enum>().HaveConversion<string>();
}
我的期望是定义一个通用规则/配置,而不必为模型中每个可能的枚举编写特定的转换。
更新:
我已经尝试过这些但没有成功:
configurationBuilder.Properties<Enum?>().HaveConversion<string?>();
configurationBuilder.Properties<Enum?>().HaveConversion<string>();
从数据存储中插入或查询数据时,它会抛出
System.NullReferenceException: 'Object reference not set to an instance of an object.'
。
这对我有用:
configurationBuilder.Properties<Enum>().HaveConversion<string?>();
我的架构将列定义为可以为 null
NVARCHAR(50)
,我可以存储一行,其中包含枚举值(转换为字符串)和 #null 值,该值使该列保留为默认 #null。
如果您希望将列创建为可为空的字符串,则不确定代码优先,但如果您有现有架构,则它可以与可为空的列一起使用。