EF在Context.DbSet()。SingleOrDefault和Context.Entry之间的区别

时间:2013-08-06 10:45:18

标签: entity-framework navigation-properties

如果我需要填充导航属性的数据库中的实体,似乎我可以执行以下两个查询:

Context.Set().Include().SingleOrDefault();

Context.Entry(entity).Reference().Load();

两者之间是否有任何差异(表现或其他方面)?

1 个答案:

答案 0 :(得分:2)

是不同的:

快速检查EF5源代码:

/// <summary>
/// Calls Load on the underlying <see cref="T:System.Data.Objects.DataClasses.IRelatedEnd"/>.
/// 
/// </summary>
public void Load()
{
  this.ValidateNotDetached("Load");
  this._relatedEnd.Load();
}

所以我总结出差异是

包含转到Db,

首先加载检查上下文。如果没有则加载。

LOAD上的DOCU说

 /// Loads the entity from the database.
 /// Note that if the entity already exists in the context, then it will not overwritten with values from the database.