我有以下表格:
编辑:好的,我尝试了以下代码并且可以工作。
Animal
和ConcreteAnimal
。如果我采用数据库优先的方法,可能会对这个例子产生影响。假设它们是不同的实体。然后我有2个DBSet(s)
生成,可以分别更新任意一个表格。一旦我在实体设计器中将ConcreteAnimal
设置为Animal
的子项,事情就改变了。实体设计器中的ConcreteAnimal
实体集字段被禁用,并自动填充其父类Animal
的实体集值。在上下文中不再生成ConcreteAnimal
的DBSet
。这意味着我不能再访问第二个子表格。我应该如何将ConcreteAnimal
添加到数据库?这是预期的行为吗?如果是,背后的逻辑是什么?编辑:好的,我尝试了以下代码并且可以工作。
using(var context = new MyEntities())
{
var concreteAnimal = new ConcreteAnimal
{
//setting properties here
//both for Animal and specific to ConcreteAnimal
};
context.Animals.Add(concreteAnimal);
context.SaveChanges();
}
神奇的事情发生了,两个表都被正确地填充了数据。这很好。然而,我觉得为什么我们只有针对基类的DBSet
并不合乎逻辑?