Can't find CreateQuery() method

asp.net c# createquery entity-framework visual-studio-2012

Question

I'm a new beginner to the entity framework .

and i can't find the following method CreateQuery()


enter image description here

why i can't find this method ?!!

1
15
1/24/2013 4:32:39 PM

Accepted Answer

Since ESQL was considered an advanced use case, there is no straightforward API from DbContext. You can access the ObjectContext that backs your DbContext to do what you want:

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

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

As suggested there, you can also add a method ( or property) ObjectContext to your context class:

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

    public ObjectContext ObjectContext()
    {
        return (this as IObjectContextAdapter).ObjectContext;
    }
}
20
2/3/2013 12:41:36 PM

Popular Answer

First of all, this is not the native solution for querying in EF. Please learn as much LINQ as you can and then, if you know you really need alternate methods, fall back to CreateQuery()

But, you can get the result you want with casting to System.Data.Entity.Core.Objects.IObjectContextAdapter like this:

(context as IObjectContextAdapter).ObjectContext.CreateQuery

Also, you can run sql commands with:

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

Hope this helps



Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow