在EF 4中,我可以通过在DbContext.Database.SqlQuery
或DbContext.Set<T>().SqlQuery
上编写sql来急切加载导航属性吗?我似乎没有填充我的导航属性。
修改
似乎我可以使用DbContext.Set()进行eagerloading。SqlQuery,而不是DbContext.Database.SqlQuery。知道为什么吗?
答案 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