Спасибо, что посмотрели.Использование ADO.NET MetaDataWorkspace, как мне получить список всех внешних ключей для каждого объекта?
Мне нужно допросить класс сущности, чтобы получить список всех объектов (таблиц), а для каждого объекта/таблицы мне нужен список всех внешних ключей (свойства навигации?), А также количество записей, хранящихся в соответствующей таблице данных этого объекта.
До сих пор я выяснил, как получить список всех объектов, но я зациклился на том, как получить внешние ключи и количество записей для каждого. Любая помощь приветствуется.
Вот мой код до сих пор:
public static void GetAllEntities(SomeEntityContext db)
{
int trick = db.Some_Table.Count(); //The code below won't work without running some initial call against the entity context. Not sure why.
//Get a list of entities/tables
IEnumerable<EntitySet> tables = db.MetadataWorkspace.GetItemCollection(DataSpace.SSpace)
.GetItems<EntityContainer>()
.Single()
.BaseEntitySets
.OfType<EntitySet>()
.Where(s => !s.MetadataProperties.Contains("Type")
|| s.MetadataProperties["Type"].ToString() == "Tables");
foreach (var table in tables)
{
var tableName = table.MetadataProperties.Contains("Table")
&& table.MetadataProperties["Table"].Value != null
? table.MetadataProperties["Table"].Value.ToString()
: table.Name;
//Print out some data
System.Diagnostics.Debug.WriteLine(tableName);
//ALSO NEED THE FOLLOWING:
//--Count of records in table
//--List of foreign keys for table
}
}