【发布时间】:2011-11-15 16:32:06
【问题描述】:
我有一个按位枚举,像这样设置了 FlagsAttribute -
[FlagsAttribute]
public enum MyEnum
{
None = 0,
First = 1,
Second = 2,
Third = 4,
Five = 8,
Six = 16,
Seven = 32,
Eight = 64,
Nine = 128
}
现在,在 C# 中,我将此值存储在一个属性中,例如 MyProperty,并在保存时将此属性写入我的 SQL 数据库的整数列中。假设如果我从代码中选择First,Second,Five,那么在数据库中它将被保存为'11'。
我知道我可以从 DB 中获取值,只需将 int 值类型转换为 MyEnum,它就会给我这些值。但是,我希望在某些存储过程中对 SQL 数据进行一些操作,显然我无法将其类型转换为 Enum 值。那么,有没有办法让我了解个人价值观。
例如,如果存储 11,我可以通过任何方式将其获取为 "1+2+8"
【问题讨论】:
-
你可以有varchar列然后保存“1,2,8”吗?
-
不,我无法更改数据库。它已经处于生产阶段。
-
SQL 应该不擅长按位运算;假设宁愿在 C# 领域做到这一点。
-
@jonathan:什么? SQL 擅长按位运算。
-
@Joe - 我的(SQL Server 团队)消息来源说“没有你想象的那么好”,但它可能是那些边缘/边界/微优化的事情之一。
标签: c# sql sql-server wpf tsql