diff --git a/src/LinqTests/Acceptance/Support/DefaultQueryFixture.cs b/src/LinqTests/Acceptance/Support/DefaultQueryFixture.cs index e083c8c7cb..238738d5cf 100644 --- a/src/LinqTests/Acceptance/Support/DefaultQueryFixture.cs +++ b/src/LinqTests/Acceptance/Support/DefaultQueryFixture.cs @@ -9,10 +9,10 @@ public class DefaultQueryFixture: TargetSchemaFixture { public DefaultQueryFixture() { - Store = provisionStore("linq_querying"); + Store = ProvisionStore("linq_querying"); - DuplicatedFieldStore = provisionStore("duplicate_fields", o => + DuplicatedFieldStore = ProvisionStore("duplicate_fields", o => { o.Schema.For() .Duplicate(x => x.Number) @@ -25,7 +25,7 @@ public DefaultQueryFixture() .Duplicate(x => x.NumberArray); }); - SystemTextJsonStore = provisionStore("stj", o => + SystemTextJsonStore = ProvisionStore("stj", o => { o.Serializer(); }); diff --git a/src/LinqTests/Acceptance/Support/TargetSchemaFixture.cs b/src/LinqTests/Acceptance/Support/TargetSchemaFixture.cs index 29840237c8..8248c38575 100644 --- a/src/LinqTests/Acceptance/Support/TargetSchemaFixture.cs +++ b/src/LinqTests/Acceptance/Support/TargetSchemaFixture.cs @@ -21,7 +21,7 @@ public void Dispose() } } - protected DocumentStore provisionStore(string schema, Action configure = null) + internal DocumentStore ProvisionStore(string schema, Action configure = null) { var store = DocumentStore.For(x => { @@ -39,4 +39,4 @@ protected DocumentStore provisionStore(string schema, Action confi return store; } -} \ No newline at end of file +} diff --git a/src/LinqTests/Acceptance/child_collection_queries.cs b/src/LinqTests/Acceptance/child_collection_queries.cs index a3dffc9950..aa32149e67 100644 --- a/src/LinqTests/Acceptance/child_collection_queries.cs +++ b/src/LinqTests/Acceptance/child_collection_queries.cs @@ -77,6 +77,16 @@ public Task run_query(string description) return assertTestCase(description, Fixture.Store); } + [Theory] + [MemberData(nameof(GetDescriptions))] + public Task run_query_with_camel_casing(string description) + { + var store = Fixture.ProvisionStore("linq_with_camel_casing", + opts => opts.UseSystemTextJsonForSerialization(casing: Casing.CamelCase)); + + return assertTestCase(description, store); + } + [Theory] [MemberData(nameof(GetDescriptions))] diff --git a/src/Marten/Linq/SqlGeneration/Filters/CollectionIsEmpty.cs b/src/Marten/Linq/SqlGeneration/Filters/CollectionIsEmpty.cs index e284014ac0..92e63c97b7 100644 --- a/src/Marten/Linq/SqlGeneration/Filters/CollectionIsEmpty.cs +++ b/src/Marten/Linq/SqlGeneration/Filters/CollectionIsEmpty.cs @@ -15,7 +15,9 @@ internal class CollectionIsEmpty: IReversibleWhereFragment public CollectionIsEmpty(ICollectionMember member) { _member = member; - _text = $"d.data @? '$ ? (@.{member.MemberName} == null || @.{member.MemberName}.size() == 0)'"; + // deeply ashamed by the replace here, but it does work. + var jsonPath = member.WriteJsonPath().Replace("[*]", ""); + _text = $"d.data @? '$ ? (@.{jsonPath} == null || @.{jsonPath}.size() == 0)'"; } public ISqlFragment Reverse()