diff --git a/src/Squidex.Domain.Apps.Core/Schemas/Field.cs b/src/Squidex.Domain.Apps.Core/Schemas/Field.cs index 8b46a624b..ea86d1a30 100644 --- a/src/Squidex.Domain.Apps.Core/Schemas/Field.cs +++ b/src/Squidex.Domain.Apps.Core/Schemas/Field.cs @@ -164,7 +164,9 @@ namespace Squidex.Domain.Apps.Core.Schemas partitionType.AddStructuralProperty(partitionItem.Key, edmValueType); } - edmType.AddStructuralProperty(Name, new EdmComplexTypeReference(partitionType, false)); + var edmName = Name.Replace("-", "_"); + + edmType.AddStructuralProperty(edmName, new EdmComplexTypeReference(partitionType, false)); } public void AddToJsonSchema(JsonSchema4 schema, PartitionResolver partitionResolver, string schemaName, Func schemaResolver) diff --git a/src/Squidex.Domain.Apps.Read.MongoDb/Contents/Visitors/PropertyVisitor.cs b/src/Squidex.Domain.Apps.Read.MongoDb/Contents/Visitors/PropertyVisitor.cs index 59ab888fe..e1259d58c 100644 --- a/src/Squidex.Domain.Apps.Read.MongoDb/Contents/Visitors/PropertyVisitor.cs +++ b/src/Squidex.Domain.Apps.Read.MongoDb/Contents/Visitors/PropertyVisitor.cs @@ -28,7 +28,9 @@ namespace Squidex.Domain.Apps.Read.MongoDb.Contents.Visitors if (propertyNames.Length == 3) { - if (!schema.FieldsByName.TryGetValue(propertyNames[1], out Field field)) + var edmName = propertyNames[1].Replace("_", "-"); + + if (!schema.FieldsByName.TryGetValue(edmName, out Field field)) { throw new NotSupportedException(); } diff --git a/tests/Squidex.Domain.Apps.Read.Tests/Contents/ODataQueryTests.cs b/tests/Squidex.Domain.Apps.Read.Tests/Contents/ODataQueryTests.cs index 824262f8e..72d3edee7 100644 --- a/tests/Squidex.Domain.Apps.Read.Tests/Contents/ODataQueryTests.cs +++ b/tests/Squidex.Domain.Apps.Read.Tests/Contents/ODataQueryTests.cs @@ -46,7 +46,9 @@ namespace Squidex.Domain.Apps.Read.Contents .AddOrUpdateField(new AssetsField(6, "pictures", Partitioning.Invariant, new AssetsFieldProperties())) .AddOrUpdateField(new ReferencesField(7, "friends", Partitioning.Invariant, - new ReferencesFieldProperties())); + new ReferencesFieldProperties())) + .AddOrUpdateField(new StringField(8, "dashed-field", Partitioning.Invariant, + new StringFieldProperties())); private readonly IBsonSerializerRegistry registry = BsonSerializer.SerializerRegistry; private readonly IBsonSerializer serializer = BsonSerializer.SerializerRegistry.GetSerializer(); @@ -83,6 +85,15 @@ namespace Squidex.Domain.Apps.Read.Contents Assert.NotNull(parser); } + [Fact] + public void Should_make_query_with_underscore_field() + { + var i = F("$filter=data/dashed_field/iv eq 'Value'"); + var o = C("{ 'do.8.iv' : 'Value' }"); + + Assert.Equal(o, i); + } + [Fact] public void Should_create_not_operator() {