1

Спасибо, что посмотрели.Использование 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 

      } 
     } 

ответ

0

Попробуйте создать расширение DbContext следующим образом: например http://weblogs.asp.net/ricardoperes/entity-framework-metadata

Эти методы должны позволить вам определить FKs из TableNavigationColumns и т.д.

  • GetTables
  • GetTableName
  • OneToMany
  • OneToOne
  • ManyToOne
  • ManyToMany
  • GetIdP СВОЙСТВА
  • GetNavigationProperties
  • GetTableKeyColumns
  • GetTableColumns
  • GetTableNavigationColumns