由于我的错误消息:
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.我有一个带有AB值的枚举,我希望将它保存为整数,而不是nvarchar值。我有一个带有标志属性的枚举,类似于:
public enum VisibleDayOfWeek : int
{
None = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 4,
Thursday = 8,
Friday = 16,
Saturday = 32,
Sunday = 64
}我不能在db中保存多个天字符串,但可以保存表示多天的标志值的和。
我不想围绕这些枚举属性创建一个整数包装器。
枚举的底层类型是字节或整数,那么为什么它被保存为字符串/varchar呢?这没什么意义。即使是实体框架在多年后也得到了它的支持.
这个问题的解决办法是什么?
看来这家伙也有同样的问题:https://github.com/tapmantwo/enumflags
发布于 2016-03-05 03:13:36
迟答,但在v4.0.8中,标志属性被添加到枚举中,这使得ServiceStack总是将emum作为int对待。
调自4.0.54现在还可以使用EnumAsInt属性,它将把枚举保存为OrmLite中的int,但是在序列化它时会将其作为字符串保存到数据库中。
发布于 2013-12-22 11:23:06
据我所知,莫来特版本3不支持枚举,谁知道下一个版本。无论如何,您的解决方案只是使用整数包装器。
public int VisibleDayOfWeek { get; set; }
[Ignored]
public VisibleDayOfWeek VisibleDayOfWeekEnum
{
get { return (VisibleDayOfWeek)VisibleDayOfWeek; }
set { VisibleDayOfWeek = (int)value; }
}几年后,即使实体框架也得到了它的枚举支持。
实体框架在版本> 4之后就有了枚举支持,而且您也不应该期望更多的实体框架是功能丰富的,而ormlite就像它的名字'lite‘一样。
https://stackoverflow.com/questions/20711777
复制相似问题