![](/img/trans.png)
[英]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.