找不到CreateQuery()方法

我是entity framework的新手。

我找不到以下方法CreateQuery()


在此处输入图像描述

为什么我找不到这种方法?!!

由于ESQL被认为是高级用例,因此DbContext没有直接的API。 您可以访问支持DbContextObjectContext来执行您想要的操作:

 ((IObjectContextAdapter)context).ObjectContext.CreateQuery("esql..") 

相关: http : //thedatafarm.com/blog/data-access/accessing-objectcontext-features-from-ef-4-1-dbcontext/

正如那里所建议的,您还可以向上下文类添加方法(或属性) ObjectContext

 public class BloggingContext : DbContext { public DbSet Blogs { get; set; } public DbSet Posts { get; set; } public ObjectContext ObjectContext() { return (this as IObjectContextAdapter).ObjectContext; } } 

首先,这不是EF中查询的本机解决方案。 请尽可能多地学习LINQ然后,如果你知道你真的需要替代方法,那就回到CreateQuery()

但是,您可以通过强制转换为System.Data.Entity.Core.Objects.IObjectContextAdapter获得所需的结果,如下所示:

(context as IObjectContextAdapter).ObjectContext.CreateQuery

此外,您可以使用以下命令运行sql命令:

context.Database.SqlQuery<>()context.Database.ExecuteSqlCommand()

希望这可以帮助