[英]Get all tables from database and loop through each table using C#, Linq query and Entity Framework
[英]Using Entity Framework, how to create a query which will fetch the column names of all tables from a database
如何使用Entity Framework在C#中创建动态选择查询,该查询将从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;
如您在此处看到的,将获取每个表名称和每个列名称,并创建查询。
使用这个:
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.