ahmed_sa Ответов: 1

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


Проблема

Я работаю дальше asp.net ядро 2.1 проект и мне нужно спроектировать функцию передать ему имя таблицы

есть ли столбцы в этой таблице ?

предположим,у меня есть таблица employee, имеющая два столбца employeeid, employeename

затем, когда проход таблицы employee имя, функция возвращает два столбца

кодсотрудника,employeename .

public List<string> GetColumns<T>(How to pass table name here as string)
        {
            var columnNames = _context.Model.FindEntityType(typeof(T))
                   .GetProperties().Select(x => x.Relational().ColumnName).ToList();
            return columnNames;
        }

Как передать имя таблицы в виде строки в функции выше
я пытаюсь, но это дает мне ошибку компиляции
на Т

Что я уже пробовал:

public List<string> GetColumns<T>(List<T> _)
       {
           var columnNames = _context.Model.FindEntityType(typeof(T))
                  .GetProperties().Select(x => x.Relational().ColumnName).ToList();
           return columnNames;
       }

Gerry Schmitz

(Список<t> _)

Что ты хочешь этим сказать? Это "строка": имя строки

ahmed_sa

публичный список<string> GetColumnNames(string tablename)
{

ahmed_sa

публичный список<string> GetColumnNames(string tablename)
{
var columnNames = _context.Model.FindEntityType(typeof(T))
.GetProperties().Select(x => x.Relational().Имя_столбца).Список();
возврат имен столбцов;
}

ahmed_sa

Я ПОЛУЧАЮ ОШИБКУ НА T

1 Ответов

Рейтинг:
2

MadMyche

Почему бы тебе не поработать над субботним вопросом
Как получить поля, существующие в таблице, передавая имя таблицы с помощью ASP.NET ядро 2.1 ?[^]

Чтобы развить это
1. Создайте новую модель, которая отражает основы системной таблицы sql, содержащей информацию о столбце, информационная схема.Столбцы Хотя Entity Framework может не нравиться работать с этой таблицей, вы всегда можете использовать ADO.

SELECT  TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
     ,  CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE
FROM    INFORMATION_SCHEMA.COLUMNS
WHERE   (TABLE_SCHEMA <> 'sys')

2. Если вы хотите запустить свою функцию, вы можете заполнить коллекцию этой новой модели и использовать LINQ или что-то еще для выполнения поиска.

Этот подход также позволит вам найти все таблицы, имеющие определенный именованный столбец.