In EF6, questo metodo funziona per recuperare le proprietà di navigazione di un'entità:
private List<PropertyInfo> GetNavigationProperties<T>(DbContext context) where T : class
{
var entityType = typeof(T);
var elementType = ((IObjectContextAdapter)context).ObjectContext.CreateObjectSet<T>().EntitySet.ElementType;
return elementType.NavigationProperties.Select(property => entityType.GetProperty(property.Name)).ToList();
}
IObjectContextAdapter
tuttavia non esiste in EF Core. Dove dovrei cercare l'elenco delle proprietà di navigazione di un'entità?
Fortunatamente, l'accesso ai dati del modello è diventato molto più semplice nel core di Entity Framework. Questo è un modo per elencare i nomi dei tipi di entità e le loro informazioni sulla proprietà di navigazione:
using Microsoft.EntityFrameworkCore;
...
var modelData = db.Model.GetEntityTypes()
.Select(t => new
{
t.ClrType.Name,
NavigationProperties = t.GetNavigations().Select(x => x.PropertyInfo)
});
... dove db
è un'istanza di contesto.
Probabilmente ti piacerebbe utilizzare l'overload GetEntityTypes(typeof(T))
.