diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 454ee8f6f..65d80a757 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -218,7 +218,14 @@ jobs: - name: Install EF Core Tools shell: pwsh run: | - dotnet tool restore + # dotnet tool restore is broken in .NET 8.0.0-rc.2 + # https://github.com/dotnet/sdk/issues/35989 + # https://github.com/dotnet/sdk/pull/35884 + # + # dotnet tool restore + dotnet tool uninstall dotnet-ef + dotnet tool install dotnet-ef --prerelease --verbosity diag + dotnet ef --version - name: Restore dependencies shell: pwsh diff --git a/Dependencies.targets b/Dependencies.targets index 739819cab..60cc70671 100644 --- a/Dependencies.targets +++ b/Dependencies.targets @@ -1,6 +1,6 @@ - 8.0.0-rc.1.23419.6 + 8.0.0-rc.2.23480.1 @@ -12,29 +12,29 @@ - + - - - + + + - - - - - - - - - + + + + + + + + + - + - + diff --git a/Directory.Build.props b/Directory.Build.props index c2188da47..80fa78d3c 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -29,7 +29,7 @@ net8.0 net8.0 net8.0 - net7.0 + net8.0 diff --git a/NuGet.config b/NuGet.config index 6986ec247..ca4722e3c 100644 --- a/NuGet.config +++ b/NuGet.config @@ -1,15 +1,13 @@ - - - + + + + + - - - - - + diff --git a/dotnet-tools.json b/dotnet-tools.json index 241a28d67..31f2948c1 100644 --- a/dotnet-tools.json +++ b/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "dotnet-ef": { - "version": "8.0.0-rc.1.23419.6", + "version": "8.0.0-rc.2.23480.1", "commands": [ "dotnet-ef" ] diff --git a/global.json b/global.json index 0ba22bfd7..2134c0c50 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "8.0.100-rc.1.23455.8", + "version": "8.0.100-rc.2.23502.2", "allowPrerelease": true, "rollForward": "latestFeature" } diff --git a/src/EFCore.MySql.Json.Microsoft/EFCore.MySql.Json.Microsoft.csproj b/src/EFCore.MySql.Json.Microsoft/EFCore.MySql.Json.Microsoft.csproj index 8f7e682c1..4648e85c2 100644 --- a/src/EFCore.MySql.Json.Microsoft/EFCore.MySql.Json.Microsoft.csproj +++ b/src/EFCore.MySql.Json.Microsoft/EFCore.MySql.Json.Microsoft.csproj @@ -47,7 +47,7 @@ - $(LocalMySqlConnectorRepository)\src\MySqlConnector\bin\Debug\$(MySqlConnectorTargetFramework)\MySqlConnector.dll + $(LocalMySqlConnectorRepository)\artifacts\bin\MySqlConnector\debug_$(MySqlConnectorTargetFramework)\MySqlConnector.dll diff --git a/src/EFCore.MySql.Json.Newtonsoft/EFCore.MySql.Json.Newtonsoft.csproj b/src/EFCore.MySql.Json.Newtonsoft/EFCore.MySql.Json.Newtonsoft.csproj index fde68f7fd..1d48f8bb7 100644 --- a/src/EFCore.MySql.Json.Newtonsoft/EFCore.MySql.Json.Newtonsoft.csproj +++ b/src/EFCore.MySql.Json.Newtonsoft/EFCore.MySql.Json.Newtonsoft.csproj @@ -49,7 +49,7 @@ - $(LocalMySqlConnectorRepository)\src\MySqlConnector\bin\Debug\$(MySqlConnectorTargetFramework)\MySqlConnector.dll + $(LocalMySqlConnectorRepository)\artifacts\bin\MySqlConnector\debug_$(MySqlConnectorTargetFramework)\MySqlConnector.dll diff --git a/src/EFCore.MySql.NTS/EFCore.MySql.NTS.csproj b/src/EFCore.MySql.NTS/EFCore.MySql.NTS.csproj index db6e4d546..8b4629d55 100644 --- a/src/EFCore.MySql.NTS/EFCore.MySql.NTS.csproj +++ b/src/EFCore.MySql.NTS/EFCore.MySql.NTS.csproj @@ -49,7 +49,7 @@ - $(LocalMySqlConnectorRepository)\src\MySqlConnector\bin\Debug\$(MySqlConnectorTargetFramework)\MySqlConnector.dll + $(LocalMySqlConnectorRepository)\artifacts\bin\MySqlConnector\debug_$(MySqlConnectorTargetFramework)\MySqlConnector.dll diff --git a/src/EFCore.MySql/EFCore.MySql.csproj b/src/EFCore.MySql/EFCore.MySql.csproj index 8801c036d..c1e081cd3 100644 --- a/src/EFCore.MySql/EFCore.MySql.csproj +++ b/src/EFCore.MySql/EFCore.MySql.csproj @@ -55,7 +55,7 @@ - $(LocalMySqlConnectorRepository)\src\MySqlConnector\bin\Debug\$(MySqlConnectorTargetFramework)\MySqlConnector.dll + $(LocalMySqlConnectorRepository)\artifacts\bin\MySqlConnector\debug_$(MySqlConnectorTargetFramework)\MySqlConnector.dll diff --git a/src/EFCore.MySql/Storage/Internal/MySqlTypeMappingSource.cs b/src/EFCore.MySql/Storage/Internal/MySqlTypeMappingSource.cs index ab9f308d2..795c7f284 100644 --- a/src/EFCore.MySql/Storage/Internal/MySqlTypeMappingSource.cs +++ b/src/EFCore.MySql/Storage/Internal/MySqlTypeMappingSource.cs @@ -225,24 +225,24 @@ private void Initialize() // datetimes { typeof(DateOnly), _dateDateOnly }, - { typeof(TimeOnly), _timeTimeOnly.Clone(_options.DefaultDataTypeMappings.ClrTimeOnlyPrecision, null) }, + { typeof(TimeOnly), _timeTimeOnly.WithPrecisionAndScale(_options.DefaultDataTypeMappings.ClrTimeOnlyPrecision, null) }, { typeof(TimeSpan), _options.DefaultDataTypeMappings.ClrTimeSpan switch { - MySqlTimeSpanType.Time6 => _timeTimeSpan.Clone(6, null), + MySqlTimeSpanType.Time6 => _timeTimeSpan.WithPrecisionAndScale(6, null), MySqlTimeSpanType.Time => _timeTimeSpan, _ => _timeTimeSpan }}, { typeof(DateTime), _options.DefaultDataTypeMappings.ClrDateTime switch { - MySqlDateTimeType.DateTime6 =>_dateTime.Clone(6, null), - MySqlDateTimeType.Timestamp6 => _timeStamp.Clone(6, null), + MySqlDateTimeType.DateTime6 =>_dateTime.WithPrecisionAndScale(6, null), + MySqlDateTimeType.Timestamp6 => _timeStamp.WithPrecisionAndScale(6, null), MySqlDateTimeType.Timestamp => _timeStamp, _ => _dateTime, }}, { typeof(DateTimeOffset), _options.DefaultDataTypeMappings.ClrDateTimeOffset switch { - MySqlDateTimeType.DateTime6 =>_dateTimeOffset.Clone(6, null), - MySqlDateTimeType.Timestamp6 => _timeStampOffset.Clone(6, null), + MySqlDateTimeType.DateTime6 =>_dateTimeOffset.WithPrecisionAndScale(6, null), + MySqlDateTimeType.Timestamp6 => _timeStampOffset.WithPrecisionAndScale(6, null), MySqlDateTimeType.Timestamp => _timeStampOffset, _ => _dateTimeOffset, }}, @@ -325,9 +325,9 @@ private RelationalTypeMapping FindRawMapping(RelationalTypeMappingInfo mappingIn { return clrType == null ? mappings[0] - .Clone(in mappingInfo) + .WithTypeMappingInfo(in mappingInfo) : mappings.FirstOrDefault(m => m.ClrType == clrType) - ?.Clone(in mappingInfo); + ?.WithTypeMappingInfo(in mappingInfo); } if (storeTypeName.Equals("json", StringComparison.OrdinalIgnoreCase) && @@ -349,14 +349,14 @@ private RelationalTypeMapping FindRawMapping(RelationalTypeMappingInfo mappingIn { if (clrType == typeof(decimal)) { - return mapping.Clone(mappingInfo.Precision.Value, mappingInfo.Scale); + return mapping.WithPrecisionAndScale(mappingInfo.Precision.Value, mappingInfo.Scale); } if (clrType == typeof(DateTime) || clrType == typeof(DateTimeOffset) || clrType == typeof(TimeSpan)) { - return mapping.Clone(mappingInfo.Precision.Value, null); + return mapping.WithPrecisionAndScale(mappingInfo.Precision.Value, null); } } @@ -400,7 +400,7 @@ private RelationalTypeMapping FindRawMapping(RelationalTypeMappingInfo mappingIn return size == null ? mapping - : mapping.Clone($"{mapping.StoreTypeNameBase}({size})", size); + : mapping.WithStoreTypeAndSize($"{mapping.StoreTypeNameBase}({size})", size); } if (clrType == typeof(byte[])) diff --git a/test/EFCore.MySql.FunctionalTests/EFCore.MySql.FunctionalTests.csproj b/test/EFCore.MySql.FunctionalTests/EFCore.MySql.FunctionalTests.csproj index 28ff15639..3d5bfc3f5 100644 --- a/test/EFCore.MySql.FunctionalTests/EFCore.MySql.FunctionalTests.csproj +++ b/test/EFCore.MySql.FunctionalTests/EFCore.MySql.FunctionalTests.csproj @@ -73,7 +73,7 @@ - $(LocalMySqlConnectorRepository)\src\MySqlConnector\bin\Debug\$(MySqlConnectorTargetFramework)\MySqlConnector.dll + $(LocalMySqlConnectorRepository)\artifacts\bin\MySqlConnector\debug_$(MySqlConnectorTargetFramework)\MySqlConnector.dll diff --git a/test/EFCore.MySql.FunctionalTests/Query/ComplexTypeQueryMySqlTest.cs b/test/EFCore.MySql.FunctionalTests/Query/ComplexTypeQueryMySqlTest.cs index 8be721ac6..535c6ddcc 100644 --- a/test/EFCore.MySql.FunctionalTests/Query/ComplexTypeQueryMySqlTest.cs +++ b/test/EFCore.MySql.FunctionalTests/Query/ComplexTypeQueryMySqlTest.cs @@ -378,6 +378,13 @@ public override async Task Union_two_different_complex_type(bool async) AssertSql(); } + public override async Task Complex_type_equals_null(bool async) + { + await base.Complex_type_equals_null(async); + + AssertSql(); + } + [ConditionalFact] public virtual void Check_all_tests_overridden() => TestHelpers.AssertAllMethodsOverridden(GetType()); @@ -391,17 +398,3 @@ protected override ITestStoreFactory TestStoreFactory => MySqlTestStoreFactory.Instance; } } - - - - - - - - - - - - - - diff --git a/test/EFCore.MySql.FunctionalTests/Query/NorthwindAggregateOperatorsQueryMySqlTest.cs b/test/EFCore.MySql.FunctionalTests/Query/NorthwindAggregateOperatorsQueryMySqlTest.cs index 3edb30d5b..47b6e521f 100644 --- a/test/EFCore.MySql.FunctionalTests/Query/NorthwindAggregateOperatorsQueryMySqlTest.cs +++ b/test/EFCore.MySql.FunctionalTests/Query/NorthwindAggregateOperatorsQueryMySqlTest.cs @@ -54,6 +54,16 @@ public override async Task Contains_with_local_tuple_array_closure(bool async) await Assert.ThrowsAsync(() => base.Contains_with_local_tuple_array_closure(async)); } + public override async Task Contains_with_local_enumerable_inline(bool async) + { + // Issue #31776 + await Assert.ThrowsAsync( + async () => + await base.Contains_with_local_enumerable_inline(async)); + + AssertSql(); + } + protected override bool CanExecuteQueryString => true; diff --git a/test/EFCore.MySql.FunctionalTests/Query/NorthwindAggregateQueryMySqlTest.cs b/test/EFCore.MySql.FunctionalTests/Query/NorthwindAggregateQueryMySqlTest.cs deleted file mode 100644 index 838623ca4..000000000 --- a/test/EFCore.MySql.FunctionalTests/Query/NorthwindAggregateQueryMySqlTest.cs +++ /dev/null @@ -1,114 +0,0 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.EntityFrameworkCore.Query; -using Microsoft.EntityFrameworkCore.TestModels.Northwind; -using Microsoft.EntityFrameworkCore.TestUtilities; -using Pomelo.EntityFrameworkCore.MySql.FunctionalTests.TestUtilities; -using Xunit; -using Xunit.Abstractions; - -namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query -{ - public class NorthwindAggregateQueryMySqlTest : NorthwindAggregateOperatorsQueryRelationalTestBase< - NorthwindQueryMySqlFixture> - { - public NorthwindAggregateQueryMySqlTest( - NorthwindQueryMySqlFixture fixture, - ITestOutputHelper testOutputHelper) - : base(fixture) - { - ClearLog(); - //Fixture.TestSqlLoggerFactory.SetTestOutputHelper(testOutputHelper); - } - - public override async Task Sum_with_coalesce(bool async) - { - await base.Sum_with_coalesce(async); - - AssertSql( - @"SELECT COALESCE(SUM(COALESCE(`p`.`UnitPrice`, 0.0)), 0.0) -FROM `Products` AS `p` -WHERE `p`.`ProductID` < 40"); - } - - public override async Task Average_over_max_subquery_is_client_eval(bool async) - { - await AssertAverage( - async, - ss => ss.Set().OrderBy(c => c.CustomerID).Take(3), - selector: c => (decimal)c.Orders.Average(o => 5 + o.OrderDetails.Max(od => od.ProductID)), - asserter: (a, b) => Assert.Equal(a, b, 12)); // added flouting point precision tolerance - - AssertSql( - $@"@__p_0='3' - -SELECT AVG(CAST(( - SELECT AVG({MySqlTestHelpers.CastAsDouble(@"5 + ( - SELECT MAX(`o0`.`ProductID`) - FROM `Order Details` AS `o0` - WHERE `o`.`OrderID` = `o0`.`OrderID`)")}) - FROM `Orders` AS `o` - WHERE `t`.`CustomerID` = `o`.`CustomerID`) AS decimal(65,30))) -FROM ( - SELECT `c`.`CustomerID` - FROM `Customers` AS `c` - ORDER BY `c`.`CustomerID` - LIMIT @__p_0 -) AS `t`"); - } - - public override async Task Average_over_nested_subquery_is_client_eval(bool async) - { - await AssertAverage( - async, - ss => ss.Set().OrderBy(c => c.CustomerID).Take(3), - selector: c => (decimal)c.Orders.Average(o => 5 + o.OrderDetails.Average(od => od.ProductID)), - asserter: (a, b) => Assert.Equal(a, b, 12)); // added flouting point precision tolerance - - AssertSql( - $@"@__p_0='3' - -SELECT AVG(CAST(( - SELECT AVG(5.0 + ( - SELECT AVG({MySqlTestHelpers.CastAsDouble(@"`o0`.`ProductID`")}) - FROM `Order Details` AS `o0` - WHERE `o`.`OrderID` = `o0`.`OrderID`)) - FROM `Orders` AS `o` - WHERE `t`.`CustomerID` = `o`.`CustomerID`) AS decimal(65,30))) -FROM ( - SELECT `c`.`CustomerID` - FROM `Customers` AS `c` - ORDER BY `c`.`CustomerID` - LIMIT @__p_0 -) AS `t`"); - } - - // TODO: Implement TranslatePrimitiveCollection. - public override async Task Contains_with_local_anonymous_type_array_closure(bool async) - { - // Aggregates. Issue #15937. - // await AssertTranslationFailed(() => base.Contains_with_local_anonymous_type_array_closure(async)); - - await Assert.ThrowsAsync(() => base.Contains_with_local_anonymous_type_array_closure(async)); - - AssertSql(); - } - - // TODO: Implement TranslatePrimitiveCollection. - public override async Task Contains_with_local_tuple_array_closure(bool async) - { - // await Assert.ThrowsAsync(() => base.Contains_with_local_tuple_array_closure(async)); - - await Assert.ThrowsAsync(() => base.Contains_with_local_tuple_array_closure(async)); - - AssertSql(); - } - - private void AssertSql(params string[] expected) - => Fixture.TestSqlLoggerFactory.AssertBaseline(expected); - - protected override void ClearLog() - => Fixture.TestSqlLoggerFactory.Clear(); - } -} diff --git a/test/EFCore.MySql.FunctionalTests/Query/PrimitiveCollectionsQueryMySqlTest.cs b/test/EFCore.MySql.FunctionalTests/Query/PrimitiveCollectionsQueryMySqlTest.cs index e6cc19db8..41a70ca09 100644 --- a/test/EFCore.MySql.FunctionalTests/Query/PrimitiveCollectionsQueryMySqlTest.cs +++ b/test/EFCore.MySql.FunctionalTests/Query/PrimitiveCollectionsQueryMySqlTest.cs @@ -11,10 +11,11 @@ using Pomelo.EntityFrameworkCore.MySql.Tests.TestUtilities.Attributes; using Xunit; using Xunit.Abstractions; +using Xunit.Sdk; namespace Pomelo.EntityFrameworkCore.MySql.FunctionalTests.Query; -public class PrimitiveCollectionsQueryMySqlTest : PrimitiveCollectionsQueryTestBase< +public class PrimitiveCollectionsQueryMySqlTest : PrimitiveCollectionsQueryRelationalTestBase< PrimitiveCollectionsQueryMySqlTest.PrimitiveCollectionsQueryMySqlFixture> { public PrimitiveCollectionsQueryMySqlTest(PrimitiveCollectionsQueryMySqlFixture fixture, ITestOutputHelper testOutputHelper) @@ -1104,13 +1105,6 @@ FROM unnest(p."Ints") AS i(value) """); } - public override async Task Column_collection_Concat_parameter_collection_equality_inline_collection_not_supported(bool async) - { - await base.Column_collection_Concat_parameter_collection_equality_inline_collection_not_supported(async); - - AssertSql(); - } - public override async Task Column_collection_equality_parameter_collection(bool async) { await base.Column_collection_equality_parameter_collection(async); @@ -1270,7 +1264,7 @@ public override void Parameter_collection_in_subquery_and_Convert_as_compiled_qu public override async Task Parameter_collection_in_subquery_Union_another_parameter_collection_as_compiled_query(bool async) { - var message = (await Assert.ThrowsAsync( + var message = (await Assert.ThrowsAsync( () => base.Parameter_collection_in_subquery_Union_another_parameter_collection_as_compiled_query(async))).Message; if (MySqlTestHelpers.HasPrimitiveCollectionsSupport(Fixture)) @@ -1392,9 +1386,9 @@ await Assert.ThrowsAsync(() } } - public override async Task Project_collection_of_ints_with_paging(bool async) + public override async Task Project_collection_of_nullable_ints_with_paging(bool async) { - await base.Project_collection_of_ints_with_paging(async); + await base.Project_collection_of_nullable_ints_with_paging(async); if (MySqlTestHelpers.HasPrimitiveCollectionsSupport(Fixture)) { @@ -1427,11 +1421,11 @@ ORDER BY `p`.`Id` [SupportedServerVersionCondition(nameof(ServerVersionSupport.JsonTable))] [SupportedServerVersionCondition(nameof(ServerVersionSupport.OuterApply))] - public override async Task Project_collection_of_ints_with_paging2(bool async) + public override async Task Project_collection_of_nullable_ints_with_paging2(bool async) { if (MySqlTestHelpers.HasPrimitiveCollectionsSupport(Fixture)) { - await base.Project_collection_of_ints_with_paging2(async); + await base.Project_collection_of_nullable_ints_with_paging2(async); AssertSql( """ @@ -1452,13 +1446,13 @@ LIMIT 18446744073709551610 OFFSET 1 else { await Assert.ThrowsAsync(() - => base.Project_collection_of_ints_with_paging2(async)); + => base.Project_collection_of_nullable_ints_with_paging2(async)); } } - public override async Task Project_collection_of_ints_with_paging3(bool async) + public override async Task Project_collection_of_nullable_ints_with_paging3(bool async) { - await base.Project_collection_of_ints_with_paging3(async); + await base.Project_collection_of_nullable_ints_with_paging3(async); if (MySqlTestHelpers.HasPrimitiveCollectionsSupport(Fixture)) { @@ -1657,6 +1651,13 @@ public override async Task Inline_collection_Contains_as_Any_with_predicate(bool """); } + public override async Task Column_collection_Concat_parameter_collection_equality_inline_collection(bool async) + { + await base.Column_collection_Concat_parameter_collection_equality_inline_collection(async); + + AssertSql(); + } + [ConditionalFact] public virtual void Check_all_tests_overridden() => TestHelpers.AssertAllMethodsOverridden(GetType()); @@ -1683,14 +1684,3 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con } } } - - - - - - - - - - - diff --git a/test/EFCore.MySql.IntegrationTests/EFCore.MySql.IntegrationTests.csproj b/test/EFCore.MySql.IntegrationTests/EFCore.MySql.IntegrationTests.csproj index 9f5257576..469bc3923 100644 --- a/test/EFCore.MySql.IntegrationTests/EFCore.MySql.IntegrationTests.csproj +++ b/test/EFCore.MySql.IntegrationTests/EFCore.MySql.IntegrationTests.csproj @@ -72,7 +72,7 @@ - $(LocalMySqlConnectorRepository)\src\MySqlConnector\bin\Debug\$(MySqlConnectorTargetFramework)\MySqlConnector.dll + $(LocalMySqlConnectorRepository)\artifacts\bin\MySqlConnector\debug_$(MySqlConnectorTargetFramework)\MySqlConnector.dll diff --git a/test/EFCore.MySql.Tests/EFCore.MySql.Tests.csproj b/test/EFCore.MySql.Tests/EFCore.MySql.Tests.csproj index 42fe00832..c40283540 100644 --- a/test/EFCore.MySql.Tests/EFCore.MySql.Tests.csproj +++ b/test/EFCore.MySql.Tests/EFCore.MySql.Tests.csproj @@ -72,7 +72,7 @@ - $(LocalMySqlConnectorRepository)\src\MySqlConnector\bin\Debug\$(MySqlConnectorTargetFramework)\MySqlConnector.dll + $(LocalMySqlConnectorRepository)\artifacts\bin\MySqlConnector\debug_$(MySqlConnectorTargetFramework)\MySqlConnector.dll diff --git a/test/EFCore.MySql.Tests/TestUtilities/TestRelationalTypeMappingSource.cs b/test/EFCore.MySql.Tests/TestUtilities/TestRelationalTypeMappingSource.cs index 25ae711d3..7c4279d4b 100644 --- a/test/EFCore.MySql.Tests/TestUtilities/TestRelationalTypeMappingSource.cs +++ b/test/EFCore.MySql.Tests/TestUtilities/TestRelationalTypeMappingSource.cs @@ -65,15 +65,16 @@ private IntArrayTypeMapping(RelationalTypeMappingParameters parameters) { } - public override RelationalTypeMapping Clone(string storeType, int? size) + public override RelationalTypeMapping WithStoreTypeAndSize(string storeType, int? size) => new IntArrayTypeMapping(Parameters.WithStoreTypeAndSize(storeType, size)); - public override CoreTypeMapping Clone( + public override CoreTypeMapping WithComposedConverter( ValueConverter converter, ValueComparer comparer = null, + ValueComparer keyComparer = null, CoreTypeMapping elementMapping = null, JsonValueReaderWriter jsonValueReaderWriter = null) - => new IntArrayTypeMapping(Parameters.WithComposedConverter(converter, comparer, elementMapping, jsonValueReaderWriter)); + => new IntArrayTypeMapping(Parameters.WithComposedConverter(converter, comparer, keyComparer, elementMapping, jsonValueReaderWriter)); protected override RelationalTypeMapping Clone(RelationalTypeMappingParameters parameters) => new IntArrayTypeMapping(parameters); @@ -203,7 +204,7 @@ protected override RelationalTypeMapping FindMapping(in RelationalTypeMappingInf { return storeTypeName != null && !mapping.StoreType.Equals(storeTypeName, StringComparison.Ordinal) - ? mapping.Clone(storeTypeName, mapping.Size) + ? mapping.WithStoreTypeAndSize(storeTypeName, mapping.Size) : mapping; } }