假设我希望表中的条目Regions
具有类型,例如城市、国家等。假设我将使用 O/RM(在我的情况下为 NHibernate),存储这种类型的公认方式是什么?我看到两个选项:
- 在 C# bussines 层中有一个枚举类型,并将类型作为 a 存储
tinyint
在表中。 - 有一个
RegionTypes
带有类型标识符(字符串或整数)的查找表并在Regions
表中引用它们。
从数据库的角度来看,第二种方法似乎更合理,因为我有外键约束,而且我可以有关于区域类型的其他数据,例如,城市是国家/地区的子类型(并且因为我使用的是 SQL Server 2008空间特征,我实际上需要这些信息来进行空间操作)。但是,从 C# 的角度来看,我基本上必须有一个实体RegionType
并在每次我想将它分配给一个区域时从数据库中加载它(据我所知,NHibernate 不允许我将类型设为枚举,如果我将它存储在查找表中)。对于这样一个简单的任务来说,这有点乏味,因为要知道区域类型基本上是固定的,不太可能改变。
其他类型(例如DayOfWeek
不太可能更改或具有其他属性)的其他类型应该有自己的查找表和实体吗?