使用DbContext.Database.SqlQuery在EntityFramework中加载

时间:2012-02-03 23:35:49

标签: tsql entity-framework-4.1 eager-loading

在EF 4中,我可以通过在DbContext.Database.SqlQueryDbContext.Set<T>().SqlQuery上编写sql来急切加载导航属性吗?我似乎没有填充我的导航属性。

修改

似乎我可以使用DbContext.Set()进行eagerloading。SqlQuery,而不是DbContext.Database.SqlQuery。知道为什么吗?

1 个答案:

答案 0 :(得分:4)

DbSet.SqlQuery与Database.SqlQuery的工作方式不同。 DbSet上的方法适用于给定的实体集。它必须返回给定类型的实体,并且默认情况下将跟踪返回的实体。 Database.SqlQuery可以返回任何对象(可能不是实体),并且上下文永远不会跟踪返回的对象。您可能还想查看msdn来比较两种方法:

Database.SqlQuery - http://msdn.microsoft.com/en-us/library/gg679117(v=vs.103).aspx

DbSet.SqlQuery - http://msdn.microsoft.com/en-us/library/system.data.entity.dbset.sqlquery(v=VS.103).aspx