[英]when try to get columns exist on table passed to function I get error
Problem 问题
when try to get columns exist on table passed to function I get error 当尝试获取传递给函数的表上的列时,出现错误
Database Facade doesn't contain definition for SqlQuery and no accessible extension method SqlQuery 数据库外观不包含SqlQuery的定义,也没有可访问的扩展方法SqlQuery
I work on asp.net core 2.1 web api code first 我首先在asp.net core 2.1 Web api代码上工作
i try to design function give here table name and it will return columns exist on this 我尝试设计函数给这里表名,它将返回存在于此的列
table but i get compile error 表,但我得到编译错误
Database Facade doesn't contain definition for SqlQuery and no accessible extension method SqlQuery 数据库外观不包含SqlQuery的定义,也没有可访问的扩展方法SqlQuery
so How to solve that Error 那么如何解决该错误
public class TabDbContext : DbContext
{
public TabDbContext(DbContextOptions<TabDbContext> options)
: base(options)
{ }
public DbSet<Employee> Employees { get; set; }
public DbSet<Employee> Departments { get; set; }
ON controller API I do as following : 我在控制器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;
}
Expected Result 预期结果
Employees Table have two columns EmployeeId,EmployeeName 员工表有两列EmployeeId,EmployeeName
calling function as GetColumnNames(Employees) 调用函数作为GetColumnNames(Employees)
will return 将返回
EmployeeId 员工ID
EmployeeName 员工姓名
You can use the FromSql extension method to begin a LINQ query based on a raw SQL query in EF Core 2.1 : 您可以使用FromSql扩展方法来基于EF Core 2.1中的原始SQL查询开始LINQ查询:
https://docs.microsoft.com/en-us/ef/core/querying/raw-sql https://docs.microsoft.com/en-us/ef/core/querying/raw-sql
Then your code would modify like : 然后您的代码将修改为:
var sqlParameter = new SqlParameter("TableName", tablename);
var employees= _context.Employees
.FromSql("select COLUMN_NAME from information_schema.COLUMNS where table_name = @TableName", sqlParameter )
.ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.