我在数据库中有几个小实体,我用两列表格表示:id和名称。这些实体的示例包括国家、大陆等。
如果这些实体的名称不重要,我应该创建枚举类型吗?
我在数据库中有几个小实体,我用两列表格表示:id和名称。这些实体的示例包括国家、大陆等。
如果这些实体的名称不重要,我应该创建枚举类型吗?
很抱歉用问题回答问题,答案取决于情况。您期望这些值多久更改一次?您发布代码的频率是多少?
枚举类型需要进行代码更改。纯数据库表格更易于更改。编码时,枚举类型更方便。
如果您发布频率较低或者经常有新/删除/更改的值,建议使用数据库表格。如果数据集是静态的或者您经常发布代码,请使用枚举类型。
当需要限制可能取值的范围时,例如星期几、性别、票务状态(已开/已关闭/已存档)时,使用枚举类型是很好的选择。
但在以下情况下,使用枚举类型则不太适合:
使用枚举类型可以提高性能,因为字符串比无符号整数包含更多的数据。一般来说,只要您确定不会更改枚举映射,就可以采用这种方法,尤其是从编码人员的角度来看。但是,如果您想在数据库本身中运行原始SQL,则需要引用代码以查找所有整数的含义,这会变得有些棘手。
foreach (ApprovalCategoryEnum category in Enum.GetValues(typeof(ApprovalCategoryEnum)))
{
ApprovalCategory asc = existingCategories.FirstOrDefault(x => x.ApprovalCategoryId == (int)category);
if (asc == null)
{
ApprovalCategory newCategory = new ApprovalCategory(session);
newCategory.ApprovalCategoryId = (int)category;
newCategory.Description = category.ToString().Replace("_", " ");
newCategory.Save();
}
}