使用实体框架,如何创建查询以从数据库中获取所有表的列名

时间:2019-04-22 07:28:30

标签: c# .net entity-framework ienumerable generic-list

如何使用Entity Framework在C#中创建动态选择查询,该查询将从SQL数据库中获取所有列名。在这里,查询中要提供的表名是从类型为IEnumerable<string>

的通用列表中获取的。

有一个列表mylist,其中索引[0]的表名为Store,在索引[1]的表为Address,在[2]的表为{ {1}}。现在,需要将查询激发到数据库,以找出CountryStoreAddress表的所有列名称。

我认为,最终查询应采用以下方式进行放置-

Country

如果正确提取了这些结果,则要触发的最终输出查询将类似于

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

如您在此处看到的,将获取每个表名和每个列名,并创建查询。

1 个答案:

答案 0 :(得分:0)

使用这个:

   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();
            }