NHibernate,一列两个含义,正面/负面

时间:2010-10-12 15:23:35

标签: c# nhibernate fluent-nhibernate nhibernate-mapping

我们有一个大型管理应用程序,我们会为每个操作执行大量日志记录,例如,谁做了什么以及在什么时间执行。

然而,我们有越来越多的自动系统,我们也想区分它们。

在我们所有的表中,我们都有一个名为PerformedBy的列,它是一个int。这一直是对名为Employees的表的引用,该表具有相应的名称。

但是我们现在想拥有一些系统用户(例如在线支付服务器,在线预订等)。 我们可以在employees表中创建这些,但这看起来不正确,我们不确定ID(这是一个商业系统,所以我们有200个数据库需要更新。)

所以我真正想做的是制作一个映射,这样如果一个ID是肯定的,它就会映射到一个从数据库加载的员工。但是,如果它是否定的,我希望有一些静态类,它们从每个类型的系统用户派生一个。

类似的东西:

class OnlineBooking : Employee
{
}

NHibernate可以这样吗,或者有人有另一个很好的解决方案吗? 我不想在所有包含日志的表中添加其他列。

1 个答案:

答案 0 :(得分:0)

一列/两个含义是经典的数据库气味。你肯定想把它分成两列。

您将无法使用您描述的肯定/否定方法启用外键约束。

http://www.agiledata.org/essays/databaseRefactoringSmells.html

这也将大大简化映射。添加一列可能看起来像是一项额外的工作,但从长远来看它是值得的。