Hel*_*rld 7 servicestack ormlite-servicestack
由于我的错误消息:
An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code
Additional information: Conversion failed when converting the nvarchar value 'AB' to data type int.
Run Code Online (Sandbox Code Playgroud)
我有一个带有AB值的枚举,我想将其保存为整数而不是nvarchar值.我有一个带有flags属性的枚举类似于:[Flags]
public enum VisibleDayOfWeek : int
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
}
Run Code Online (Sandbox Code Playgroud)
我无法在数据库中保存多天字符串,但我可以保存代表多天的标志值的总和.
我不想在这些枚举属性周围创建一个整数包装器.
枚举的基础类型是字节或整数,那么为什么它保存为字符串/ varchar?这是没有意义的.甚至实体框架在多年后的枚举支持下也是正确的......
这种情况下的解决方案是什么?
似乎这家伙有同样的问题:https://github.com/tapmantwo/enumflags
迟到的答案,但在v4.0.8中,[Flags] 属性被添加到枚举中,这使得 ServiceStack始终将 emum 视为 int。
从 v4.0.54 开始,您现在还可以使用 [EnumAsInt] 属性,它将枚举作为 OrmLite 中的 int 保存到数据库,但在序列化时它将作为字符串保存。
据我所知,ormlite版本3不支持enum,谁知道下一个版本.你的解决方案只是使用整数包装器的任何方式
public int VisibleDayOfWeek { get; set; }
[Ignored]
public VisibleDayOfWeek VisibleDayOfWeekEnum
{
get { return (VisibleDayOfWeek)VisibleDayOfWeek; }
set { VisibleDayOfWeek = (int)value; }
}
Run Code Online (Sandbox Code Playgroud)
甚至实体框架在多年后也得到了enum支持
实体框架在版本> 4之后有枚举支持,你也不应该期望很多实体框架是丰富的特色,而ormlite就像它的名字'lite'.
| 归档时间: |
|
| 查看次数: |
1975 次 |
| 最近记录: |