private void ResolveEntityCollection(FluentCommandDetails details) { if (string.IsNullOrEmpty(Details.CollectionName) && string.IsNullOrEmpty(Details.LinkName)) { EntityCollection = null; } else { EntityCollection entityCollection; if (!string.IsNullOrEmpty(Details.LinkName)) { var parent = new FluentCommand(Details.Parent).Resolve(_sesson); var collectionName = _sesson.Metadata.GetNavigationPropertyPartnerTypeName( parent.EntityCollection.Name, Details.LinkName); entityCollection = _sesson.Metadata.GetEntityCollection(collectionName); } else { entityCollection = _sesson.Metadata.GetEntityCollection(Details.CollectionName); } EntityCollection = string.IsNullOrEmpty(Details.DerivedCollectionName) ? entityCollection : _sesson.Metadata.GetDerivedEntityCollection(entityCollection, Details.DerivedCollectionName); } }
private void ResolveLinkName(FluentCommandDetails details) { if (Details.LinkName == null && details.LinkExpression is not null) { Details.LinkName = details.LinkExpression.AsString(_sesson); } }
private void ResolveDerivedCollectionName(FluentCommandDetails details) { if (Details.DerivedCollectionName == null && details.DerivedCollectionExpression is not null) { var derivedCollectionName = details.DerivedCollectionExpression.AsString(_sesson); Details.DerivedCollectionName = derivedCollectionName; } }
internal ResolvedCommand(FluentCommand command, ISession session) { _sesson = session; Details = new FluentCommandDetails(command.Details); ResolveCollectionName(command.Details); ResolveDerivedCollectionName(command.Details); ResolveLinkName(command.Details); ResolveEntityCollection(command.Details); ResolveKeys(command.Details); ResolveFilter(command.Details); ResolveEntryData(command.Details); }
private void ResolveCollectionName(FluentCommandDetails details) { if (Details.CollectionName == null && details.CollectionExpression is not null) { var collectionName = details.CollectionExpression.AsString(_sesson); var items = collectionName.Split('/'); if (items.Length > 1) { Details.CollectionName = items[0]; Details.DerivedCollectionName = items[1]; } else { Details.CollectionName = collectionName; } } }
private void ResolveKeys(FluentCommandDetails details) { var namedKeyValues = details.KeyValues != null && details.KeyValues.Count == 1 && _sesson.TypeCache.IsAnonymousType(details.KeyValues.First().GetType()) ? _sesson.TypeCache.ToDictionary(details.KeyValues.First()) : details.NamedKeyValues; if (namedKeyValues != null) { if (NamedKeyValuesMatchAnyKey(namedKeyValues, out var matchingKey, out var isAlternateKey)) { Details.NamedKeyValues = matchingKey.ToDictionary(); Details.IsAlternateKey = isAlternateKey; } else { Details.NamedKeyValues = TryExtractKeyFromNamedValues(namedKeyValues, out var containedKey) ? containedKey.ToDictionary() : null; } Details.KeyValues = null; }
public FluentCommandDetails(FluentCommandDetails details) { Parent = details.Parent; CollectionName = details.CollectionName; CollectionExpression = details.CollectionExpression; DerivedCollectionName = details.DerivedCollectionName; DerivedCollectionExpression = details.DerivedCollectionExpression; DynamicPropertiesContainerName = details.DynamicPropertiesContainerName; FunctionName = details.FunctionName; ActionName = details.ActionName; IsAlternateKey = details.IsAlternateKey; KeyValues = details.KeyValues; NamedKeyValues = details.NamedKeyValues; EntryValue = details.EntryValue; EntryData = details.EntryData; Filter = details.Filter; FilterExpression = details.FilterExpression; Search = details.Search; SkipCount = details.SkipCount; TopCount = details.TopCount; ExpandAssociations = details.ExpandAssociations; SelectColumns = details.SelectColumns; OrderbyColumns = details.OrderbyColumns; ComputeCount = details.ComputeCount; IncludeCount = details.IncludeCount; LinkName = details.LinkName; LinkExpression = details.LinkExpression; MediaName = details.MediaName; MediaProperties = details.MediaProperties; QueryOptions = details.QueryOptions; QueryOptionsKeyValues = details.QueryOptionsKeyValues; QueryOptionsExpression = details.QueryOptionsExpression; BatchEntries = details.BatchEntries; Headers = details.Headers; Extensions = details.Extensions; }
internal FluentCommand(ResolvedCommand command) { Details = new FluentCommandDetails(command.Details); }
internal FluentCommand(FluentCommandDetails details) { Details = new FluentCommandDetails(details); }
internal FluentCommand(FluentCommand parent, ConcurrentDictionary <object, IDictionary <string, object> > batchEntries) { Details = new FluentCommandDetails(parent?.Details, batchEntries); }
internal ExtendedFluentCommand(FluentCommandDetails details) : base(details) { }