我是实体框架的新手。
我找不到下面的方法CreateQuery()

为什么我找不到这个方法!
发布于 2013-02-03 12:35:19
由于ESQL被认为是一个高级的用例,所以DbContext没有直接的API。您可以访问支持您的ObjectContext来执行您想做的事情:
((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;
}
}发布于 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()
希望这能有所帮助
发布于 2020-09-19 21:27:31
我正在使用ef核心,我希望从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获取数据。希望它能帮到别人。
https://stackoverflow.com/questions/14506161
复制相似问题