如何在Entity Framework中访问context.Database.SqlQuery?

我正在尝试按照本教程:

http://blogs.msdn.com/b/diego/archive/2012/01/10/how-to-execute-stored-procedures-sqlquery-in-the-dbcontext-api.aspx

但似乎无法访问此方法,它不会出现在智能上

context.Database.SqlQuery 

我使用以下代码但似乎无法访问SqlQuery方法:

 using(Entities db = new Entities()) { } 

您描述的方法对于执行SQL与EF的DbContext版本有效。 ( DbContext用于Code First,也可用于模型,但您需要进行一些设置)。 但是在您的示例中,它应该是以下内容。

 using(Entities db = new Entities()) { db.Database.SqlQuery(....); } 

如果您首先使用OOB模型(即edmx),则可能使用的是ObjectContext ,在这种情况下,您需要执行以下操作:

 using(Entities db = new Entities()) { db.ExecuteStoreQuery("..."); } 

请参阅: http : //blogs.microsoft.co.il/blogs/gilf/archive/2009/11/25/execute-t-sql-statements-in-entity-framework-4.aspx

 return context.Database.SqlQuery("mySpName {0}, {1}, {2}", new object[] { param1, param2, param3 }); 

//要么

 using(var context = new MyDataContext()) { return context.Database.SqlQuery("mySpName {0}, {1}, {2}", new object[] { param1, param2, param3 }).ToList(); } 

//要么

 using(var context = new MyDataContext()) { object[] parameters = { param1, param2, param3 }; return context.Database.SqlQuery("mySpName {0}, {1}, {2}", parameters).ToList(); } 

//要么

 using(var context = new MyDataContext()) { return context.Database.SqlQuery("mySpName {0}, {1}, {2}", param1, param2, param3).ToList(); }