при попытке получить столбцы в таблице передается в функцию, я получаю сообщение об ошибке - PullRequest
0 голосов
/ 12 марта 2019

Задача

при попытке получить столбцы в таблице, переданной в функцию, я получаю ошибку

Фасад базы данных не содержит определения для SqlQuery и не имеет доступного расширения Метод SqlQuery

Сначала я работаю над asp.net core 2.1 web api code

Я пытаюсь создать функцию, дайте здесь имя таблицы, и она вернет столбцы, существующие в этом

таблица, но я получаю ошибку компиляции

Фасад базы данных не содержит определения для 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;

        }

Ожидаемый результат

Таблица сотрудников имеет два столбца EmployeeId, EmployeeName

вызов функции как GetColumnNames (Employees)

вернет

EmployeeID

EmployeeName

1 Ответ

0 голосов
/ 12 марта 2019

Вы можете использовать метод расширения FromSql, чтобы начать запрос LINQ на основе необработанного SQL-запроса в EF Core 2.1:

https://docs.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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...