Не удается найти метод CreateQuery()

Я новичок в инфраструктуре сущности.

и я не могу найти следующий метод CreateQuery()


enter image description here

почему я не могу найти этот метод?!!

Ответы

Ответ 1

Поскольку ESQL считался расширенным вариантом использования, нет простого API от DbContext. Вы можете получить доступ к ObjectContext, который поддерживает ваш DbContext, чтобы сделать то, что вы хотите:

((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;
    }
}

Ответ 2

Прежде всего, это не собственное решение для запросов в EF. Если вы знаете, что вам действительно нужны альтернативные методы, вернитесь к CreateQuery()

Но вы можете получить результат, который вы хотите, с кастом на System.Data.Entity.Core.Objects.IObjectContextAdapter следующим образом:

(context as IObjectContextAdapter).ObjectContext.CreateQuery

Кроме того, вы можете запускать команды sql с помощью

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

Надеюсь, что это поможет