internal static MemberProjectionIndex Create(
            EntitySetBase extent,
            EdmItemCollection edmItemCollection)
        {
            MemberProjectionIndex index = new MemberProjectionIndex();

            MemberProjectionIndex.GatherPartialSignature(index, edmItemCollection, new MemberPath(extent), false);
            return(index);
        }
 private static void GatherSignatureFromTypeStructuralMembers(
     MemberProjectionIndex index,
     EdmItemCollection edmItemCollection,
     MemberPath member,
     StructuralType possibleType,
     bool needKeysOnly)
 {
     foreach (EdmMember structuralMember in (IEnumerable)Helper.GetAllStructuralMembers((EdmType)possibleType))
     {
         if (MetadataHelper.IsNonRefSimpleMember(structuralMember))
         {
             if (!needKeysOnly || MetadataHelper.IsPartOfEntityTypeKey(structuralMember))
             {
                 MemberPath member1 = new MemberPath(member, structuralMember);
                 index.CreateIndex(member1);
             }
         }
         else
         {
             MemberPath member1 = new MemberPath(member, structuralMember);
             MemberProjectionIndex.GatherPartialSignature(index, edmItemCollection, member1, needKeysOnly || Helper.IsAssociationEndMember(structuralMember));
         }
     }
 }