Используя Entity Framework, как создать запрос, который будет извлекать имена столбцов всех таблиц из базы данных - PullRequest
1 голос
/ 22 апреля 2019

Как создать запрос динамического выбора в C # с использованием Entity Framework, который будет извлекать все имена столбцов из базы данных SQL. Здесь имена таблиц, которые должны быть предоставлены в запросе, извлекаются из общего списка типа IEnumerable<string>

Есть список mylist, где у индекса [0] есть имя таблицы Store, у индекса [1] есть таблица Address, а у [2] есть таблица Country. Теперь запрос необходимо отправить в базу данных, чтобы выяснить, какие есть все имена столбцов для таблиц Store, Address и Country.

Полагаю, окончательный запрос должен быть задан следующим образом:

select    
    mylist[0].1stcolumnname,
    mylist[0].2ndcolumnname,
    .....,
    mylist[1].1stcolumnname,
    mylist[1].2ndcolumnname, ....,
    mylist[2].1stcolumnname,
    mylist[2].2ndcolumnname, 
    .... 
from 
    SOMETABLENAME WITH JOINS" 

Если эти результаты выбраны правильно, тогда конечный запрос на вывод будет выглядеть примерно так:

Select 
    "Store.id", "Store.Name", "Store.gstno", "Store.addressId",  
    "Address.addressId", "Address.addressLine1", "Address.addressLine2", 
    "Address.postcode", "Address.countryId", 
    "Country.countryId", "Country.name"
from 
    SOMETABLENAME WITH JOINS;

Как вы можете видеть здесь, каждое имя таблицы с каждым именем столбца выбирается и создается запрос.

1 Ответ

0 голосов
/ 22 апреля 2019

используйте это:

   using (var db = new EFDemoContext())
            {
                var columnNames = db.Database.SqlQuery<string>(" SELECT T.name + '.' + C.name AS Name
           FROM   sys.objects AS T
           JOIN sys.columns AS C ON T.object_id = C.object_id
           JOIN sys.types AS P ON C.system_type_id = P.system_type_id
           WHERE  T.type_desc = 'USER_TABLE'  and T.name not like  N'%sysdiagrams%';").ToList();
            }
...