public virtual IDictionary <IProperty, int> AddToProjection(EntityProjectionExpression entityProjectionExpression) { if (!_entityProjectionCache.TryGetValue(entityProjectionExpression, out var indexMap)) { indexMap = new Dictionary <IProperty, int>(); foreach (var property in GetAllPropertiesInHierarchy(entityProjectionExpression.EntityType)) { indexMap[property] = AddToProjection(entityProjectionExpression.BindProperty(property)); } _entityProjectionCache[entityProjectionExpression] = indexMap; } return(indexMap); }
private Expression BindProperty(EntityProjectionExpression entityProjectionExpression, IProperty property) { return(entityProjectionExpression.BindProperty(property)); }