首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到CreateQuery()方法

找不到CreateQuery()方法
EN

Stack Overflow用户
提问于 2013-01-24 16:32:39
回答 3查看 8.6K关注 0票数 16

我是实体框架的新手。

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-03 12:35:19

由于ESQL被认为是一个高级的用例,所以DbContext没有直接的API。您可以访问支持您的ObjectContext来执行您想做的事情:

代码语言:javascript
复制
((IObjectContextAdapter)context).ObjectContext.CreateQuery<Person>("esql..")

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

按照这里的建议,还可以向上下文类添加一个方法(或属性) ObjectContext

代码语言:javascript
复制
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    public ObjectContext ObjectContext()
    {
        return (this as IObjectContextAdapter).ObjectContext;
    }
}
票数 21
EN

Stack Overflow用户

发布于 2013-02-02 14:27:40

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

但是,您可以像这样将结果转换为System.Data.Entity.Core.Objects.IObjectContextAdapter

(context as IObjectContextAdapter).ObjectContext.CreateQuery

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

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

希望这能有所帮助

票数 7
EN

Stack Overflow用户

发布于 2020-09-19 21:27:31

我正在使用ef核心,我希望从sqlserver获得服务器时间,而在我的情况下,所有的方法都不起作用。IObjectContextAdapter没有被识别,它让我下载ef 6。

我发现下面的语句可以获取服务器时间:

代码语言:javascript
复制
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获取数据。希望它能帮到别人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14506161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档