diff --git a/src/DocumentDbTests/Indexes/computed_indexes.cs b/src/DocumentDbTests/Indexes/computed_indexes.cs index 0168bf76b2..e2ce57284f 100644 --- a/src/DocumentDbTests/Indexes/computed_indexes.cs +++ b/src/DocumentDbTests/Indexes/computed_indexes.cs @@ -194,6 +194,7 @@ index definition was executed in postgresql. StoreOptions(_ => { + _.RegisterFSharpOptionValueTypes(); var columns = new Expression>[] { x => x.FSharpDateOption, diff --git a/src/Marten/StoreOptions.MemberFactory.cs b/src/Marten/StoreOptions.MemberFactory.cs index ff08fbf8e7..33e687d4bb 100644 --- a/src/Marten/StoreOptions.MemberFactory.cs +++ b/src/Marten/StoreOptions.MemberFactory.cs @@ -152,6 +152,14 @@ public bool TryResolve(IQueryableMember parent, StoreOptions options, MemberInfo return false; } + if (valueType.OuterType.IsGenericType + && valueType.OuterType.GetGenericTypeDefinition() == typeof(FSharpOption<>) + && isSpecialFSharpOptionDateType(valueType.SimpleType)) + { + member = null; + return false; + } + Type baseType; if (valueType.OuterType.IsGenericType && valueType.OuterType.GetGenericTypeDefinition() == typeof(FSharpOption<>)) { @@ -170,4 +178,12 @@ public bool TryResolve(IQueryableMember parent, StoreOptions options, MemberInfo return true; } + + private static bool isSpecialFSharpOptionDateType(Type simpleType) + { + return simpleType == typeof(DateTime) + || simpleType == typeof(DateTimeOffset) + || simpleType == typeof(DateOnly) + || simpleType == typeof(TimeOnly); + } }