获得依赖实体的几种方法

时间:2016-02-15 14:07:11

标签: entity-framework-6

我有两个实体,它们被链接为一对多。 我希望通过主实体的主键获取依赖实体。

场景1 我正在调用依赖实体并通过外键获取它。  类似 context.dependentEntity.where(entity => entity.foreignKey == PKMainEntity)

情景2。 我正在调用主实体并获取依赖实体。  类似 context.mainEntity.find(PKMainEntity).select(x=>x.dependentEntity)

主键默认有索引;

什么情况更快?

1 个答案:

答案 0 :(得分:0)

场景1 中,您可以获取所有您不需要的内容。所以这是首选方式。

场景2 中,您有两个数据库调用。

完全相同
var entity1 = context.mainEntity.find(PKMainEntity);
var dependents = entity1.DependentEntities; 

第二个调用通过延迟加载加载依赖实体。

第三种方式是

context.mainEntity.Where(entity => entity.Key == PKMainEntity)
                  .SelectMany(e => e.DependentEntities)

这也将执行一个查询。它甚至可能使EF与第一个查询相同。当从属实体没有对主实体的反向引用时,此表单可能会派上用场。

对于多对多关联,这是一种有效的方式来获得许多"许多"根实体的实体(例如,产品的类别)。