从超类ID中查找子类ID

时间:2011-08-18 05:06:32

标签: c# database linq

我有一个带有基表的分层数据库结构,然后有几个子表:

Base: {ID, Date, ...} 
ChildA: {ID, Color, ...}
ChildB: {ID, Age, ...}

每个子表都有一个ID,它是Base.ID的外键;所以每个孩子都链接到同样位于Base的ID。

我现在有一种情况,我有一个ID列表,我想弄清楚它们实际属于哪些子表。 确定给定ID的子表的最佳方法是什么?

我想要一个从ID中返回Type的函数:Type TypeFromBaseID(int baseID)

我可以想到两种方法,但我希望有更好的方法:

A)只需在Base中添加一个列,用于存储子表的表名

B)有一系列像db.ChildA.Any(x=>x.ID == baseID)

这样的if语句

1 个答案:

答案 0 :(得分:1)

你在A)中提出的实际上是ER建模中已知的“鉴别器”,这对我来说似乎是一个更清洁的解决方案。

我想请你重新考虑在这里使用全表名称。尝试使用整数保存一些空间(和性能)(并清楚地记录哪个整数值“映射”到哪个子表)。