Skip to content

Commit 5e38ff3

Browse files
authored
EF-272: EF Core 10 compatibility (#276)
* Support EF Core 10 * Improve error handling on all versions * Enable QueryCompilationStarted log on EF9 and EF10 * Support EF.Constant on EF9 and EF10
1 parent 0488aca commit 5e38ff3

File tree

60 files changed

+4157
-3224
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+4157
-3224
lines changed

MongoDB.EFCoreProvider.sln

Lines changed: 48 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -35,45 +35,74 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MongoDB.EntityFrameworkCore
3535
EndProject
3636
Global
3737
GlobalSection(SolutionConfigurationPlatforms) = preSolution
38-
Debug|Any CPU = Debug|Any CPU
39-
Release|Any CPU = Release|Any CPU
38+
Debug EF8|Any CPU = Debug EF8|Any CPU
39+
Release EF8|Any CPU = Release EF8|Any CPU
4040
Debug EF9|Any CPU = Debug EF9|Any CPU
4141
Release EF9|Any CPU = Release EF9|Any CPU
42+
Debug EF10|Any CPU = Debug EF10|Any CPU
43+
Release EF10|Any CPU = Release EF10|Any CPU
4244
EndGlobalSection
4345
GlobalSection(ProjectConfigurationPlatforms) = postSolution
44-
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45-
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
46-
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
47-
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Release|Any CPU.Build.0 = Release|Any CPU
46+
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Debug EF8|Any CPU.ActiveCfg = Debug EF8|Any CPU
47+
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Debug EF8|Any CPU.Build.0 = Debug EF8|Any CPU
48+
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Release EF8|Any CPU.ActiveCfg = Release EF8|Any CPU
49+
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Release EF8|Any CPU.Build.0 = Release EF8|Any CPU
50+
4851
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Debug EF9|Any CPU.ActiveCfg = Debug EF9|Any CPU
4952
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Debug EF9|Any CPU.Build.0 = Debug EF9|Any CPU
5053
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Release EF9|Any CPU.ActiveCfg = Release EF9|Any CPU
5154
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Release EF9|Any CPU.Build.0 = Release EF9|Any CPU
52-
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
53-
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
54-
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
55-
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Release|Any CPU.Build.0 = Release|Any CPU
55+
56+
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Debug EF10|Any CPU.ActiveCfg = Debug EF10|Any CPU
57+
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Debug EF10|Any CPU.Build.0 = Debug EF10|Any CPU
58+
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Release EF10|Any CPU.ActiveCfg = Release EF10|Any CPU
59+
{F50A0110-A930-4876-BBD4-78B039C12D9E}.Release EF10|Any CPU.Build.0 = Release EF10|Any CPU
60+
61+
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Debug EF8|Any CPU.ActiveCfg = Debug EF8|Any CPU
62+
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Debug EF8|Any CPU.Build.0 = Debug EF8|Any CPU
63+
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Release EF8|Any CPU.ActiveCfg = Release EF8|Any CPU
64+
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Release EF8|Any CPU.Build.0 = Release EF8|Any CPU
65+
5666
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Debug EF9|Any CPU.ActiveCfg = Debug EF9|Any CPU
5767
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Debug EF9|Any CPU.Build.0 = Debug EF9|Any CPU
5868
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Release EF9|Any CPU.ActiveCfg = Release EF9|Any CPU
5969
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Release EF9|Any CPU.Build.0 = Release EF9|Any CPU
60-
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
61-
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Debug|Any CPU.Build.0 = Debug|Any CPU
62-
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Release|Any CPU.ActiveCfg = Release|Any CPU
63-
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Release|Any CPU.Build.0 = Release|Any CPU
70+
71+
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Debug EF10|Any CPU.ActiveCfg = Debug EF10|Any CPU
72+
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Debug EF10|Any CPU.Build.0 = Debug EF10|Any CPU
73+
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Release EF10|Any CPU.ActiveCfg = Release EF10|Any CPU
74+
{9337C5E2-A5DB-4608-9274-5C679B92ED9E}.Release EF10|Any CPU.Build.0 = Release EF10|Any CPU
75+
76+
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Debug EF8|Any CPU.ActiveCfg = Debug EF8|Any CPU
77+
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Debug EF8|Any CPU.Build.0 = Debug EF8|Any CPU
78+
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Release EF8|Any CPU.ActiveCfg = Release EF8|Any CPU
79+
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Release EF8|Any CPU.Build.0 = Release EF8|Any CPU
80+
6481
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Debug EF9|Any CPU.ActiveCfg = Debug EF9|Any CPU
6582
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Debug EF9|Any CPU.Build.0 = Debug EF9|Any CPU
6683
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Release EF9|Any CPU.ActiveCfg = Release EF9|Any CPU
6784
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Release EF9|Any CPU.Build.0 = Release EF9|Any CPU
68-
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
69-
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Debug|Any CPU.Build.0 = Debug|Any CPU
70-
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Release|Any CPU.ActiveCfg = Release|Any CPU
71-
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Release|Any CPU.Build.0 = Release|Any CPU
85+
86+
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Debug EF10|Any CPU.ActiveCfg = Debug EF10|Any CPU
87+
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Debug EF10|Any CPU.Build.0 = Debug EF10|Any CPU
88+
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Release EF10|Any CPU.ActiveCfg = Release EF10|Any CPU
89+
{CDBD7CC4-0F4D-4B03-859E-71FE5A3DE363}.Release EF10|Any CPU.Build.0 = Release EF10|Any CPU
90+
91+
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Debug EF8|Any CPU.ActiveCfg = Debug EF8|Any CPU
92+
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Debug EF8|Any CPU.Build.0 = Debug EF8|Any CPU
93+
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Release EF8|Any CPU.ActiveCfg = Release EF8|Any CPU
94+
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Release EF8|Any CPU.Build.0 = Release EF8|Any CPU
95+
7296
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Debug EF9|Any CPU.ActiveCfg = Debug EF9|Any CPU
7397
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Debug EF9|Any CPU.Build.0 = Debug EF9|Any CPU
7498
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Release EF9|Any CPU.ActiveCfg = Release EF9|Any CPU
7599
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Release EF9|Any CPU.Build.0 = Release EF9|Any CPU
76-
EndGlobalSection
100+
101+
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Debug EF10|Any CPU.ActiveCfg = Debug EF10|Any CPU
102+
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Debug EF10|Any CPU.Build.0 = Debug EF10|Any CPU
103+
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Release EF10|Any CPU.ActiveCfg = Release EF10|Any CPU
104+
{1BFBE183-6125-402E-826B-1F7A7F86AF00}.Release EF10|Any CPU.Build.0 = Release EF10|Any CPU
105+
EndGlobalSection
77106
GlobalSection(SolutionProperties) = preSolution
78107
HideSolutionNode = FALSE
79108
EndGlobalSection

Versions.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<PropertyGroup>
33
<EF8Version>8.0.23</EF8Version>
44
<EF9Version>9.0.12</EF9Version>
5+
<EF10Version>10.0.2</EF10Version>
56
<CSharpDriverVersion>3.6.0</CSharpDriverVersion>
67
</PropertyGroup>
78
</Project>

apidocs/docfx.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33
{
44
"src": [
55
{
6-
"files": ["**/*.csproj"],
7-
"exclude": ["**/bin/**", "**/obj/**"],
8-
"src": "../src"
6+
"files": ["MongoDB.EntityFrameworkCore.dll"],
7+
"src": "../src/MongoDB.EntityFrameworkCore/bin/Debug EF10/net10.0"
98
}
109
],
1110
"dest": "api",

dotnet-tools.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"version": 1,
3+
"isRoot": true,
4+
"tools": {
5+
"docfx": {
6+
"version": "2.78.4",
7+
"commands": [
8+
"docfx"
9+
],
10+
"rollForward": false
11+
}
12+
}
13+
}

evergreen/build-apidocs.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ echo "Configure dotnet cli to use local manifest"
1010
dotnet new tool-manifest --force
1111

1212
echo "Installing docfx tool"
13-
dotnet tool install docfx --version "2.76.0" --local --verbosity q
13+
dotnet tool install docfx --version "2.78.4" --local --verbosity q
1414

1515
echo "Building the api-docs"
1616
dotnet tool run docfx metadata ./apidocs/docfx.json --property ProduceReferenceAssembly=true

evergreen/evergreen.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ functions:
162162
ATLAS_URI="${ATLAS_URI}" \
163163
MONGODB_VERSION="${version}" \
164164
CRYPT_SHARED_LIB_PATH=${CRYPT_SHARED_LIB_PATH} \
165-
BUILD_CONFIGURATION="Debug" \
165+
BUILD_CONFIGURATION="Debug EF8" \
166166
./evergreen/run-tests.sh
167167
- command: shell.exec
168168
type: test
@@ -178,6 +178,20 @@ functions:
178178
CRYPT_SHARED_LIB_PATH=${CRYPT_SHARED_LIB_PATH} \
179179
BUILD_CONFIGURATION="Debug EF9" \
180180
./evergreen/run-tests.sh
181+
- command: shell.exec
182+
type: test
183+
params:
184+
working_dir: mongo-efcore-provider
185+
script: |
186+
${PREPARE_SHELL}
187+
DRIVER_VERSION=${DRIVER_VERSION} \
188+
OS=${OS} \
189+
MONGODB_URI="${MONGODB_URI}" \
190+
ATLAS_URI="${ATLAS_URI}" \
191+
MONGODB_VERSION="${version}" \
192+
CRYPT_SHARED_LIB_PATH=${CRYPT_SHARED_LIB_PATH} \
193+
BUILD_CONFIGURATION="Debug EF10" \
194+
./evergreen/run-tests.sh
181195
182196
cleanup:
183197
- command: shell.exec

evergreen/install-dependencies.sh

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,19 @@ mkdir -p "$DOTNET_SDK_PATH"
77
if [[ $OS =~ [Ww]indows.* ]]; then
88
echo "Downloading Windows .NET SDK installer into $DOTNET_SDK_PATH folder..."
99
curl -Lfo "$DOTNET_SDK_PATH"/dotnet-install.ps1 https://dot.net/v1/dotnet-install.ps1
10-
echo "Installing .NET 9.0 SDK..."
11-
powershell.exe "$DOTNET_SDK_PATH"/dotnet-install.ps1 -Channel 9.0 -InstallDir "$DOTNET_SDK_PATH" -NoPath
10+
echo "Installing .NET 10.0 SDK..."
11+
powershell.exe "$DOTNET_SDK_PATH"/dotnet-install.ps1 -Channel 10.0 -InstallDir "$DOTNET_SDK_PATH" -NoPath
12+
echo "Installing .NET 9.0 runtime..."
13+
powershell.exe "$DOTNET_SDK_PATH"/dotnet-install.ps1 -Channel 9.0 -InstallDir "$DOTNET_SDK_PATH" -NoPath -Runtime dotnet
1214
echo "Installing .NET 8.0 runtime..."
1315
powershell.exe "$DOTNET_SDK_PATH"/dotnet-install.ps1 -Channel 8.0 -InstallDir "$DOTNET_SDK_PATH" -NoPath -Runtime dotnet
1416
else
1517
echo "Downloading .NET SDK installer into $DOTNET_SDK_PATH folder..."
1618
curl -Lfo "$DOTNET_SDK_PATH"/dotnet-install.sh https://dot.net/v1/dotnet-install.sh
17-
echo "Installing .NET 9.0 SDK..."
18-
bash "$DOTNET_SDK_PATH"/dotnet-install.sh --channel 9.0 --install-dir "$DOTNET_SDK_PATH" --no-path
19+
echo "Installing .NET 10.0 SDK..."
20+
bash "$DOTNET_SDK_PATH"/dotnet-install.sh --channel 10.0 --install-dir "$DOTNET_SDK_PATH" --no-path
21+
echo "Installing .NET 9.0 runtime..."
22+
bash "$DOTNET_SDK_PATH"/dotnet-install.sh --channel 9.0 --install-dir "$DOTNET_SDK_PATH" --no-path --runtime dotnet
1923
echo "Installing .NET 8.0 runtime..."
2024
bash "$DOTNET_SDK_PATH"/dotnet-install.sh --channel 8.0 --install-dir "$DOTNET_SDK_PATH" --no-path --runtime dotnet
2125
fi

evergreen/run-tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ fi
2222

2323
echo "Running EF Core tests for '${BUILD_CONFIGURATION}' configuration"
2424
dotnet clean "./MongoDB.EFCoreProvider.sln"
25-
dotnet test "./MongoDB.EFCoreProvider.sln" -e MONGODB_URI="${MONGODB_URI}" -c "${BUILD_CONFIGURATION}" --results-directory ./artifacts/test-results/${BUILD_CONFIGURATION// /} --logger "junit;LogFileName=TEST_{assembly}.xml;FailureBodyFormat=Verbose" --logger "console;verbosity=detailed"
25+
dotnet test "./MongoDB.EFCoreProvider.sln" -e MONGODB_URI="${MONGODB_URI}" -c "${BUILD_CONFIGURATION}" --results-directory "./artifacts/test-results/${BUILD_CONFIGURATION}/}" --logger "junit;LogFileName=TEST_{assembly}.xml;FailureBodyFormat=Verbose" --logger "console;verbosity=detailed"

global.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"sdk": {
3-
"version": "8.0.0",
3+
"version": "10.0.102",
44
"rollForward": "latestMajor",
55
"allowPrerelease": false
66
}
7-
}
7+
}

src/MongoDB.EntityFrameworkCore/ChangeTracking/NullableEqualityComparer.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
// Originally from EFCore.Cosmos NullableEqualityComparer.cs
55

6+
#if EF8 || EF9
67
using System.Collections.Generic;
78

89
namespace MongoDB.EntityFrameworkCore.ChangeTracking;
@@ -49,3 +50,4 @@ public virtual bool Equals(T? x, T? y)
4950
public virtual int GetHashCode(T? obj)
5051
=> obj is null ? 0 : _underlyingComparer.GetHashCode(obj.Value);
5152
}
53+
#endif

0 commit comments

Comments
 (0)