首页 > 解决方案 > 如何在 EFCore 中使用 EF .SqlQuery 表达式?

问题描述

我正在重构代码,我有这个问题。

public class MovimentoManualListRepository : RepositoryBase<MovimentoManualList>, IMovimentoManualListRepository
{
    ConsultarContext _context;
    public MovimentoManualListRepository(ConsultarContext context) : base(context)
    {
        _context = context;
    }

    public List<MovimentoManualList> Listar()
    {
        return _context.Database
            .SqlQuery<MovimentoManualList>("ListarMovimentacao")
            .ToList();
    }
}

我收到一个错误:

严重性代码描述项目文件行抑制状态错误 CS1061“DatabaseFacade”不包含“SqlQuery”的定义,并且找不到接受“DatabaseFacade”类型的第一个参数的可访问扩展方法“SqlQuery”(您是否缺少 using 指令或装配参考?)

标签: c#.netentity-framework.net-coreentity-framework-core

解决方案


你是说FromSqlRaw.?

基本的原始 SQL 查询

您可以使用FromSqlRaw扩展方法开始基于原始 SQL 查询的 LINQ 查询。FromSqlRaw只能用于查询根,即直接在DbSet<>.

var blogs = context.Blogs
   .FromSqlRaw("SELECT * FROM dbo.Blogs")
   .ToList();

下面执行一个存储过程

var blogs = context.Blogs
    .FromSqlRaw("EXECUTE dbo.GetMostPopularBlogs")
    .ToList();

请注意:

  • 它可以与 Linq 查询混合并匹配
  • 有限制

请参阅原始 SQL 查询


推荐阅读