很多开发中用到枚举类型的小伙伴,可能跟我有一样的困惑,怎样将枚举数据保存到数据库呢?
考虑到程序后期再开发及维护,我是这样保存枚举数据到数据库的,假设有枚举类型:
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
大家如果有其他的办法,可以留言讨论。