找不到CreateQuery()方法

问题描述 投票:15回答:2

我是实体框架的新手。

而且我找不到以下方法CreateQuery()


<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9KTVk1Qi5wbmcifQ==” alt =“在此处输入图像描述”>

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

c# asp.net entity-framework visual-studio-2012 createquery
2个回答
19
投票

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

((IObjectContextAdapter)context).ObjectContext.CreateQuery<Person>("esql..")

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

如此处所建议,您还可以将方法(或属性)ObjectContext添加到上下文类:

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    public ObjectContext ObjectContext()
    {
        return (this as IObjectContextAdapter).ObjectContext;
    }
}

7
投票

首先,这不是在EF中进行查询的本机解决方案。请尽可能多地学习LINQ,然后,如果您确实需要替代方法,请退回到CreateQuery()

但是,您可以像这样将其转换为System.Data.Entity.Core.Objects.IObjectContextAdapter来获得所需的结果:

(context as IObjectContextAdapter).ObjectContext.CreateQuery

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

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

希望这会有所帮助


0
投票

我认为他要问的是我们的某些方法去了哪里。我的Dbcontext没有显示CreateQuery <>()。它曾经做过,但突然间消失了。DbContext可能需要一些构造函数,共有七个构造函数。