Skip to content

Commit 5fb4e08

Browse files
authored
Merge pull request #34719 from dotnet/merge/release/9.0-to-main
[automated] Merge branch 'release/9.0' => 'main'
2 parents 9701789 + 065d3d5 commit 5fb4e08

File tree

15 files changed

+63
-66
lines changed

15 files changed

+63
-66
lines changed

Directory.Packages.props

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
88
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
99
<CentralPackageVersionOverrideEnabled>true</CentralPackageVersionOverrideEnabled>
10+
<!-- Do not warn for missing source mappings -->
11+
<NoWarn>$(NoWarn);NU1507</NoWarn>
1012
</PropertyGroup>
1113
<ItemGroup>
1214
<!-- core dependencies-->

NuGet.config

-32
Original file line numberDiff line numberDiff line change
@@ -18,38 +18,6 @@
1818
<!-- Used for the Rich Navigation indexing task -->
1919
<add key="richnav" value="https://pkgs.dev.azure.com/azure-public/vside/_packaging/vs-buildservices/nuget/v3/index.json" />
2020
</packageSources>
21-
<packageSourceMapping>
22-
<packageSource key="dotnet10-transport">
23-
<package pattern="*" />
24-
</packageSource>
25-
<packageSource key="dotnet10">
26-
<package pattern="*" />
27-
</packageSource>
28-
<packageSource key="dotnet9-transport">
29-
<package pattern="*" />
30-
</packageSource>
31-
<packageSource key="dotnet9">
32-
<package pattern="*" />
33-
</packageSource>
34-
<packageSource key="dotnet-public">
35-
<package pattern="*" />
36-
</packageSource>
37-
<packageSource key="dotnet-eng">
38-
<package pattern="*" />
39-
</packageSource>
40-
<packageSource key="dotnet-tools">
41-
<package pattern="*" />
42-
</packageSource>
43-
<packageSource key="dotnet8-transport">
44-
<package pattern="*" />
45-
</packageSource>
46-
<packageSource key="dotnet8">
47-
<package pattern="*" />
48-
</packageSource>
49-
<packageSource key="richnav">
50-
<package pattern="*" />
51-
</packageSource>
52-
</packageSourceMapping>
5321
<auditSources>
5422
<clear />
5523
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />

src/EFCore.Analyzers/EFCore.Analyzers.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)..\..\rulesets\EFCore.noxmldocs.ruleset</CodeAnalysisRuleSet>
1111
<ImplicitUsings>true</ImplicitUsings>
1212
<EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>
13-
<NoWarn>NU5128</NoWarn>
13+
<NoWarn>$(NoWarn);NU5128</NoWarn>
1414
</PropertyGroup>
1515

1616
<ItemGroup>

src/EFCore.Cosmos/Extensions/CosmosEntityTypeBuilderExtensions.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ public static EntityTypeBuilder HasDiscriminatorInJsonId(
531531
/// <see langword="null" /> to revert to the default setting.
532532
/// </param>
533533
/// <returns>The same builder instance so that multiple calls can be chained.</returns>
534-
public static EntityTypeBuilder IncludeRootDiscriminatorInJsonId(
534+
public static EntityTypeBuilder HasRootDiscriminatorInJsonId(
535535
this EntityTypeBuilder entityTypeBuilder,
536536
bool? includeDiscriminator = true)
537537
{
@@ -578,11 +578,11 @@ public static EntityTypeBuilder<TEntity> HasDiscriminatorInJsonId<TEntity>(
578578
/// <see langword="null" /> to revert to the default setting.
579579
/// </param>
580580
/// <returns>The same builder instance so that multiple calls can be chained.</returns>
581-
public static EntityTypeBuilder<TEntity> IncludeRootDiscriminatorInJsonId<TEntity>(
581+
public static EntityTypeBuilder<TEntity> HasRootDiscriminatorInJsonId<TEntity>(
582582
this EntityTypeBuilder<TEntity> entityTypeBuilder,
583583
bool? includeDiscriminator = true)
584584
where TEntity : class
585-
=> (EntityTypeBuilder<TEntity>)IncludeRootDiscriminatorInJsonId((EntityTypeBuilder)entityTypeBuilder, includeDiscriminator);
585+
=> (EntityTypeBuilder<TEntity>)HasRootDiscriminatorInJsonId((EntityTypeBuilder)entityTypeBuilder, includeDiscriminator);
586586

587587
/// <summary>
588588
/// Includes the discriminator value of the entity type in the JSON "id" value. This was the default behavior before EF Core 9.
@@ -633,12 +633,12 @@ public static EntityTypeBuilder<TEntity> IncludeRootDiscriminatorInJsonId<TEntit
633633
/// </param>
634634
/// <param name="fromDataAnnotation">Indicates whether the configuration was specified using a data annotation.</param>
635635
/// <returns>The same builder instance if the configuration was applied, <see langword="null" /> otherwise.</returns>
636-
public static IConventionEntityTypeBuilder? IncludeRootDiscriminatorInJsonId(
636+
public static IConventionEntityTypeBuilder? HasRootDiscriminatorInJsonId(
637637
this IConventionEntityTypeBuilder entityTypeBuilder,
638638
bool? includeDiscriminator,
639639
bool fromDataAnnotation = false)
640640
{
641-
if (!entityTypeBuilder.CanSetIncludeRootDiscriminatorInJsonId(includeDiscriminator, fromDataAnnotation))
641+
if (!entityTypeBuilder.CanSetRootDiscriminatorInJsonId(includeDiscriminator, fromDataAnnotation))
642642
{
643643
return null;
644644
}
@@ -699,7 +699,7 @@ public static bool CanSetDiscriminatorInJsonId(
699699
/// </param>
700700
/// <param name="fromDataAnnotation">Indicates whether the configuration was specified using a data annotation.</param>
701701
/// <returns><see langword="true" /> if the configuration can be applied.</returns>
702-
public static bool CanSetIncludeRootDiscriminatorInJsonId(
702+
public static bool CanSetRootDiscriminatorInJsonId(
703703
this IConventionEntityTypeBuilder entityTypeBuilder,
704704
bool? includeDiscriminator,
705705
bool fromDataAnnotation = false)

src/EFCore.Cosmos/Extensions/CosmosModelBuilderExtensions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ public static ModelBuilder HasDiscriminatorInJsonIds(
165165
/// <see langword="null" /> to revert to the default setting.
166166
/// </param>
167167
/// <returns>The same builder instance so that multiple calls can be chained.</returns>
168-
public static ModelBuilder IncludeRootDiscriminatorInJsonId(
168+
public static ModelBuilder HasRootDiscriminatorInJsonId(
169169
this ModelBuilder modelBuilder,
170170
bool? includeDiscriminator = true)
171171
{

src/EFCore.Design/EFCore.Design.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<GenerateDocumentationFile>true</GenerateDocumentationFile>
99
<DevelopmentDependency>true</DevelopmentDependency>
1010
<ImplicitUsings>true</ImplicitUsings>
11-
<NoWarn>EF9100</NoWarn> <!-- Precompiled query is experimental -->
11+
<NoWarn>$(NoWarn);EF9100</NoWarn> <!-- Precompiled query is experimental -->
1212
</PropertyGroup>
1313

1414
<ItemGroup>

src/EFCore.Relational/Metadata/Internal/RelationalModel.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2068,7 +2068,7 @@ IEnumerable<IView> IRelationalModel.Views
20682068
IEnumerable<IStoreFunction> IRelationalModel.Functions
20692069
{
20702070
[DebuggerStepThrough]
2071-
get => Functions.OrderBy(f => f.Key).Select(t => t.Value);
2071+
get => Functions.OrderBy(f => f.Key, NamedListComparer.Instance).Select(t => t.Value);
20722072
}
20732073

20742074
IEnumerable<IStoreStoredProcedure> IRelationalModel.StoredProcedures

src/EFCore.SqlServer/EFCore.SqlServer.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<GenerateDocumentationFile>true</GenerateDocumentationFile>
1010
<PackageTags>$(PackageTags);SQL Server</PackageTags>
1111
<ImplicitUsings>true</ImplicitUsings>
12-
<NoWarn>EF9100</NoWarn> <!-- Precompiled query is experimental -->
12+
<NoWarn>$(NoWarn);EF9100</NoWarn> <!-- Precompiled query is experimental -->
1313
</PropertyGroup>
1414

1515
<ItemGroup>

src/EFCore.Sqlite.Core/EFCore.Sqlite.Core.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<GenerateDocumentationFile>true</GenerateDocumentationFile>
1111
<PackageTags>$(PackageTags);SQLite</PackageTags>
1212
<ImplicitUsings>true</ImplicitUsings>
13-
<NoWarn>EF9100</NoWarn> <!-- Precompiled query is experimental -->
13+
<NoWarn>$(NoWarn);EF9100</NoWarn> <!-- Precompiled query is experimental -->
1414
</PropertyGroup>
1515

1616
<ItemGroup>

src/EFCore.Tasks/EFCore.Tasks.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<GenerateDependencyFile>true</GenerateDependencyFile>
1111
<SuppressDependenciesWhenPacking>true</SuppressDependenciesWhenPacking>
1212
<DevelopmentDependency>true</DevelopmentDependency>
13-
<NoWarn>NU5100;NU5128</NoWarn>
13+
<NoWarn>$(NoWarn);NU5100;NU5128</NoWarn>
1414
<ImplicitUsings>true</ImplicitUsings>
1515
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)..\..\rulesets\EFCore.noxmldocs.ruleset</CodeAnalysisRuleSet>
1616
</PropertyGroup>

test/EFCore.Cosmos.FunctionalTests/FindCosmosTest.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -461,11 +461,11 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
461461

462462
modelBuilder.Entity<IntKey>()
463463
.ToContainer("Ints")
464-
.IncludeRootDiscriminatorInJsonId();
464+
.HasRootDiscriminatorInJsonId();
465465

466466
modelBuilder.Entity<NullableIntKey>()
467467
.ToContainer("Ints")
468-
.IncludeRootDiscriminatorInJsonId();
468+
.HasRootDiscriminatorInJsonId();
469469

470470
modelBuilder.Entity<StringKey>()
471471
.ToContainer("Strings");
@@ -475,7 +475,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
475475

476476
modelBuilder.Entity<BaseType>()
477477
.ToContainer("Base")
478-
.IncludeRootDiscriminatorInJsonId();
478+
.HasRootDiscriminatorInJsonId();
479479

480480
modelBuilder.Entity<ShadowKey>().ToContainer("ShadowKeys");
481481
}

test/EFCore.Cosmos.FunctionalTests/KeysWithConvertersCosmosTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
2020
{
2121
base.OnModelCreating(modelBuilder, context);
2222

23-
modelBuilder.IncludeRootDiscriminatorInJsonId();
23+
modelBuilder.HasRootDiscriminatorInJsonId();
2424
}
2525

2626
public override DbContextOptionsBuilder AddOptions(DbContextOptionsBuilder builder)

test/EFCore.Cosmos.FunctionalTests/Query/NorthwindQueryCosmosFixture.cs

+6-6
Original file line numberDiff line numberDiff line change
@@ -42,32 +42,32 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
4242
modelBuilder.Entity<Employee>().ToContainer("Employees");
4343

4444
modelBuilder.Entity<Order>()
45-
.IncludeRootDiscriminatorInJsonId()
45+
.HasRootDiscriminatorInJsonId()
4646
.ToContainer("ProductsAndOrders");
4747

4848
modelBuilder.Entity<OrderDetail>()
49-
.IncludeRootDiscriminatorInJsonId()
49+
.HasRootDiscriminatorInJsonId()
5050
.ToContainer("ProductsAndOrders");
5151

5252
modelBuilder.Entity<Product>()
53-
.IncludeRootDiscriminatorInJsonId()
53+
.HasRootDiscriminatorInJsonId()
5454
.ToContainer("ProductsAndOrders");
5555

5656
modelBuilder.Entity<OrderQuery>()
5757
.ToContainer("ProductsAndOrders")
58-
.IncludeRootDiscriminatorInJsonId()
58+
.HasRootDiscriminatorInJsonId()
5959
.HasDiscriminator<string>("$type").HasValue("Order");
6060

6161
modelBuilder
6262
.Entity<ProductQuery>()
6363
.ToContainer("ProductsAndOrders")
64-
.IncludeRootDiscriminatorInJsonId()
64+
.HasRootDiscriminatorInJsonId()
6565
.HasDiscriminator<string>("$type").HasValue("Product");
6666

6767
modelBuilder
6868
.Entity<ProductView>()
6969
.ToContainer("ProductsAndOrders")
70-
.IncludeRootDiscriminatorInJsonId()
70+
.HasRootDiscriminatorInJsonId()
7171
.HasDiscriminator<string>("$type").HasValue("ProductView");
7272

7373
modelBuilder

test/EFCore.Cosmos.FunctionalTests/Query/ReadItemPartitionKeyQueryRootDiscriminatorInIdTest.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,7 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con
858858
{
859859
base.OnModelCreating(modelBuilder, context);
860860

861-
modelBuilder.IncludeRootDiscriminatorInJsonId();
861+
modelBuilder.HasRootDiscriminatorInJsonId();
862862
}
863863
}
864864
}

test/EFCore.Relational.Tests/Metadata/RelationalModelTest.cs

+37-10
Original file line numberDiff line numberDiff line change
@@ -3046,6 +3046,9 @@ public void Can_use_relational_model_with_SQL_queries()
30463046
private static IQueryable<Order> GetOrdersForCustomer(int id)
30473047
=> throw new NotImplementedException();
30483048

3049+
private static IQueryable<Order> GetOrdersForCustomer(string name)
3050+
=> throw new NotImplementedException();
3051+
30493052
[ConditionalFact]
30503053
public void Can_use_relational_model_with_functions()
30513054
{
@@ -3064,41 +3067,50 @@ public void Can_use_relational_model_with_functions()
30643067

30653068
modelBuilder.HasDbFunction(
30663069
typeof(RelationalModelTest).GetMethod(
3067-
nameof(GetOrdersForCustomer), BindingFlags.NonPublic | BindingFlags.Static));
3070+
nameof(GetOrdersForCustomer), BindingFlags.NonPublic | BindingFlags.Static, [typeof(int)] ));
3071+
3072+
modelBuilder.HasDbFunction(
3073+
typeof(RelationalModelTest).GetMethod(
3074+
nameof(GetOrdersForCustomer), BindingFlags.NonPublic | BindingFlags.Static, [typeof(string)]));
30683075

30693076
var model = Finalize(modelBuilder);
30703077

30713078
Assert.Single(model.Model.GetEntityTypes());
3072-
Assert.Equal(2, model.Functions.Count());
3079+
Assert.Equal(3, model.Functions.Count());
30733080
Assert.Empty(model.Views);
30743081
Assert.Empty(model.Tables);
30753082

30763083
var orderType = model.Model.FindEntityType(typeof(Order));
30773084
Assert.Null(orderType.FindPrimaryKey());
30783085

3079-
Assert.Equal(2, orderType.GetFunctionMappings().Count());
3086+
Assert.Equal(3, orderType.GetFunctionMappings().Count());
30803087
var orderMapping = orderType.GetFunctionMappings().First();
30813088
Assert.Null(orderMapping.IsSharedTablePrincipal);
30823089
Assert.Null(orderMapping.IsSplitEntityTypePrincipal);
30833090
Assert.True(orderMapping.IsDefaultFunctionMapping);
30843091

3085-
var tvfMapping = orderType.GetFunctionMappings().Last();
3092+
var tvfMapping = orderType.GetFunctionMappings().ElementAt(1);
30863093
Assert.Null(tvfMapping.IsSharedTablePrincipal);
30873094
Assert.Null(tvfMapping.IsSplitEntityTypePrincipal);
30883095
Assert.False(tvfMapping.IsDefaultFunctionMapping);
30893096

3097+
var tvfMapping2 = orderType.GetFunctionMappings().Last();
3098+
Assert.Null(tvfMapping2.IsSharedTablePrincipal);
3099+
Assert.Null(tvfMapping2.IsSplitEntityTypePrincipal);
3100+
Assert.False(tvfMapping2.IsDefaultFunctionMapping);
3101+
30903102
Assert.Null(orderMapping.IncludesDerivedTypes);
30913103
Assert.Equal(
3092-
new[] { nameof(Order.AlternateId), nameof(Order.CustomerId), nameof(Order.Id), nameof(Order.OrderDate) },
3104+
[nameof(Order.AlternateId), nameof(Order.CustomerId), nameof(Order.Id), nameof(Order.OrderDate)],
30933105
orderMapping.ColumnMappings.Select(m => m.Property.Name));
30943106

30953107
var ordersFunction = orderMapping.StoreFunction;
30963108
Assert.Same(ordersFunction, model.FindFunction(ordersFunction.Name, ordersFunction.Schema, []));
30973109
Assert.Equal(
3098-
new[] { orderType },
3110+
[orderType],
30993111
ordersFunction.EntityTypeMappings.Select(m => m.TypeBase));
31003112
Assert.Equal(
3101-
new[] { nameof(Order.CustomerId), nameof(Order.Id), nameof(Order.OrderDate), "SomeName" },
3113+
[nameof(Order.CustomerId), nameof(Order.Id), nameof(Order.OrderDate), "SomeName"],
31023114
ordersFunction.Columns.Select(m => m.Name));
31033115
Assert.Equal("GetOrders", ordersFunction.Name);
31043116
Assert.Null(ordersFunction.Schema);
@@ -3117,7 +3129,7 @@ public void Can_use_relational_model_with_functions()
31173129
Assert.Same(orderDateColumn, ordersFunction.FindColumn(nameof(Order.OrderDate)));
31183130
Assert.Same(orderDateColumn, orderDate.FindColumn(StoreObjectIdentifier.DbFunction(ordersFunction.Name)));
31193131
Assert.Same(orderDateColumn, ordersFunction.FindColumn(orderDate));
3120-
Assert.Equal(new[] { orderDate }, orderDateColumn.PropertyMappings.Select(m => m.Property));
3132+
Assert.Equal([orderDate], orderDateColumn.PropertyMappings.Select(m => m.Property));
31213133
Assert.Equal(nameof(Order.OrderDate), orderDateColumn.Name);
31223134
Assert.Equal("default_datetime_mapping", orderDateColumn.StoreType);
31233135
Assert.False(orderDateColumn.IsNullable);
@@ -3127,7 +3139,7 @@ public void Can_use_relational_model_with_functions()
31273139

31283140
var tvfFunction = tvfMapping.StoreFunction;
31293141
Assert.Same(tvfMapping, tvfFunction.EntityTypeMappings.Single());
3130-
Assert.Same(tvfFunction, model.FindFunction(tvfFunction.Name, tvfFunction.Schema, new[] { "default_int_mapping" }));
3142+
Assert.Same(tvfFunction, model.FindFunction(tvfFunction.Name, tvfFunction.Schema, ["default_int_mapping"]));
31313143
Assert.Equal(nameof(GetOrdersForCustomer), tvfFunction.Name);
31323144
Assert.Null(tvfFunction.Schema);
31333145
Assert.False(tvfFunction.IsBuiltIn);
@@ -3136,9 +3148,24 @@ public void Can_use_relational_model_with_functions()
31363148

31373149
var tvfDbFunction = tvfFunction.DbFunctions.Single();
31383150
Assert.Same(tvfFunction, tvfDbFunction.StoreFunction);
3139-
Assert.Same(model.Model.GetDbFunctions().Single(f => f.Parameters.Count() == 1), tvfDbFunction);
3151+
Assert.Same(model.Model.GetDbFunctions().First(f => f.Parameters.Count() == 1), tvfDbFunction);
31403152
Assert.Same(tvfFunction.Parameters.Single(), tvfDbFunction.Parameters.Single().StoreFunctionParameter);
31413153
Assert.Equal(tvfDbFunction.Parameters.Single().Name, tvfFunction.Parameters.Single().DbFunctionParameters.Single().Name);
3154+
3155+
var tvfFunction2 = tvfMapping2.StoreFunction;
3156+
Assert.Same(tvfMapping2, tvfFunction2.EntityTypeMappings.Single());
3157+
Assert.Same(tvfFunction2, model.FindFunction(tvfFunction2.Name, tvfFunction2.Schema, ["just_string(max)"]));
3158+
Assert.Equal(nameof(GetOrdersForCustomer), tvfFunction2.Name);
3159+
Assert.Null(tvfFunction2.Schema);
3160+
Assert.False(tvfFunction2.IsBuiltIn);
3161+
Assert.False(tvfFunction2.IsShared);
3162+
Assert.Null(tvfFunction2.ReturnType);
3163+
3164+
var tvfDbFunction2 = tvfFunction2.DbFunctions.Single();
3165+
Assert.Same(tvfFunction2, tvfDbFunction2.StoreFunction);
3166+
Assert.Same(model.Model.GetDbFunctions().Last(f => f.Parameters.Count() == 1), tvfDbFunction2);
3167+
Assert.Same(tvfFunction2.Parameters.Single(), tvfDbFunction2.Parameters.Single().StoreFunctionParameter);
3168+
Assert.Equal(tvfDbFunction2.Parameters.Single().Name, tvfFunction2.Parameters.Single().DbFunctionParameters.Single().Name);
31423169
}
31433170

31443171
[ConditionalFact]

0 commit comments

Comments
 (0)