2013-09-23 13 views
6

Sto provando a scrivere alcune estensioni sopra EF e devo essere in grado di ispezionare un codice prima ObjectContext e recuperare i tipi di entità in esso contenuti. Credo che questo dovrebbe essere disponibile da qualche parte nello spazio di lavoro dei metadati, ma non sono sicuro di dove cercare. Sto usando EF 5.Come posso ottenere l'elenco dei tipi di entità da un ObjectContext in fase di esecuzione utilizzando prima il codice EF?

Nota che non usiamo alcun tipo di generazione di codice per creare i nostri contesti, né mettiamo accessorizzatori DbSet specifici per tipo sulla classe base DbContext. Pertanto, non posso semplicemente riflettere su DbContext/ObjectContext per osservare tali proprietà.

risposta

6

Penso che questo dovrebbe funzionare:

var objectItemCollection = 
    (ObjectItemCollection)((IObjectContextAdapter)ctx) 
    .ObjectContext.MetadataWorkspace.GetItemCollection(DataSpace.OSpace); 

foreach(var entityType in objectItemCollection.GetItems<EntityType>()) 
{ 
    Console.WriteLine(objectItemCollection.GetClrType(entityType).FullName); 
} 
Problemi correlati