c# 怎样保存枚举类型到数据库

文章介绍了将枚举类型转换为数据库存储的方法,通过创建包含StateValue和StateName字段的EnumTrunkState表,并在EF中操作进行保存。在程序中,利用Enum.GetName和类型转换将枚举值存取。同时,建议使用视图来展示枚举数据。
摘要由CSDN通过智能技术生成

很多开发中用到枚举类型的小伙伴,可能跟我有一样的困惑,怎样将枚举数据保存到数据库呢?

考虑到程序后期再开发及维护,我是这样保存枚举数据到数据库的,假设有枚举类型:


        public enum TRUNK_STATE
        {
            TRK_IDLE,
            TRK_WAIT_CONNECT,
            TRK_CHECK_PLAY_WELCOM,
            TRK_PLAY_SELECT,
            TRK_CHECK_PLAY_PASSWORD,
            TRK_CHECK_REC_END,
            TRK_CHECK_PLAY_BYEBYE,
            TRK_CHECK_PLAY_RECORD,
            TRK_WAIT_USER_HANGUP,
            TRK_WAIT_USER_PICKUP,
            TRK_CHECK_PLAY_SELECT,
            TRK_CHECK_REC_START,
        };

首先在数据库建立枚举数据的表EnumTrunkState,两个字段,一个StateValue(主键),一个StateName:

在EF中增加表

然后主程序中写代码:

                   using (cEntities ce = new cEntities()){
                        for (int i = 0; i < 12; i++) {
                            EnumTrunkState enumTrunkState = new EnumTrunkState();
                            enumTrunkState.StateValue = i;
                            enumTrunkState.StateName = Enum.GetName(typeof(TRUNK_STATE), i);
                            ce.EnumTrunkState.Add(enumTrunkState);
                        }
                        ce.SaveChanges();
                    }

运行,发现已经将Enum的数据存入数据库中:

程序中如有用到保存Enum数据的,就用下面的写法:

info.step = (int)TRUNK_STATE.TRK_IDLE;

如果要从int值返回Enum则用:

(TRUNK_STATE)info.step

数据库中如果想体现出来Enum的枚举数据,则可以使用视图将两个表left join

大家如果有其他的办法,可以留言讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九滨云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值