.net 使用DbContext的实体Sql查询
将实体框架项目从.net 使用DbContext的实体Sql查询,.net,entity-framework,dbcontext,objectcontext,.net,Entity Framework,Dbcontext,Objectcontext,将实体框架项目从ObjectContext迁移到DbContext,我发现没有办法直接使用DbContext执行E-Sql查询字符串。(实体SQL不是SQL,而是类似SQL的查询语言,请参见此) 以前的代码如下所示: (其中,AdventureWorksEntities现在是一个DbContext) 这确实有效。但是,由于我宁愿限制我使用的API的数量,有没有一种方法可以直接从DbContext执行E-SQL查询,而不必显式地访问底层的ObjectContext (顺便说一句,我不需要使用Obj
ObjectContext
迁移到DbContext
,我发现没有办法直接使用DbContext
执行E-Sql查询字符串。(实体SQL不是SQL,而是类似SQL的查询语言,请参见此)
以前的代码如下所示:
(其中,AdventureWorksEntities
现在是一个DbContext
)
这确实有效。但是,由于我宁愿限制我使用的API的数量,有没有一种方法可以直接从DbContext
执行E-SQL查询,而不必显式地访问底层的ObjectContext
(顺便说一句,我不需要使用
ObjectQuery
。我知道我可以轻松地将这些示例转换为使用其他查询解决方案(如Linq)的实体,但我当前的用例现在需要使用E-SQL查询字符串。)此链接用于原始SQL查询。与E-SQL查询有什么关系?哦,我的错误是,没有发现区别。
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
string myQuery = @"SELECT p.ProductID, p.Name FROM
AdventureWorksEntities.Products as p";
foreach (DbDataRecord rec in
new ObjectQuery<DbDataRecord>(myQuery, context))
{
Console.WriteLine("ID {0}; Name {1}", rec[0], rec[1]);
}
}
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
string myQuery = @"SELECT p.ProductID, p.Name FROM
AdventureWorksEntities.Products as p";
foreach (DbDataRecord rec in
new ObjectQuery<DbDataRecord>(myQuery,
((IObjectContextAdapter)context).ObjectContext))
{
Console.WriteLine("ID {0}; Name {1}", rec[0], rec[1]);
}
}