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