回答

收藏

按位枚举映射sql列值

技术问答 技术问答 245 人阅读 | 0 人回复 | 2023-09-14

我有一个FlagsAttribute像这样按位枚举-
" I# l; j7 U+ s1 c6 ^8 j! @[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。
, e9 S, G% f* \* U4 `" f我知道我可以从数据库获中获得值int值类型转换为MyEnum,它将为我提供这些值。然而,我希望在某些存储过程中SQL在这些存储过程中,显然不能将数据转换为Enum所以,有没有办法让我知道每一个价值观?
$ c% {4 ?8 n8 @; d例如,如果存储11,我可以通过任何方式获得它 "1 2 8"
. X. j( {3 J7 D+ D                                                                # M) Z) a, W8 h8 Z, S
    解决方案:                                                               
& d1 A% u2 ^# W/ Q2 g! K7 k$ G                                                                这可能有助于你入门:: Z, ?/ F4 j* Q; g) |
Select 11 & 1 As 'First'  ,11 & 2 As 'Second'  ,11 & 4 As 'Third'  ,11 & 8 As 'Five'  ,11 & 16 As 'Six'  ,11 & 32 As 'Seven'  ,11 & 64 As 'Eight'  ,11 & 128 As 'Nine';您的储值在哪里?
7 S* y- e2 T- ?5 V" h4 D这将返回设定的每个值的非零值(即Select 11 & 1 As 'First'返回1,Select 11 & 2 As'Second'返回图2,Select 11 & 4 As 'Third'返回0等。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则