private InternalIndexBuilder Index(IReadOnlyList <Property> properties, ConfigurationSource configurationSource) { return(_indexBuilders.Value.GetOrAdd( () => Metadata.TryGetIndex(properties), () => Metadata.AddIndex(properties), index => new InternalIndexBuilder(index, ModelBuilder), configurationSource)); }
private InternalIndexBuilder Index(IReadOnlyList <Property> properties, ConfigurationSource configurationSource) => properties == null ? null : _indexBuilders.Value.GetOrAdd( () => Metadata.FindIndex(properties), () => Metadata.AddIndex(properties), index => new InternalIndexBuilder(index, ModelBuilder), configurationSource);
public IndexBuilder Index([NotNull] params string[] propertyNames) { Check.NotNull(propertyNames, "propertyNames"); var properties = propertyNames.Select(n => Metadata.GetProperty(n)).ToArray(); var index = Metadata.AddIndex(properties); return(new IndexBuilder(index, ModelBuilder)); }
public IndexBuilder Index([NotNull] Expression <Func <TEntity, object> > indexExpression) { Check.NotNull(indexExpression, "indexExpression"); var properties = indexExpression.GetPropertyAccessList() .Select(pi => Metadata.TryGetProperty(pi.Name) ?? Metadata.AddProperty(pi)) .ToArray(); var index = Metadata.AddIndex(properties); return(new IndexBuilder(index, ModelBuilder)); }