每种类型的继承行为是什么表

时间:2012-05-12 18:21:20

标签: c# .net entity-framework orm

给定两个实体:Parent,Child。

每种类型的表继承在以下时间执行的操作:

  1. 添加一个名为Child的实体,其所有值都留空,但填充了其Parent属性。它会添加子实体还是仅添加父实体?

  2. 如果ID为== id的实体Parent存在,但它没有Child,那么针对具有谓词ID == id的存储库Child的查询是否会返回任何内容? IE浏览器。这样的查询会被翻译成左连接还是交叉连接?

2 个答案:

答案 0 :(得分:1)

  1. 它总是会尝试在两个表中添加一个条目

  2. EF不会返回任何内容。生成的SQL是左连接

答案 1 :(得分:0)

  1. 您是否认为EF会检查子实体,如果所有属性都可以为空,如果是,则不会保存它?为什么会那样做?此外,hiearchy映射是规则,如果实体是子类型,那么它必须在子表中有记录。所以答案可能不是。即使没有在子项中设置属性,它仍会在表中创建记录。

  2. 当EF还没有机会查询它的类型时,EF如何判断实体是否为父类型?所以不,每次都会产生加入。