如何使用Entity Framework在C#中创建动态选择查询,该查询将从SQL数据库中获取所有列名。在这里,查询中要提供的表名是从类型为IEnumerable<string>
有一个列表mylist
,其中索引[0]的表名为Store
,在索引[1]的表为Address
,在[2]的表为{ {1}}。现在,需要将查询激发到数据库,以找出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"
如您在此处看到的,将获取每个表名和每个列名,并创建查询。
答案 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();
}