问题
尝试在传递到功能的表上存在列时,我得到错误
数据库外墙不包含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();