/// <summary> /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in /// any release. You should only use it directly in your code with extreme caution and knowing that /// doing so can result in application failures when updating to a new Entity Framework Core release. /// </summary> public static MemberInfo GetNavigationMemberInfo( this IReadOnlyEntityType entityType, string navigationName) { MemberInfo?memberInfo; if (entityType.IsPropertyBag) { memberInfo = entityType.FindIndexerPropertyInfo() !; } else { memberInfo = entityType.ClrType.GetMembersInHierarchy(navigationName).FirstOrDefault(); if (memberInfo == null) { throw new InvalidOperationException( CoreStrings.NoClrNavigation(navigationName, entityType.DisplayName())); } } return(memberInfo); }