在EF6中,此方法用于检索实体的导航属性:
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(); }
但在EF核中不存在。我应该在哪里获取实体的导航属性列表?
最佳答案
幸运的是,在实体框架核心中访问模型数据变得容易得多。这是一种列出实体类型名称及其导航属性信息的方法:
using Microsoft.EntityFrameworkCore; ... var modelData = db.Model.GetEntityTypes() .Select(t => new { t.ClrType.Name, NavigationProperties = t.GetNavigations().Select(x => x.PropertyInfo) });
…其中db是上下文实例。
您可能希望使用重载GetEntityTypes(typeof(T))。