Skip to content

Commit 57e7b30

Browse files
committed
rc1 work
1 parent fc8873f commit 57e7b30

File tree

10 files changed

+160
-146
lines changed

10 files changed

+160
-146
lines changed

Dependencies.targets

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<Project>
22
<PropertyGroup>
3-
<DotNetVersion>[10.0.0-preview.5.25277.114,10.0.999]</DotNetVersion>
4-
<EFCoreVersion>[10.0.0-preview.5.25277.114,10.0.999]</EFCoreVersion>
5-
<MSLibVersion>[10.0.0-preview.5.25277.114,10.0.999]</MSLibVersion>
3+
<DotNetVersion>[10.0.0-rc.1.25451.107,10.0.999]</DotNetVersion>
4+
<EFCoreVersion>[10.0.0-rc.1.25451.107,10.0.999]</EFCoreVersion>
5+
<MSLibVersion>[10.0.0-rc.1.25451.107,10.0.999]</MSLibVersion>
66
</PropertyGroup>
77

88
<ItemGroup>
@@ -29,15 +29,15 @@
2929
<PackageReference Update="Microsoft.EntityFrameworkCore.Relational.Specification.Tests" Version="$(EFCoreVersion)" />
3030
<PackageReference Update="Microsoft.Extensions.Logging.Console" Version="$(MSLibVersion)" />
3131
<PackageReference Update="Microsoft.NET.Test.Sdk" Version="17.14.1" />
32-
<PackageReference Update="MSTest.TestAdapter" Version="3.9.3" />
33-
<PackageReference Update="MSTest.TestFramework" Version="3.9.3" />
32+
<PackageReference Update="MSTest.TestAdapter" Version="3.10.4" />
33+
<PackageReference Update="MSTest.TestFramework" Version="3.10.4" />
3434
<PackageReference Update="coverlet.collector" Version="6.0.4" />
3535
<PackageReference Update="Newtonsoft.Json" Version="13.0.3" />
3636

3737
<!-- EFCore.Jet.FunctionalTests -->
3838
<PackageReference Update="xunit.core" Version="2.9.3"/>
3939
<PackageReference Update="xunit.assert" Version="2.9.3" />
40-
<PackageReference Update="xunit.runner.visualstudio" Version="3.1.1" />
40+
<PackageReference Update="xunit.runner.visualstudio" Version="3.1.4" />
4141
<PackageReference Update="xunit.runner.console" Version="2.9.3" />
4242
<PackageReference Update="Microsoft.Extensions.Configuration.FileExtensions" Version="$(MSLibVersion)" />
4343
<PackageReference Update="NetTopologySuite" Version="2.5.0" />

Version.props

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
Bump-up to the next iteration immediately after a release, so that subsequent daily builds are named
1616
correctly.
1717
-->
18-
<VersionPrefix>9.0.0</VersionPrefix>
19-
<PreReleaseVersionLabel>rtm</PreReleaseVersionLabel>
20-
<PreReleaseVersionIteration>0</PreReleaseVersionIteration>
18+
<VersionPrefix>10.0.0</VersionPrefix>
19+
<PreReleaseVersionLabel>alpha</PreReleaseVersionLabel>
20+
<PreReleaseVersionIteration>1</PreReleaseVersionIteration>
2121

2222
<!--
2323
The following properties will automatically be set by CI builds when appropriate:

global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"sdk": {
3-
"version": "10.0.100-preview.5.25277.114",
3+
"version": "10.0.100-rc.1",
44
"allowPrerelease": true,
55
"rollForward": "latestFeature"
66
}

src/EFCore.Jet.Odbc/EFCore.Jet.Odbc.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<RootNamespace>EntityFrameworkCore.Jet</RootNamespace>
88
<PackageTags>$(PackageTags);ODBC;System.Data.Odbc</PackageTags>
99
<Nullable>enable</Nullable>
10+
<ImplicitUsings>enable</ImplicitUsings>
1011
</PropertyGroup>
1112

1213
<ItemGroup>
@@ -30,4 +31,10 @@
3031
</Reference>
3132
</ItemGroup>
3233

34+
<ItemGroup>
35+
<Using Include="Microsoft.EntityFrameworkCore.Diagnostics" />
36+
<Using Include="System.Diagnostics" />
37+
<Using Include="System.Diagnostics.CodeAnalysis" />
38+
</ItemGroup>
39+
3340
</Project>

src/EFCore.Jet.OleDb/EFCore.Jet.OleDb.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<RootNamespace>EntityFrameworkCore.Jet</RootNamespace>
88
<PackageTags>$(PackageTags);OLE DB;OLEDB;System.Data.OleDb</PackageTags>
99
<Nullable>enable</Nullable>
10+
<ImplicitUsings>enable</ImplicitUsings>
1011
</PropertyGroup>
1112

1213
<ItemGroup>
@@ -30,4 +31,10 @@
3031
</Reference>
3132
</ItemGroup>
3233

34+
<ItemGroup>
35+
<Using Include="Microsoft.EntityFrameworkCore.Diagnostics" />
36+
<Using Include="System.Diagnostics" />
37+
<Using Include="System.Diagnostics.CodeAnalysis" />
38+
</ItemGroup>
39+
3340
</Project>

src/EFCore.Jet/Query/Internal/JetParameterBasedSqlProcessor.cs

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,43 +21,31 @@ public class JetParameterBasedSqlProcessor(
2121
RelationalParameterBasedSqlProcessorDependencies dependencies,
2222
RelationalParameterBasedSqlProcessorParameters parameters) : RelationalParameterBasedSqlProcessor(dependencies, parameters)
2323
{
24-
2524
/// <summary>
2625
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
2726
/// the same compatibility standards as public APIs. It may be changed or removed without notice in
2827
/// any release. You should only use it directly in your code with extreme caution and knowing that
2928
/// doing so can result in application failures when updating to a new Entity Framework Core release.
3029
/// </summary>
31-
public override Expression Optimize(
32-
Expression queryExpression,
33-
IReadOnlyDictionary<string, object?> parametersValues,
34-
out bool canCache)
30+
public override Expression Process(Expression queryExpression, ParametersCacheDecorator parametersDecorator)
3531
{
36-
var optimizedQueryExpression = base.Optimize(queryExpression, parametersValues, out canCache);
37-
38-
optimizedQueryExpression = new SkipTakeCollapsingExpressionVisitor(Dependencies.SqlExpressionFactory)
39-
.Process(optimizedQueryExpression, parametersValues, out var canCache2);
32+
var optimizedQueryExpression = new SkipTakeCollapsingExpressionVisitor(Dependencies.SqlExpressionFactory)
33+
.Process(queryExpression, parametersDecorator);
4034

41-
canCache &= canCache2;
35+
var afterBaseProcessing = base.Process(optimizedQueryExpression, parametersDecorator);
4236

43-
optimizedQueryExpression = new SearchConditionConvertingExpressionVisitor(Dependencies.SqlExpressionFactory).Visit(optimizedQueryExpression);
37+
var afterSearchConditionConversion = afterBaseProcessing;/*new SearchConditionConverter(Dependencies.SqlExpressionFactory)
38+
.Visit(afterBaseProcessing);
4439
45-
// Run the compatibility checks as late in the query pipeline (before the actual SQL translation happens) as reasonable.
46-
optimizedQueryExpression = new JetCompatibilityExpressionVisitor().Visit(optimizedQueryExpression);
40+
*/
4741

48-
return optimizedQueryExpression;
42+
return afterSearchConditionConversion;
4943
}
5044

5145
/// <inheritdoc />
52-
protected override Expression ProcessSqlNullability(
53-
Expression selectExpression,
54-
IReadOnlyDictionary<string, object?> parametersValues,
55-
out bool canCache)
46+
protected override Expression ProcessSqlNullability(Expression selectExpression, ParametersCacheDecorator Decorator)
5647
{
57-
Check.NotNull(selectExpression, nameof(selectExpression));
58-
Check.NotNull(parametersValues, nameof(parametersValues));
59-
6048
return new JetSqlNullabilityProcessor(Dependencies, Parameters).Process(
61-
selectExpression, parametersValues, out canCache);
49+
selectExpression, Decorator);
6250
}
6351
}

src/EFCore.Jet/Query/Internal/JetSqlTranslatingExpressionVisitor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ StartsEndsWithContains.StartsWith or StartsEndsWithContains.EndsWith
388388
QueryContext queryContext,
389389
string baseParameterName,
390390
StartsEndsWithContains methodType)
391-
=> queryContext.ParameterValues[baseParameterName] switch
391+
=> queryContext.Parameters[baseParameterName] switch
392392
{
393393
null => null,
394394

src/EFCore.Jet/Query/Internal/SkipTakeCollapsingExpressionVisitor.cs

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,35 @@ namespace EntityFrameworkCore.Jet.Query.Internal;
1414
/// any release. You should only use it directly in your code with extreme caution and knowing that
1515
/// doing so can result in application failures when updating to a new Entity Framework Core release.
1616
/// </remarks>
17-
public class SkipTakeCollapsingExpressionVisitor(ISqlExpressionFactory sqlExpressionFactory) : ExpressionVisitor
17+
public class SkipTakeCollapsingExpressionVisitor : ExpressionVisitor
1818
{
19-
private readonly ISqlExpressionFactory _sqlExpressionFactory = sqlExpressionFactory;
19+
private readonly ISqlExpressionFactory _sqlExpressionFactory;
2020

21-
private IReadOnlyDictionary<string, object?> _parameterValues = null!;
22-
private bool _canCache;
21+
private ParametersCacheDecorator _parametersDecorator;
2322

2423
/// <summary>
2524
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
2625
/// the same compatibility standards as public APIs. It may be changed or removed without notice in
2726
/// any release. You should only use it directly in your code with extreme caution and knowing that
2827
/// doing so can result in application failures when updating to a new Entity Framework Core release.
2928
/// </summary>
30-
public virtual Expression Process(
31-
Expression queryExpression,
32-
IReadOnlyDictionary<string, object?> parametersValues,
33-
out bool canCache)
29+
public SkipTakeCollapsingExpressionVisitor(ISqlExpressionFactory sqlExpressionFactory)
3430
{
35-
_parameterValues = parametersValues;
36-
_canCache = true;
37-
38-
var result = Visit(queryExpression);
31+
_sqlExpressionFactory = sqlExpressionFactory;
32+
_parametersDecorator = null!;
33+
}
3934

40-
canCache = _canCache;
35+
/// <summary>
36+
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
37+
/// the same compatibility standards as public APIs. It may be changed or removed without notice in
38+
/// any release. You should only use it directly in your code with extreme caution and knowing that
39+
/// doing so can result in application failures when updating to a new Entity Framework Core release.
40+
/// </summary>
41+
public virtual Expression Process(Expression queryExpression, ParametersCacheDecorator parametersDecorator)
42+
{
43+
_parametersDecorator = parametersDecorator;
4144

42-
return result;
45+
return Visit(queryExpression);
4346
}
4447

4548
/// <summary>
@@ -73,19 +76,15 @@ bool IsZero(SqlExpression? sqlExpression)
7376
case SqlConstantExpression { Value: int intValue }:
7477
return intValue == 0;
7578
case SqlParameterExpression parameter:
76-
_canCache = false;
77-
return _parameterValues[parameter.Name] is 0;
79+
return _parametersDecorator.GetAndDisableCaching()[parameter.Name] is 0;
7880
case SqlBinaryExpression { Left: SqlConstantExpression left, Right: SqlConstantExpression right }:
7981
return left.Value is int leftValue && right.Value is int rightValue && leftValue + rightValue == 0;
8082
case SqlBinaryExpression { Left: SqlParameterExpression left, Right: SqlConstantExpression right }:
81-
_canCache = false;
82-
return _parameterValues[left.Name] is 0 && right.Value is int and 0;
83+
return _parametersDecorator.GetAndDisableCaching()[left.Name] is 0 && right.Value is int and 0;
8384
case SqlBinaryExpression { Left: SqlConstantExpression left, Right: SqlParameterExpression right }:
84-
_canCache = false;
85-
return _parameterValues[right.Name] is 0 && left.Value is int and 0;
85+
return _parametersDecorator.GetAndDisableCaching()[right.Name] is 0 && left.Value is int and 0;
8686
case SqlBinaryExpression { Left: SqlParameterExpression left, Right: SqlParameterExpression right }:
87-
_canCache = false;
88-
return _parameterValues[left.Name] is 0 && _parameterValues[right.Name] is 0;
87+
return _parametersDecorator.GetAndDisableCaching()[left.Name] is 0 && _parametersDecorator.GetAndDisableCaching()[right.Name] is 0;
8988
default:
9089
return false;
9190
}

0 commit comments

Comments
 (0)