找不到CreateQuery()方法

Any*_*are 15 c# asp.net entity-framework createquery visual-studio-2012

我是实体框架的新手.

我找不到以下方法CreateQuery()


在此输入图像描述

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

man*_*lds 20

由于ESQL被认为是一个高级用例,因此没有直接的API DbContext.你可以访问它ObjectContext来支持你DbContext做你想做的事情:

((IObjectContextAdapter)context).ObjectContext.CreateQuery<Person>("esql..")
Run Code Online (Sandbox Code Playgroud)

相关: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;
    }
}
Run Code Online (Sandbox Code Playgroud)


Ali*_*eza 7

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

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

(context as IObjectContextAdapter).ObjectContext.CreateQuery

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

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

希望这可以帮助