我们正在使用 L2S,我们有一个这样的类:
public class HumanContainer
{
public List<IHuman> Humans { get; set; }
public string SomeOtherProperty { get; set; }
}
我们的数据库有这样的表:
HumanContainer
- Geek
到目前为止,我们只有一种人类(极客)。当我们向/从数据库发送/检索 HumanContainers 时,我们知道将它们视为 Geek。现在我们需要第二个人类(运动员),我们可以选择如何实现它。
一种选择是在数据库中创建另一个表(运动员):
HumanContainer
- Geek
- Athlete
对于像这样的每个新的具体 Human,我们需要遍历 HumanContainer.Humans,检测类型,将其添加到适当的 EntitySet<>,然后保存。
另一种选择是只为所有人类提供一个表:
HumanContainer
- Humans
如果我们这样做,那么我们将需要类似 XML 列的东西,我们将 Human 序列化为其特定类型并将其存储在该列中。然后我们需要在检索数据时反序列化该列。
是否推荐其中一种方法?我很想知道人们是如何处理这种情况的。有没有我没有在这里列出的第三种方法?