【问题标题】:Can't find CreateQuery() method找不到 CreateQuery() 方法
【发布时间】:2013-01-24 16:32:39
【问题描述】:

我是实体框架的新手。

我找不到下面的方法CreateQuery()


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

【问题讨论】:

  • 你不需要那个。如果您需要检索PersonCreditCards 值,只需执行context.PersonCreditCards.Where(criteria)。它被称为 LinQ to Entities。对此进行研究。
  • 我也想学EntitySQLQuery。我想用这个方法:)

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


【解决方案1】:

由于 ESQL 被认为是一种高级用例,因此 DbContext 没有直接的 API。您可以访问支持您的DbContextObjectContext 来做您想做的事:

((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 中查询的原生解决方案。请尽可能多地学习 LINQ,然后,如果您知道自己确实需要替代方法,请回退到 CreateQuery()

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

    (context as IObjectContextAdapter).ObjectContext.CreateQuery

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

    context.Database.SqlQuery&lt;&gt;()context.Database.ExecuteSqlCommand()

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      我正在使用 ef core,我想从 sqlserver 获取服务器时间,但在我的情况下,这些方法都不起作用。 IObjectContextAdapter 无法识别,它要求我下载 ef 6。

      我找到了下面的语句来获取服务器时间:

      private DateTime GetServerTime()
      {
          using (var db = new DbContext())
          {
              DbConnection connection = db.Database.GetDbConnection();
              connection.Open();
              DbCommand cmd = connection.CreateCommand();
              cmd.CommandText = "SELECT GETDATE()";
              return (DateTime)cmd.ExecuteScalar();
          }
      }
      

      您可以使用此方法创建任何 sql 语句并从 db 获取数据。 希望它可以帮助某人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-20
        • 1970-01-01
        • 2020-05-07
        • 2020-03-16
        • 2021-05-31
        相关资源
        最近更新 更多