使用Entity Framework,如何创建一个查询,该查询将从数据库中获取所有表的列名

问题描述 投票:1回答:1

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

有一个列表mylist,其中index [0]的表名为Store,索引[1]有一个表Address,在[2]有一个表Country。现在,需要向数据库触发查询,以找出StoreAddressCountry表的所有列名称。

我假设,最终的查询应该以下面的方式 -

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;

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

c# .net entity-framework ienumerable generic-list
1个回答
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();
            }
© www.soinside.com 2019 - 2024. All rights reserved.