Skip to content

Commit a7d30cd

Browse files
authored
Merge pull request #154 from microting/copilot/check-upstream-pr-ef-core-migration
Selective EF Core 10 migration: Package updates with ExecuteDelete support (preserving all microting JSON implementations)
2 parents da4e83c + 716fed1 commit a7d30cd

7 files changed

Lines changed: 42 additions & 114 deletions

File tree

Directory.Build.props

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
<Import Project="Development.props" Condition="Exists('Development.props')" />
44

55
<PropertyGroup>
6-
<RootNamespace>Pomelo</RootNamespace>
7-
<AssemblyName>Pomelo</AssemblyName>
8-
<Product>Pomelo</Product>
96
<StrongNameKeyId>Pomelo.EntityFrameworkCore.MySql</StrongNameKeyId>
107
<PackageTags>pomelo;mysql;mariadb;Entity Framework Core;entity-framework-core;ef;efcore;ef core;orm;sql</PackageTags>
118
<Product>Pomelo.EntityFrameworkCore.MySql</Product>
@@ -34,7 +31,7 @@
3431
<EfCoreTargetFramework>net10.0</EfCoreTargetFramework>
3532
<EfCoreTestTargetFramework>net10.0</EfCoreTestTargetFramework>
3633
<MySqlConnectorTargetFramework>net10.0</MySqlConnectorTargetFramework>
37-
<MySqlConnectorDependencyInjectionTargetFramework>net10.0</MySqlConnectorDependencyInjectionTargetFramework>
34+
<MySqlConnectorDependencyInjectionTargetFramework>net8.0</MySqlConnectorDependencyInjectionTargetFramework>
3835
</PropertyGroup>
3936

4037
<PropertyGroup>

Directory.Packages.props

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
<Project>
22
<PropertyGroup Label="Common Versions">
3+
<!-- In theory, the following should work, but it doesn't: [10.0.0,10.1.0-0)
4+
`-0` is the smallest possible prerelease version according to SemVer2.
5+
-->
36
<EFCoreVersion>[10.0.0,10.0.999]</EFCoreVersion>
47
</PropertyGroup>
8+
59
<ItemGroup Label="Dependencies">
610
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="$(EFCoreVersion)" />
711
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational.Specification.Tests" Version="$(EFCoreVersion)" />
812
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="$(EFCoreVersion)" />
913
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="$(EFCoreVersion)" />
10-
<PackageVersion Include="MySqlConnector" Version="2.4.0" />
11-
<PackageVersion Include="MySqlConnector.DependencyInjection" Version="2.4.0" />
14+
15+
<PackageVersion Include="MySqlConnector" Version="2.5.0" />
16+
<PackageVersion Include="MySqlConnector.DependencyInjection" Version="2.5.0" />
17+
1218
<PackageVersion Include="NetTopologySuite" Version="2.6.0" />
13-
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
14-
<PackageVersion Include="Castle.Core" Version="5.1.1" />
19+
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
20+
21+
<PackageVersion Include="Castle.Core" Version="5.2.1" />
1522
<PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="10.0.0" />
1623
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="10.0.0" />
1724
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.0" />
@@ -21,32 +28,27 @@
2128
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.0" />
2229
<PackageVersion Include="Microsoft.Extensions.Configuration.FileExtensions" Version="10.0.0" />
2330
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.0" />
24-
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="$(EFCoreVersion)" />
25-
<!-- CHECK: used? -->
31+
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.0" /> <!-- CHECK: used? -->
2632
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.0" />
2733
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="10.0.0" />
2834
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.0" />
29-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
35+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.0.1" />
3036
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
3137
<PackageVersion Include="Moq" Version="4.20.72" />
3238
<PackageVersion Include="System.Collections.Immutable" Version="10.0.0" />
3339
<PackageVersion Include="System.ComponentModel.TypeConverter" Version="4.3.0" />
3440
<PackageVersion Include="System.Diagnostics.DiagnosticSource" Version="10.0.0" />
3541
<PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1" />
3642
<PackageVersion Include="Xunit.SkippableFact" Version="1.5.23" />
43+
3744
<!-- Keep at the same level that the EF Core projects use. -->
3845
<PackageVersion Include="xunit.assert" Version="2.9.3" />
3946
<PackageVersion Include="xunit.core" Version="2.9.3" />
40-
<PackageVersion Include="xunit.runner.console" Version="2.9.3">
41-
<PrivateAssets>all</PrivateAssets>
42-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
43-
</PackageVersion>
44-
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.3">
45-
<PrivateAssets>all</PrivateAssets>
46-
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
47-
</PackageVersion>
47+
<PackageVersion Include="xunit.runner.console" Version="2.9.3" />
48+
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
4849
<PackageVersion Include="DotNetAnalyzers.DocumentationAnalyzers" Version="1.0.0-beta.59" />
4950
<PackageVersion Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
51+
5052
<!-- Needed when using EFCore.Design assembly from local EF Core repository. -->
5153
<PackageVersion Include="Microsoft.CodeAnalysis" Version="4.14.0" />
5254
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.14.0" />

NuGet.config

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<configuration>
33
<packageSources>
4+
<add key="pomelo-nightly-public-azdo" value="https://pkgs.dev.azure.com/pomelo-efcore/Pomelo.EntityFrameworkCore.MySql/_packaging/pomelo-efcore-public/nuget/v3/index.json" />
5+
<add key="pomelo-nightly-debug-azdo" value="https://pkgs.dev.azure.com/pomelo-efcore/Pomelo.EntityFrameworkCore.MySql/_packaging/pomelo-efcore-debug/nuget/v3/index.json" />
6+
<add key="pomelo-nightly-public-myget" value="https://www.myget.org/F/pomelo/api/v3/index.json" />
7+
<add key="pomelo-nightly-debug-myget" value="https://www.myget.org/F/pomelo-debug/api/v3/index.json" />
8+
49
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
10+
<add key="dotnet9" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet9/nuget/v3/index.json" />
11+
<add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
512
</packageSources>
613
<packageSourceMapping>
714
<packageSource key="nuget.org">

Version.props

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
We also used alpha/beta/silver release types in the past, but they mix poorly with the ones above when orderend according to SemVer2
1111
rules.
1212
-->
13-
<VersionPrefix>9.0.8</VersionPrefix>
14-
<PreReleaseVersionLabel>rc</PreReleaseVersionLabel>
13+
<VersionPrefix>10.0.0</VersionPrefix>
14+
<PreReleaseVersionLabel>preview</PreReleaseVersionLabel>
1515
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>
1616

1717
<!--
@@ -22,7 +22,7 @@
2222
Core `9.0.0-preview.1`).
2323
If no EF Core release is explicitly targeted, release version correlation should be assumed.
2424
-->
25-
<TargetedEfCoreVersionPrefix>9.0.8</TargetedEfCoreVersionPrefix> <!-- e.g. `` (empty) or `9.0.0` -->
25+
<TargetedEfCoreVersionPrefix>10.0.0</TargetedEfCoreVersionPrefix> <!-- e.g. `` (empty) or `9.0.0` -->
2626
<TargetedEfCoreVersionPreReleaseLabel></TargetedEfCoreVersionPreReleaseLabel> <!-- e.g. `` (empty) or `preview` -->
2727
<TargetedEfCoreVersionPreReleaseIteration></TargetedEfCoreVersionPreReleaseIteration> <!-- e.g. `` (empty) or `1` -->
2828

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": "10.0.0",
4-
"allowPrerelease": true,
3+
"version": "10.0.100",
4+
"allowPrerelease": false,
55
"rollForward": "latestFeature"
66
}
77
}

src/EFCore.MySql/Migrations/Internal/MySqlMigrationsDatabaseLock.cs

Lines changed: 0 additions & 90 deletions
This file was deleted.

src/EFCore.MySql/Query/Internal/MySqlQueryableMethodTranslatingExpressionVisitor.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,18 @@ bool IsJsonEachKeyColumn(SelectExpression selectExpression, ColumnExpression ord
8282
&& IsJsonEachKeyColumn(subquery, projectedColumn)));
8383
}
8484

85+
protected override bool IsValidSelectExpressionForExecuteDelete(SelectExpression selectExpression)
86+
=> selectExpression is
87+
{
88+
Orderings: [],
89+
Offset: null,
90+
Limit: null,
91+
GroupBy: [],
92+
Having: null
93+
} &&
94+
selectExpression.Tables[0] is TableExpression &&
95+
selectExpression.Tables.Skip(1).All(t => t is InnerJoinExpression);
96+
8597
protected override bool IsValidSelectExpressionForExecuteUpdate(
8698
SelectExpression selectExpression,
8799
TableExpressionBase targetTable,

0 commit comments

Comments
 (0)