0

對於簡單問題感到抱歉。我是新來的。我有一個包含多個表的實體模型,我想獲取表的列表,然後我想從表中獲取列的內容。例如,我有主題表:生物學,化學和物理學,每一個都有一個列類名(其他列)。我想遍歷表格,獲取名稱,然後獲取該列下的內容,因爲我需要ToList()它。通過實體框架中的表循環6

我想要做這樣的事情:

for each (table in myEntityModel) 
{ 
    Get tableName from table 
    Get contents under className from table 
} 

我使用metadataworkspace嘗試,和我的表名的列表,但這並沒有幫助我太多讓每個表的內容。我可以查詢單個表格,但我不知道如何更改表格。如果我使用:從myEntity.Biology中的r選擇{...},我無法更改我所指的實體集。

呵呵,如果我正在做的事情的上下文有幫助,我正嘗試在Visual Studios 2015的Ajax Control Toolkit 16.1的幫助下構建一個手風琴。我正在使用Entity Framework 6.0。主題名稱將成爲headercontainer,類的列表將作爲gridview添加到手風琴窗格中。我不熟悉C#,Visual Studios,數據庫,查詢,實體模型以及我正在使用的幾乎所有內容,但可以隨意使用盡可能多的術語。如果有什麼讓我困惑,我會谷歌。謝謝!

+0

你不應該有每科的表開始。你有沒有可能改進數據庫設計? –

回答

1

它的效率不高,因爲它加載在內存整個表,但你可以這樣做:

var myEntityModel = new MyEntityModel(); //your context 

var dbSets = myEntityModel.GetType().GetProperties().Where(p => p.PropertyType.Name.StartsWith("DbSet")); //get Dbset<T> 

foreach (var dbSetProps in dbSets) 
{ 
    var dbSet = dbSetProps.GetValue(myEntityModel, null); 
    var dbSetType = dbSet.GetType().GetGenericArguments().First(); 

    var classNameProp = dbSetType.GetProperty("className");// i did not undestand, you want classes with className property? 

    if (classNameProp != null) 
    { 
     var contents = ((IEnumerable) dbSet).Cast<object>().ToArray();//Get The Contents of table 
    } 
+0

我想循環遍歷每張桌子的每個字段 - 這幫助我達到了目標。謝謝。 –