首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型维修平台中的Enum和Flags支撑

大型维修平台中的Enum和Flags支撑
EN

Stack Overflow用户
提问于 2013-12-20 20:53:21
回答 2查看 2.3K关注 0票数 7

由于我的错误消息:

代码语言:javascript
复制
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值。我有一个带有标志属性的枚举,类似于:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-05 03:13:36

迟答,但在v4.0.8中,标志属性被添加到枚举中,这使得ServiceStack总是将emum作为int对待。

调自4.0.54现在还可以使用EnumAsInt属性,它将把枚举保存为OrmLite中的int,但是在序列化它时会将其作为字符串保存到数据库中。

票数 5
EN

Stack Overflow用户

发布于 2013-12-22 11:23:06

据我所知,莫来特版本3不支持枚举,谁知道下一个版本。无论如何,您的解决方案只是使用整数包装器。

代码语言:javascript
复制
public int VisibleDayOfWeek { get; set; }

[Ignored]
public VisibleDayOfWeek VisibleDayOfWeekEnum
{
    get { return (VisibleDayOfWeek)VisibleDayOfWeek; }
    set { VisibleDayOfWeek = (int)value; }
}

几年后,即使实体框架也得到了它的枚举支持。

实体框架在版本> 4之后就有了枚举支持,而且您也不应该期望更多的实体框架是功能丰富的,而ormlite就像它的名字'lite‘一样。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20711777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档