尝试在表传递到功能上的表格上存在列时,我会发现错误



问题

尝试在传递到功能的表上存在列时,我得到错误

数据库外墙不包含SQLQUERY的定义,也不包含可访问扩展的定义方法sqlquery

我在ASP.NET Core 2.1 Web API代码上工作

我尝试设计功能提供此处表名,它将在此

上返回列

表,但我得到编译错误

数据库外墙不包含SQLQUERY的定义,也不包含可访问扩展的定义方法sqlquery

因此如何解决该错误

public class TabDbContext : DbContext
    {
        public TabDbContext(DbContextOptions<TabDbContext> options)
: base(options)
        { }
        public DbSet<Employee> Employees { get; set; }
        public DbSet<Employee> Departments { get; set; }

在控制器API上我确实如下:

public class EmployeesController : ControllerBase
    {
        private readonly TabDbContext _context;
        public EmployeesController(TabDbContext context)
        {
            _context = context;
        }
 public List<string> GetColumnNames(string tablename)
        {
                var sql = "select COLUMN_NAME from information_schema.COLUMNS where table_name = @TableName";
                SqlParameter sqlParameter = new SqlParameter("TableName", tablename);
                var query = _context.Database.SqlQuery<string>(sql, sqlParameter).ToList();
                return query;
        }

预期结果

员工表有两列员工,applyeename

将函数称为getColumnNames(员工)

将返回

员工

sopporteename

您可以使用FrofSQL扩展方法来基于EF Core 2.1中的RAW SQL查询开始LINQ查询:

https://learn.microsoft.com/en-us/ef/core/querying/raw-sql

然后您的代码会像以下方式修改:

var sqlParameter = new SqlParameter("TableName", tablename);
var employees= _context.Employees
               .FromSql("select COLUMN_NAME from information_schema.COLUMNS where table_name = @TableName", sqlParameter )
               .ToList();

最新更新