0

. Bu konuda yeniyim. Birkaç tablo içeren bir varlık modelim var ve tabloların bir listesini almak istiyorum, o zaman bir sütunun içeriğini tablolardan almak istiyorum. Örneğin, konu sütunlarım var: Biyoloji, Kimya ve Fizik, her biri bir sütun className (diğer sütunlar arasında). Tablolar arasında dolaşmak, ismini almak ve daha sonra bu sütunun altındaki içeriği almak istiyorum çünkü ToList()'a ihtiyacım var.Basit soru için özür dileriz: Varlık Çerçevesi 6

Böyle bir şey yapmak istiyorum: Ben MetadataWorkspace kullanarak denedim

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

ve ben tabloismi bir listesi var, ama bu her tablonun içeriğini almak beni çok fazla yardımcı olmadı . Tek tek tabloları sorgulayabiliyorum, ancak yaptığım zaman tabloları nasıl değiştireceğimi bilmiyorum. Eğer kullanırsam: myEntity.Biology öğesinde r {...} seçeneğini seçtiğimde, atıfta bulunduğum varlık grubunu değiştiremiyorum.

Oh, ve, yaptığım şeyin içeriği yardımcı olursa, Visual Studio 2015'te Ajax Denetim Araç Takımı 16.1 yardımıyla bir akordeon oluşturmaya çalışıyorum. Entity Framework 6.0 kullanıyorum. Konunun adı, headercontainer olacak ve sınıfların listesi akordeon bölmesine gridview olarak eklenecektir. Ben C#, Visual Studios, veritabanları, sorguları, varlık modelleri ve çalışıyorum hemen hemen her şey yeni, ama istediğiniz kadar jargon kullanmak için çekinmeyin. Bir şey beni şaşırtığında google. Teşekkür ederim! bellekte tüm tabloyu yüklemesidir

+0

başlangıç ​​ile konu başına bir tablo olmamalıdır. Veritabanı tasarımını geliştirebileceğiniz herhangi bir şans var mı? –

cevap

1

O, verimli değil, ama bunu yapabilirsiniz:

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

Her tablonun her alanında dolaşmak istedim - bu bana ulaşmamı sağladı. Teşekkürler. –