From 10196376f4843cbbf180ec6ab2ce7d34ceec2fab Mon Sep 17 00:00:00 2001 From: maestro-prod-Primary Date: Wed, 4 Dec 2024 00:36:58 +0000 Subject: [PATCH 01/79] Merged PR 44727: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:922981e1-18b6-46aa-2468-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 922981e1-18b6-46aa-2468-08dbd53ba9ce - **Build**: 20241203.5 - **Date Produced**: December 3, 2024 11:28:49 PM UTC - **Commit**: 89ef51c5d8f5239345127a1e282e11036e590c8b - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.11-servicing.24517.7 to 8.0.12-servicing.24603.5][4] - **Microsoft.NETCore.App.Ref**: [from 8.0.11 to 8.0.12][4] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 8.0.11 to 8.0.12][4] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 8.0.11-servicing.24517.7 to 8.0.12-servicing.24603.5][4] [4]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GC9cb3b725e3ad2b57ddc9fb2dd48d2d170563a8f5&targetVersion=GC89ef51c5d8f5239345127a1e282e11036e590c8b&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:922981e1-18b6-46aa-2468-08dbd53ba9ce) --- NuGet.config | 16 ++-------------- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 8 ++++---- 3 files changed, 14 insertions(+), 26 deletions(-) diff --git a/NuGet.config b/NuGet.config index e8c2fb16571..363efb21cda 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,13 +4,7 @@ - - - - - - - + @@ -25,13 +19,7 @@ - - - - - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f83a10b4fca..5e40db4ba79 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -29,9 +29,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9cb3b725e3ad2b57ddc9fb2dd48d2d170563a8f5 + 89ef51c5d8f5239345127a1e282e11036e590c8b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -45,18 +45,18 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9cb3b725e3ad2b57ddc9fb2dd48d2d170563a8f5 + 89ef51c5d8f5239345127a1e282e11036e590c8b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9cb3b725e3ad2b57ddc9fb2dd48d2d170563a8f5 + 89ef51c5d8f5239345127a1e282e11036e590c8b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9cb3b725e3ad2b57ddc9fb2dd48d2d170563a8f5 + 89ef51c5d8f5239345127a1e282e11036e590c8b diff --git a/eng/Versions.props b/eng/Versions.props index 47d3f514c2f..99569a9c95c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,13 +24,13 @@ 8.0.1 8.0.1 8.0.2 - 8.0.11-servicing.24517.7 + 8.0.12-servicing.24603.5 8.0.1 8.0.5 8.0.1 - 8.0.11 - 8.0.11 - 8.0.11-servicing.24517.7 + 8.0.12 + 8.0.12 + 8.0.12-servicing.24603.5 8.0.0-beta.24508.1 From 4b3e12f6b1045a189cc537047cb841207a288ffe Mon Sep 17 00:00:00 2001 From: Maurycy Markowski Date: Mon, 9 Dec 2024 19:44:33 -0800 Subject: [PATCH 02/79] Fix to #35108 - Temporal table migration regression from EF Core 8 to 9 (#35289) In 9 we changed the way we process migration of temporal tables. One of the changes was drastically reducing the number of annotations for columns which are part of temporal tables. This however caused regressions for cases where migration code was created using EF8 (and containing those legacy annotations) but then executed using EF9 tooling. Specifically, extra annotations were generating a number of superfluous Alter Column operations (which were only modifying those annotations). In EF8 we had logic to weed out those operations, but it was removed in EF9. Fix is to remove all the legacy annotations on column operations before we start processing them. We no longer rely on them, but rather use annotations on Table operations and/or relational model. The only exception is CreateColumnOperation, so for it we convert old annotations to TemporalIsPeriodStartColumn and TemporalIsPeriodEndColumn where appropriate. Also, we are bringing back logic from EF8 which removed unnecessary AlterColumnOperations if the old and new columns are the same after the legacy temporal annotations have been removed. --- .../SqlServerMigrationsSqlGenerator.cs | 141 ++- .../Migrations/MigrationsSqlServerTest.cs | 1072 +++++++++++++++++ 2 files changed, 1202 insertions(+), 11 deletions(-) diff --git a/src/EFCore.SqlServer/Migrations/SqlServerMigrationsSqlGenerator.cs b/src/EFCore.SqlServer/Migrations/SqlServerMigrationsSqlGenerator.cs index 28362b77761..40573c91264 100644 --- a/src/EFCore.SqlServer/Migrations/SqlServerMigrationsSqlGenerator.cs +++ b/src/EFCore.SqlServer/Migrations/SqlServerMigrationsSqlGenerator.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Collections; using System.Globalization; using System.Text; using Microsoft.EntityFrameworkCore.SqlServer.Internal; @@ -1599,17 +1600,6 @@ protected override void ColumnDefinition( var isPeriodStartColumn = operation[SqlServerAnnotationNames.TemporalIsPeriodStartColumn] as bool? == true; var isPeriodEndColumn = operation[SqlServerAnnotationNames.TemporalIsPeriodEndColumn] as bool? == true; - // falling back to legacy annotations, in case the migration was generated using pre-9.0 bits - if (!isPeriodStartColumn && !isPeriodEndColumn) - { - if (operation[SqlServerAnnotationNames.TemporalPeriodStartColumnName] is string periodStartColumnName - && operation[SqlServerAnnotationNames.TemporalPeriodEndColumnName] is string periodEndColumnName) - { - isPeriodStartColumn = operation.Name == periodStartColumnName; - isPeriodEndColumn = operation.Name == periodEndColumnName; - } - } - if (isPeriodStartColumn || isPeriodEndColumn) { builder.Append(" GENERATED ALWAYS AS ROW "); @@ -2363,11 +2353,140 @@ private string Uniquify(string variableName, bool increase = true) return _variableCounter == 0 ? variableName : variableName + _variableCounter; } + private IReadOnlyList FixLegacyTemporalAnnotations(IReadOnlyList migrationOperations) + { + // short-circuit for non-temporal migrations (which is the majority) + if (migrationOperations.All(o => o[SqlServerAnnotationNames.IsTemporal] as bool? != true)) + { + return migrationOperations; + } + + var resultOperations = new List(migrationOperations.Count); + foreach (var migrationOperation in migrationOperations) + { + var isTemporal = migrationOperation[SqlServerAnnotationNames.IsTemporal] as bool? == true; + if (!isTemporal) + { + resultOperations.Add(migrationOperation); + continue; + } + + switch (migrationOperation) + { + case CreateTableOperation createTableOperation: + + foreach (var column in createTableOperation.Columns) + { + NormalizeTemporalAnnotationsForAddColumnOperation(column); + } + + resultOperations.Add(migrationOperation); + break; + + case AddColumnOperation addColumnOperation: + NormalizeTemporalAnnotationsForAddColumnOperation(addColumnOperation); + resultOperations.Add(addColumnOperation); + break; + + case AlterColumnOperation alterColumnOperation: + RemoveLegacyTemporalColumnAnnotations(alterColumnOperation); + RemoveLegacyTemporalColumnAnnotations(alterColumnOperation.OldColumn); + if (!CanSkipAlterColumnOperation(alterColumnOperation, alterColumnOperation.OldColumn)) + { + resultOperations.Add(alterColumnOperation); + } + + break; + + case DropColumnOperation dropColumnOperation: + RemoveLegacyTemporalColumnAnnotations(dropColumnOperation); + resultOperations.Add(dropColumnOperation); + break; + + case RenameColumnOperation renameColumnOperation: + RemoveLegacyTemporalColumnAnnotations(renameColumnOperation); + resultOperations.Add(renameColumnOperation); + break; + + default: + resultOperations.Add(migrationOperation); + break; + } + } + + return resultOperations; + + static void NormalizeTemporalAnnotationsForAddColumnOperation(AddColumnOperation addColumnOperation) + { + var periodStartColumnName = addColumnOperation[SqlServerAnnotationNames.TemporalPeriodStartColumnName] as string; + var periodEndColumnName = addColumnOperation[SqlServerAnnotationNames.TemporalPeriodEndColumnName] as string; + if (periodStartColumnName == addColumnOperation.Name) + { + addColumnOperation.AddAnnotation(SqlServerAnnotationNames.TemporalIsPeriodStartColumn, true); + } + else if (periodEndColumnName == addColumnOperation.Name) + { + addColumnOperation.AddAnnotation(SqlServerAnnotationNames.TemporalIsPeriodEndColumn, true); + } + + RemoveLegacyTemporalColumnAnnotations(addColumnOperation); + } + + static void RemoveLegacyTemporalColumnAnnotations(MigrationOperation operation) + { + operation.RemoveAnnotation(SqlServerAnnotationNames.IsTemporal); + operation.RemoveAnnotation(SqlServerAnnotationNames.TemporalHistoryTableName); + operation.RemoveAnnotation(SqlServerAnnotationNames.TemporalHistoryTableSchema); + operation.RemoveAnnotation(SqlServerAnnotationNames.TemporalPeriodStartColumnName); + operation.RemoveAnnotation(SqlServerAnnotationNames.TemporalPeriodEndColumnName); + } + + static bool CanSkipAlterColumnOperation(ColumnOperation column, ColumnOperation oldColumn) + => ColumnPropertiesAreTheSame(column, oldColumn) && AnnotationsAreTheSame(column, oldColumn); + + // don't compare name, table or schema - they are not being set in the model differ (since they should always be the same) + static bool ColumnPropertiesAreTheSame(ColumnOperation column, ColumnOperation oldColumn) + => column.ClrType == oldColumn.ClrType + && column.Collation == oldColumn.Collation + && column.ColumnType == oldColumn.ColumnType + && column.Comment == oldColumn.Comment + && column.ComputedColumnSql == oldColumn.ComputedColumnSql + && Equals(column.DefaultValue, oldColumn.DefaultValue) + && column.DefaultValueSql == oldColumn.DefaultValueSql + && column.IsDestructiveChange == oldColumn.IsDestructiveChange + && column.IsFixedLength == oldColumn.IsFixedLength + && column.IsNullable == oldColumn.IsNullable + && column.IsReadOnly == oldColumn.IsReadOnly + && column.IsRowVersion == oldColumn.IsRowVersion + && column.IsStored == oldColumn.IsStored + && column.IsUnicode == oldColumn.IsUnicode + && column.MaxLength == oldColumn.MaxLength + && column.Precision == oldColumn.Precision + && column.Scale == oldColumn.Scale; + + static bool AnnotationsAreTheSame(ColumnOperation column, ColumnOperation oldColumn) + { + var columnAnnotations = column.GetAnnotations().ToList(); + var oldColumnAnnotations = oldColumn.GetAnnotations().ToList(); + + if (columnAnnotations.Count != oldColumnAnnotations.Count) + { + return false; + } + + return columnAnnotations.Zip(oldColumnAnnotations) + .All(x => x.First.Name == x.Second.Name + && StructuralComparisons.StructuralEqualityComparer.Equals(x.First.Value, x.Second.Value)); + } + } + private IReadOnlyList RewriteOperations( IReadOnlyList migrationOperations, IModel? model, MigrationsSqlGenerationOptions options) { + migrationOperations = FixLegacyTemporalAnnotations(migrationOperations); + var operations = new List(); var availableSchemas = new List(); diff --git a/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsSqlServerTest.cs index bce6e263c9a..b7998252e12 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsSqlServerTest.cs @@ -10768,6 +10768,1078 @@ public override async Task Add_required_primitive_collection_to_existing_table() """); } + [ConditionalFact] + public virtual async Task Temporal_convert_regular_table_to_temporal_and_add_rowversion_column() + { + await Test( + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.HasKey("Id"); + e.Property("Name"); + e.Property("Number"); + e.ToTable("Customers"); + }), + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Start").ValueGeneratedOnAddOrUpdate(); + e.Property("End").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + e.Property("Name"); + e.Property("Number"); + e.Property("MyRowVersion").IsRowVersion(); + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("HistoryTable"); + ttb.HasPeriodStart("Start"); + ttb.HasPeriodEnd("End"); + })); + }), + model => + { + var table = Assert.Single(model.Tables, t => t.Name == "Customers"); + Assert.Equal("Customers", table.Name); + Assert.Equal(true, table[SqlServerAnnotationNames.IsTemporal]); + Assert.Equal("Start", table[SqlServerAnnotationNames.TemporalPeriodStartPropertyName]); + Assert.Equal("End", table[SqlServerAnnotationNames.TemporalPeriodEndPropertyName]); + Assert.Equal("HistoryTable", table[SqlServerAnnotationNames.TemporalHistoryTableName]); + + Assert.Collection( + table.Columns, + c => Assert.Equal("Id", c.Name), + c => Assert.Equal("Name", c.Name), + c => Assert.Equal("Number", c.Name), + c => Assert.Equal("MyRowVersion", c.Name)); + Assert.Same( + table.Columns.Single(c => c.Name == "Id"), + Assert.Single(table.PrimaryKey!.Columns)); + }); + + AssertSql( +""" +ALTER TABLE [Customers] ADD [End] datetime2 NOT NULL DEFAULT '9999-12-31T23:59:59.9999999'; +""", + // + """ +ALTER TABLE [Customers] ADD [MyRowVersion] rowversion NULL; +""", + // + """ +ALTER TABLE [Customers] ADD [Start] datetime2 NOT NULL DEFAULT '0001-01-01T00:00:00.0000000'; +""", + // + """ +ALTER TABLE [Customers] ADD PERIOD FOR SYSTEM_TIME ([Start], [End]) +""", + // + """ +ALTER TABLE [Customers] ALTER COLUMN [Start] ADD HIDDEN +""", + // + """ +ALTER TABLE [Customers] ALTER COLUMN [End] ADD HIDDEN +""", + // + """ +DECLARE @historyTableSchema sysname = SCHEMA_NAME() +EXEC(N'ALTER TABLE [Customers] SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [' + @historyTableSchema + '].[HistoryTable]))') +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_create_temporal_table_using_EF8_migration_code() + { + var migrationBuilder = new MigrationBuilder("Microsoft.EntityFrameworkCore.SqlServer"); + + migrationBuilder.CreateTable( + name: "Customers", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"), + Name = table.Column(type: "nvarchar(max)", nullable: false) + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"), + PeriodEnd = table.Column(type: "datetime2", nullable: false) + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"), + PeriodStart = table.Column(type: "datetime2", nullable: false) + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart") + }, + constraints: table => + { + table.PrimaryKey("PK_Customers", x => x.Id); + }) + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null!) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + await Test( + builder => { }, + migrationBuilder.Operations, + model => + { + var table = Assert.Single(model.Tables, t => t.Name == "Customers"); + Assert.Equal("Customers", table.Name); + Assert.Equal(true, table[SqlServerAnnotationNames.IsTemporal]); + Assert.Equal("PeriodStart", table[SqlServerAnnotationNames.TemporalPeriodStartPropertyName]); + Assert.Equal("PeriodEnd", table[SqlServerAnnotationNames.TemporalPeriodEndPropertyName]); + Assert.Equal("CustomersHistory", table[SqlServerAnnotationNames.TemporalHistoryTableName]); + + Assert.Collection( + table.Columns, + c => Assert.Equal("Id", c.Name), + c => Assert.Equal("Name", c.Name)); + Assert.Same( + table.Columns.Single(c => c.Name == "Id"), + Assert.Single(table.PrimaryKey!.Columns)); + }); + + AssertSql( +""" +DECLARE @historyTableSchema sysname = SCHEMA_NAME() +EXEC(N'CREATE TABLE [Customers] ( + [Id] int NOT NULL IDENTITY, + [Name] nvarchar(max) NOT NULL, + [PeriodEnd] datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, + [PeriodStart] datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL, + CONSTRAINT [PK_Customers] PRIMARY KEY ([Id]), + PERIOD FOR SYSTEM_TIME([PeriodStart], [PeriodEnd]) +) WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [' + @historyTableSchema + N'].[CustomersHistory]))'); +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_convert_regular_table_to_temporal_using_EF8_migration_code() + { + var migrationBuilder = new MigrationBuilder("Microsoft.EntityFrameworkCore.SqlServer"); + + migrationBuilder.AlterTable( + name: "Customers") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "Name", + table: "Customers", + type: "nvarchar(max)", + nullable: false, + oldClrType: typeof(string), + oldType: "nvarchar(max)") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "Id", + table: "Customers", + type: "int", + nullable: false, + oldClrType: typeof(int), + oldType: "int") + .Annotation("SqlServer:Identity", "1, 1") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart") + .OldAnnotation("SqlServer:Identity", "1, 1"); + + migrationBuilder.AddColumn( + name: "PeriodEnd", + table: "Customers", + type: "datetime2", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AddColumn( + name: "PeriodStart", + table: "Customers", + type: "datetime2", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + await Test( + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.HasKey("Id"); + e.Property("Name"); + e.Property("Number"); + e.ToTable("Customers"); + }), + migrationBuilder.Operations, + model => + { + var table = Assert.Single(model.Tables, t => t.Name == "Customers"); + Assert.Equal("Customers", table.Name); + Assert.Equal(true, table[SqlServerAnnotationNames.IsTemporal]); + Assert.Equal("PeriodStart", table[SqlServerAnnotationNames.TemporalPeriodStartPropertyName]); + Assert.Equal("PeriodEnd", table[SqlServerAnnotationNames.TemporalPeriodEndPropertyName]); + Assert.Equal("CustomersHistory", table[SqlServerAnnotationNames.TemporalHistoryTableName]); + + Assert.Collection( + table.Columns, + c => Assert.Equal("Id", c.Name), + c => Assert.Equal("Name", c.Name), + c => Assert.Equal("Number", c.Name)); + Assert.Same( + table.Columns.Single(c => c.Name == "Id"), + Assert.Single(table.PrimaryKey!.Columns)); + }); + + AssertSql( +""" +ALTER TABLE [Customers] ADD [PeriodEnd] datetime2 NOT NULL DEFAULT '9999-12-31T23:59:59.9999999'; +""", + // + """ +ALTER TABLE [Customers] ADD [PeriodStart] datetime2 NOT NULL DEFAULT '0001-01-01T00:00:00.0000000'; +""", + // + """ +ALTER TABLE [Customers] ADD PERIOD FOR SYSTEM_TIME ([PeriodStart], [PeriodEnd]) +""", + // + """ +ALTER TABLE [Customers] ALTER COLUMN [PeriodStart] ADD HIDDEN +""", + // + """ +ALTER TABLE [Customers] ALTER COLUMN [PeriodEnd] ADD HIDDEN +""", + // + """ +DECLARE @historyTableSchema sysname = SCHEMA_NAME() +EXEC(N'ALTER TABLE [Customers] SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [' + @historyTableSchema + '].[CustomersHistory]))') +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_convert_regular_table_with_rowversion_to_temporal_using_EF8_migration_code() + { + var migrationBuilder = new MigrationBuilder("Microsoft.EntityFrameworkCore.SqlServer"); + + migrationBuilder.AlterTable( + name: "Customers") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "Name", + table: "Customers", + type: "nvarchar(max)", + nullable: false, + oldClrType: typeof(string), + oldType: "nvarchar(max)") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "MyRowVersion", + table: "Customers", + type: "rowversion", + rowVersion: true, + nullable: false, + oldClrType: typeof(byte[]), + oldType: "rowversion", + oldRowVersion: true) + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "Id", + table: "Customers", + type: "int", + nullable: false, + oldClrType: typeof(int), + oldType: "int") + .Annotation("SqlServer:Identity", "1, 1") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart") + .OldAnnotation("SqlServer:Identity", "1, 1"); + + migrationBuilder.AddColumn( + name: "PeriodEnd", + table: "Customers", + type: "datetime2", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AddColumn( + name: "PeriodStart", + table: "Customers", + type: "datetime2", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + await Test( + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.HasKey("Id"); + e.Property("Name"); + e.Property("MyRowVersion").IsRowVersion(); + e.ToTable("Customers"); + }), + migrationBuilder.Operations, + model => + { + var table = Assert.Single(model.Tables, t => t.Name == "Customers"); + Assert.Equal("Customers", table.Name); + Assert.Equal(true, table[SqlServerAnnotationNames.IsTemporal]); + Assert.Equal("PeriodStart", table[SqlServerAnnotationNames.TemporalPeriodStartPropertyName]); + Assert.Equal("PeriodEnd", table[SqlServerAnnotationNames.TemporalPeriodEndPropertyName]); + Assert.Equal("CustomersHistory", table[SqlServerAnnotationNames.TemporalHistoryTableName]); + + Assert.Collection( + table.Columns, + c => Assert.Equal("Id", c.Name), + c => Assert.Equal("MyRowVersion", c.Name), + c => Assert.Equal("Name", c.Name)); + Assert.Same( + table.Columns.Single(c => c.Name == "Id"), + Assert.Single(table.PrimaryKey!.Columns)); + }); + + AssertSql( +""" +ALTER TABLE [Customers] ADD [PeriodEnd] datetime2 NOT NULL DEFAULT '9999-12-31T23:59:59.9999999'; +""", + // + """ +ALTER TABLE [Customers] ADD [PeriodStart] datetime2 NOT NULL DEFAULT '0001-01-01T00:00:00.0000000'; +""", + // + """ +ALTER TABLE [Customers] ADD PERIOD FOR SYSTEM_TIME ([PeriodStart], [PeriodEnd]) +""", + // + """ +ALTER TABLE [Customers] ALTER COLUMN [PeriodStart] ADD HIDDEN +""", + // + """ +ALTER TABLE [Customers] ALTER COLUMN [PeriodEnd] ADD HIDDEN +""", + // + """ +DECLARE @historyTableSchema sysname = SCHEMA_NAME() +EXEC(N'ALTER TABLE [Customers] SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [' + @historyTableSchema + '].[CustomersHistory]))') +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_rename_temporal_table_using_EF8_migration_code() + { + var migrationBuilder = new MigrationBuilder("Microsoft.EntityFrameworkCore.SqlServer"); + + migrationBuilder.DropPrimaryKey( + name: "PK_Customers", + table: "Customers") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.RenameTable( + name: "Customers", + newName: "RenamedCustomers") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null); + + migrationBuilder.AlterTable( + name: "RenamedCustomers") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "RenamedCustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "PeriodStart", + table: "RenamedCustomers", + type: "datetime2", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "datetime2") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "RenamedCustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "PeriodEnd", + table: "RenamedCustomers", + type: "datetime2", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "datetime2") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "RenamedCustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "Name", + table: "RenamedCustomers", + type: "nvarchar(max)", + nullable: false, + oldClrType: typeof(string), + oldType: "nvarchar(max)") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "RenamedCustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "Id", + table: "RenamedCustomers", + type: "int", + nullable: false, + oldClrType: typeof(int), + oldType: "int") + .Annotation("SqlServer:Identity", "1, 1") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "RenamedCustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart") + .OldAnnotation("SqlServer:Identity", "1, 1") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AddPrimaryKey( + name: "PK_RenamedCustomers", + table: "RenamedCustomers", + column: "Id"); + + await Test( + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("PeriodStart").ValueGeneratedOnAddOrUpdate(); + e.Property("PeriodEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + e.Property("Name"); + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("CustomersHistory"); + ttb.HasPeriodStart("PeriodStart"); + ttb.HasPeriodEnd("PeriodEnd"); + })); + }), + migrationBuilder.Operations, + model => + { + var table = Assert.Single(model.Tables, t => t.Name == "RenamedCustomers"); + Assert.Equal("RenamedCustomers", table.Name); + Assert.Equal(true, table[SqlServerAnnotationNames.IsTemporal]); + Assert.Equal("PeriodStart", table[SqlServerAnnotationNames.TemporalPeriodStartPropertyName]); + Assert.Equal("PeriodEnd", table[SqlServerAnnotationNames.TemporalPeriodEndPropertyName]); + Assert.Equal("RenamedCustomersHistory", table[SqlServerAnnotationNames.TemporalHistoryTableName]); + + Assert.Collection( + table.Columns, + c => Assert.Equal("Id", c.Name), + c => Assert.Equal("Name", c.Name)); + Assert.Same( + table.Columns.Single(c => c.Name == "Id"), + Assert.Single(table.PrimaryKey!.Columns)); + }); + + AssertSql( +""" +ALTER TABLE [Customers] SET (SYSTEM_VERSIONING = OFF) +""", + // + """ +ALTER TABLE [Customers] DROP CONSTRAINT [PK_Customers]; +""", + // + """ +EXEC sp_rename N'[Customers]', N'RenamedCustomers', 'OBJECT'; +""", + // + """ +EXEC sp_rename N'[CustomersHistory]', N'RenamedCustomersHistory', 'OBJECT'; +""", + // + """ +ALTER TABLE [RenamedCustomers] ADD CONSTRAINT [PK_RenamedCustomers] PRIMARY KEY ([Id]); +""", + // + """ +DECLARE @historyTableSchema1 sysname = SCHEMA_NAME() +EXEC(N'ALTER TABLE [RenamedCustomers] SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [' + @historyTableSchema1 + '].[RenamedCustomersHistory]))') +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_convert_temporal_table_to_regular_using_EF8_migration_code() + { + var migrationBuilder = new MigrationBuilder("Microsoft.EntityFrameworkCore.SqlServer"); + + migrationBuilder.DropColumn( + name: "PeriodEnd", + table: "Customers") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.DropColumn( + name: "PeriodStart", + table: "Customers") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterTable( + name: "Customers") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "Name", + table: "Customers", + type: "nvarchar(max)", + nullable: false, + oldClrType: typeof(string), + oldType: "nvarchar(max)") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "Id", + table: "Customers", + type: "int", + nullable: false, + oldClrType: typeof(int), + oldType: "int") + .Annotation("SqlServer:Identity", "1, 1") + .OldAnnotation("SqlServer:Identity", "1, 1") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + await Test( + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("PeriodStart").ValueGeneratedOnAddOrUpdate(); + e.Property("PeriodEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + e.Property("Name"); + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("CustomersHistory"); + ttb.HasPeriodStart("PeriodStart"); + ttb.HasPeriodEnd("PeriodEnd"); + })); + }), + migrationBuilder.Operations, + model => + { + var table = Assert.Single(model.Tables, t => t.Name == "Customers"); + Assert.Equal("Customers", table.Name); + + Assert.Collection( + table.Columns, + c => Assert.Equal("Id", c.Name), + c => Assert.Equal("Name", c.Name)); + Assert.Same( + table.Columns.Single(c => c.Name == "Id"), + Assert.Single(table.PrimaryKey!.Columns)); + }); + + AssertSql( +""" +ALTER TABLE [Customers] SET (SYSTEM_VERSIONING = OFF) +""", + // + """ +ALTER TABLE [Customers] DROP PERIOD FOR SYSTEM_TIME +""", + // + """ +DECLARE @var1 sysname; +SELECT @var1 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Customers]') AND [c].[name] = N'PeriodEnd'); +IF @var1 IS NOT NULL EXEC(N'ALTER TABLE [Customers] DROP CONSTRAINT [' + @var1 + '];'); +ALTER TABLE [Customers] DROP COLUMN [PeriodEnd]; +""", + // + """ +DECLARE @var2 sysname; +SELECT @var2 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Customers]') AND [c].[name] = N'PeriodStart'); +IF @var2 IS NOT NULL EXEC(N'ALTER TABLE [Customers] DROP CONSTRAINT [' + @var2 + '];'); +ALTER TABLE [Customers] DROP COLUMN [PeriodStart]; +""", + // + """ +DROP TABLE [CustomersHistory]; +""", + // + """ +DECLARE @var3 sysname; +SELECT @var3 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Customers]') AND [c].[name] = N'Name'); +IF @var3 IS NOT NULL EXEC(N'ALTER TABLE [Customers] DROP CONSTRAINT [' + @var3 + '];'); +ALTER TABLE [Customers] ALTER COLUMN [Name] nvarchar(max) NOT NULL; +""", + // + """ +DECLARE @var4 sysname; +SELECT @var4 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Customers]') AND [c].[name] = N'Id'); +IF @var4 IS NOT NULL EXEC(N'ALTER TABLE [Customers] DROP CONSTRAINT [' + @var4 + '];'); +ALTER TABLE [Customers] ALTER COLUMN [Id] int NOT NULL; +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_add_column_to_temporal_table_using_EF8_migration_code() + { + var migrationBuilder = new MigrationBuilder("Microsoft.EntityFrameworkCore.SqlServer"); + + migrationBuilder.AddColumn( + name: "MyRowVersion", + table: "Customers", + type: "rowversion", + rowVersion: true, + nullable: false, + defaultValue: new byte[0]) + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + await Test( + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("PeriodStart").ValueGeneratedOnAddOrUpdate(); + e.Property("PeriodEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + e.Property("Name"); + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("CustomersHistory"); + ttb.HasPeriodStart("PeriodStart"); + ttb.HasPeriodEnd("PeriodEnd"); + })); + }), + migrationBuilder.Operations, + model => + { + var table = Assert.Single(model.Tables, t => t.Name == "Customers"); + Assert.Equal("Customers", table.Name); + + Assert.Collection( + table.Columns, + c => Assert.Equal("Id", c.Name), + c => Assert.Equal("Name", c.Name), + c => Assert.Equal("MyRowVersion", c.Name)); + Assert.Same( + table.Columns.Single(c => c.Name == "Id"), + Assert.Single(table.PrimaryKey!.Columns)); + }); + + AssertSql( +""" +ALTER TABLE [Customers] ADD [MyRowVersion] rowversion NOT NULL; +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_remove_temporal_table_column_using_EF8_migration_code() + { + var migrationBuilder = new MigrationBuilder("Microsoft.EntityFrameworkCore.SqlServer"); + + migrationBuilder.DropColumn( + name: "IsVip", + table: "Customers") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + await Test( + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("PeriodStart").ValueGeneratedOnAddOrUpdate(); + e.Property("PeriodEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + e.Property("Name"); + e.Property("IsVip"); + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("CustomersHistory"); + ttb.HasPeriodStart("PeriodStart"); + ttb.HasPeriodEnd("PeriodEnd"); + })); + }), + migrationBuilder.Operations, + model => + { + var table = Assert.Single(model.Tables, t => t.Name == "Customers"); + Assert.Equal("Customers", table.Name); + + Assert.Collection( + table.Columns, + c => Assert.Equal("Id", c.Name), + c => Assert.Equal("Name", c.Name)); + Assert.Same( + table.Columns.Single(c => c.Name == "Id"), + Assert.Single(table.PrimaryKey!.Columns)); + }); + + AssertSql( +""" +DECLARE @var1 sysname; +SELECT @var1 = [d].[name] +FROM [sys].[default_constraints] [d] +INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] +WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Customers]') AND [c].[name] = N'IsVip'); +IF @var1 IS NOT NULL EXEC(N'ALTER TABLE [Customers] DROP CONSTRAINT [' + @var1 + '];'); +ALTER TABLE [Customers] DROP COLUMN [IsVip]; +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_rename_temporal_table_column_using_EF8_migration_code() + { + var migrationBuilder = new MigrationBuilder("Microsoft.EntityFrameworkCore.SqlServer"); + + migrationBuilder.RenameColumn( + name: "Name", + table: "Customers", + newName: "FullName") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + await Test( + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("PeriodStart").ValueGeneratedOnAddOrUpdate(); + e.Property("PeriodEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + e.Property("Name"); + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("CustomersHistory"); + ttb.HasPeriodStart("PeriodStart"); + ttb.HasPeriodEnd("PeriodEnd"); + })); + }), + migrationBuilder.Operations, + model => + { + var table = Assert.Single(model.Tables, t => t.Name == "Customers"); + Assert.Equal("Customers", table.Name); + + Assert.Collection( + table.Columns, + c => Assert.Equal("Id", c.Name), + c => Assert.Equal("FullName", c.Name)); + Assert.Same( + table.Columns.Single(c => c.Name == "Id"), + Assert.Single(table.PrimaryKey!.Columns)); + }); + + AssertSql( +""" +EXEC sp_rename N'[Customers].[Name]', N'FullName', 'COLUMN'; +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_rename_temporal_table_period_columns_using_EF8_migration_code() + { + var migrationBuilder = new MigrationBuilder("Microsoft.EntityFrameworkCore.SqlServer"); + + migrationBuilder.RenameColumn( + name: "PeriodStart", + table: "Customers", + newName: "NewPeriodStart") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.RenameColumn( + name: "PeriodEnd", + table: "Customers", + newName: "NewPeriodEnd") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterTable( + name: "Customers") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "NewPeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "NewPeriodStart") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "Name", + table: "Customers", + type: "nvarchar(max)", + nullable: false, + oldClrType: typeof(string), + oldType: "nvarchar(max)") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "NewPeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "NewPeriodStart") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "Id", + table: "Customers", + type: "int", + nullable: false, + oldClrType: typeof(int), + oldType: "int") + .Annotation("SqlServer:Identity", "1, 1") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "NewPeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "NewPeriodStart") + .OldAnnotation("SqlServer:Identity", "1, 1") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "NewPeriodStart", + table: "Customers", + type: "datetime2", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "datetime2") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "NewPeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "NewPeriodStart") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + migrationBuilder.AlterColumn( + name: "NewPeriodEnd", + table: "Customers", + type: "datetime2", + nullable: false, + oldClrType: typeof(DateTime), + oldType: "datetime2") + .Annotation("SqlServer:IsTemporal", true) + .Annotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .Annotation("SqlServer:TemporalHistoryTableSchema", null) + .Annotation("SqlServer:TemporalPeriodEndColumnName", "NewPeriodEnd") + .Annotation("SqlServer:TemporalPeriodStartColumnName", "NewPeriodStart") + .OldAnnotation("SqlServer:IsTemporal", true) + .OldAnnotation("SqlServer:TemporalHistoryTableName", "CustomersHistory") + .OldAnnotation("SqlServer:TemporalHistoryTableSchema", null) + .OldAnnotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd") + .OldAnnotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart"); + + await Test( + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("PeriodStart").ValueGeneratedOnAddOrUpdate(); + e.Property("PeriodEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + e.Property("Name"); + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("CustomersHistory"); + ttb.HasPeriodStart("PeriodStart"); + ttb.HasPeriodEnd("PeriodEnd"); + })); + }), + migrationBuilder.Operations, + model => + { + var table = Assert.Single(model.Tables, t => t.Name == "Customers"); + Assert.Equal("Customers", table.Name); + + Assert.Collection( + table.Columns, + c => Assert.Equal("Id", c.Name), + c => Assert.Equal("Name", c.Name)); + Assert.Same( + table.Columns.Single(c => c.Name == "Id"), + Assert.Single(table.PrimaryKey!.Columns)); + }); + + AssertSql( +""" +EXEC sp_rename N'[Customers].[PeriodStart]', N'NewPeriodStart', 'COLUMN'; +""", + // + """ +EXEC sp_rename N'[Customers].[PeriodEnd]', N'NewPeriodEnd', 'COLUMN'; +"""); + } + [ConditionalFact] public override async Task Add_required_primitive_collection_with_custom_default_value_to_existing_table() { From 5cbe4086616185524bfeada2e4129f6e60ccf447 Mon Sep 17 00:00:00 2001 From: Andriy Svyryd Date: Tue, 17 Dec 2024 11:42:10 -0800 Subject: [PATCH 03/79] Don't throw PendingModelChangesWarning when applying a specific migration Fixes #35342 --- src/EFCore.Relational/Migrations/Internal/Migrator.cs | 10 +++++----- .../MigrationsInfrastructureSqlServerTest.cs | 3 +-- .../Query/JsonQueryJsonTypeSqlServerFixture.cs | 1 - 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/EFCore.Relational/Migrations/Internal/Migrator.cs b/src/EFCore.Relational/Migrations/Internal/Migrator.cs index ea758d2c634..2d5989257aa 100644 --- a/src/EFCore.Relational/Migrations/Internal/Migrator.cs +++ b/src/EFCore.Relational/Migrations/Internal/Migrator.cs @@ -3,7 +3,6 @@ using System.Transactions; using Microsoft.EntityFrameworkCore.Diagnostics.Internal; -using Microsoft.EntityFrameworkCore.Metadata.Internal; namespace Microsoft.EntityFrameworkCore.Migrations.Internal; @@ -94,7 +93,7 @@ public Migrator( public virtual void Migrate(string? targetMigration) { var useTransaction = _connection.CurrentTransaction is null; - ValidateMigrations(useTransaction); + ValidateMigrations(useTransaction, targetMigration); using var transactionScope = new TransactionScope(TransactionScopeOption.Suppress, TransactionScopeAsyncFlowOption.Enabled); @@ -219,7 +218,7 @@ public virtual async Task MigrateAsync( CancellationToken cancellationToken = default) { var useTransaction = _connection.CurrentTransaction is null; - ValidateMigrations(useTransaction); + ValidateMigrations(useTransaction, targetMigration); using var transactionScope = new TransactionScope(TransactionScopeOption.Suppress, TransactionScopeAsyncFlowOption.Enabled); @@ -349,7 +348,7 @@ await _migrationCommandExecutor.ExecuteNonQueryAsync( } } - private void ValidateMigrations(bool useTransaction) + private void ValidateMigrations(bool useTransaction, string? targetMigration) { if (!useTransaction && _executionStrategy.RetriesOnFailure) @@ -365,7 +364,8 @@ private void ValidateMigrations(bool useTransaction) { _logger.ModelSnapshotNotFound(this, _migrationsAssembly); } - else if (RelationalResources.LogPendingModelChanges(_logger).WarningBehavior != WarningBehavior.Ignore + else if (targetMigration == null + && RelationalResources.LogPendingModelChanges(_logger).WarningBehavior != WarningBehavior.Ignore && HasPendingModelChanges()) { var modelSource = (ModelSource)_currentContext.Context.GetService(); diff --git a/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsInfrastructureSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsInfrastructureSqlServerTest.cs index 491a5e86ab6..dc79f391ef1 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsInfrastructureSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsInfrastructureSqlServerTest.cs @@ -816,8 +816,7 @@ public async Task Empty_Migration_Creates_Database() { using var context = new BloggingContext( Fixture.TestStore.AddProviderOptions( - new DbContextOptionsBuilder().EnableServiceProviderCaching(false)) - .ConfigureWarnings(e => e.Log(RelationalEventId.PendingModelChangesWarning)).Options); + new DbContextOptionsBuilder().EnableServiceProviderCaching(false)).Options); context.Database.EnsureDeleted(); GiveMeSomeTime(context); diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/JsonQueryJsonTypeSqlServerFixture.cs b/test/EFCore.SqlServer.FunctionalTests/Query/JsonQueryJsonTypeSqlServerFixture.cs index 81642e9c14f..c125c5eccb6 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/JsonQueryJsonTypeSqlServerFixture.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/JsonQueryJsonTypeSqlServerFixture.cs @@ -26,7 +26,6 @@ protected override void OnModelCreating(ModelBuilder modelBuilder, DbContext con b => { b.OwnsOne(x => x.OwnedReferenceRoot).ToJson("json_reference_custom_naming").HasColumnType("json"); - ; b.OwnsMany(x => x.OwnedCollectionRoot).HasColumnType("json").ToJson("json_collection_custom_naming"); }); From 7f250122f82a21d394ac68be62fc1c6221355f21 Mon Sep 17 00:00:00 2001 From: Andriy Svyryd Date: Fri, 3 Jan 2025 12:21:46 -0800 Subject: [PATCH 04/79] [release/8.0] Update Helix queues (#35408) --- azure-pipelines-public.yml | 2 +- azure-pipelines.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/azure-pipelines-public.yml b/azure-pipelines-public.yml index f35de392c38..98c9420f928 100644 --- a/azure-pipelines-public.yml +++ b/azure-pipelines-public.yml @@ -269,7 +269,7 @@ stages: value: $(_BuildConfig) - ${{ if eq(variables['System.TeamProject'], 'public') }}: - name: HelixTargetQueues - value: Windows.10.Amd64.Open;OSX.1200.Amd64.Open;Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-20.04-helix-sqlserver-amd64 + value: Windows.10.Amd64.Open;OSX.13.Amd64.Open;OSX.13.ARM64.Open;Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-20.04-helix-sqlserver-amd64 - name: _HelixAccessToken value: '' # Needed for public queues - ${{ if ne(variables['System.TeamProject'], 'public') }}: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 5d43c84bc79..db4b1c5b43e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -208,7 +208,7 @@ extends: - name: _HelixBuildConfig value: $(_BuildConfig) - name: HelixTargetQueues - value: Windows.10.Amd64;OSX.1200.Amd64;Ubuntu.2204.Amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-20.04-helix-sqlserver-amd64 + value: Windows.10.Amd64;OSX.13.Amd64;OSX.13.ARM64;Ubuntu.2204.Amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-20.04-helix-sqlserver-amd64 - name: _HelixAccessToken # Needed for internal queues value: $(HelixApiAccessToken) From c3b436c6fde467d07feefbc1677e472f0f7aba57 Mon Sep 17 00:00:00 2001 From: Andriy Svyryd Date: Fri, 3 Jan 2025 12:22:32 -0800 Subject: [PATCH 05/79] Update Helix queues (#35407) --- azure-pipelines-public.yml | 2 +- azure-pipelines.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/azure-pipelines-public.yml b/azure-pipelines-public.yml index 85b9fbab9e4..c42e450fb7e 100644 --- a/azure-pipelines-public.yml +++ b/azure-pipelines-public.yml @@ -151,7 +151,7 @@ stages: - name: _HelixBuildConfig value: $(_BuildConfig) - name: HelixTargetQueues - value: Windows.10.Amd64.Open;OSX.1200.Amd64.Open;OSX.1200.ARM64.Open;Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-20.04-helix-sqlserver-amd64 + value: Windows.10.Amd64.Open;OSX.13.ARM64.Open;Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-20.04-helix-sqlserver-amd64 - name: _HelixAccessToken value: '' # Needed for public queues steps: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 530b57da6a1..382f139f1d0 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -219,7 +219,7 @@ extends: - name: _HelixBuildConfig value: $(_BuildConfig) - name: HelixTargetQueues - value: Windows.10.Amd64;OSX.1200.Amd64;OSX.1200.ARM64;Ubuntu.2204.Amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-20.04-helix-sqlserver-amd64 + value: Windows.10.Amd64;OSX.13.ARM64;Ubuntu.2204.Amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-20.04-helix-sqlserver-amd64 - name: _HelixAccessToken # Needed for internal queues value: $(HelixApiAccessToken) From 29549969102054a6ba0f22efdec915d4065e05f4 Mon Sep 17 00:00:00 2001 From: Maurycy Markowski Date: Mon, 6 Jan 2025 02:30:19 -0800 Subject: [PATCH 06/79] [release/9.0-staging] Fix to #35239 - EF9: SaveChanges() is significantly slower in .NET9 vs. .NET8 when using .ToJson() Mapping vs. PostgreSQL Legacy POCO mapping (#35360) * Fix to #35239 - EF9: SaveChanges() is significantly slower in .NET9 vs. .NET8 when using .ToJson() Mapping vs. PostgreSQL Legacy POCO mapping Fixes #35239 Description EF9 introduced a change in how we construct ValueComparers for some of our types (specifically collection of scalars/references), in preparation for AOT work. The way the change was implemented may cause a severe performance regression during SaveChanges operation involving multiple entities using collections of primitives (one of our highly requested features). Customer impact Customers performing data manipulation operations on entities with collections of primitives may experience significant performance regressions. This may also happen when no data has been changed, but sufficiently large entity graph has been loaded into change tracker. There is no workaround for this issue, apart from changing the model to not use primitive collections (which is unacceptable for majority of customers) How found Multiple customer reports on EF 9 Regression Yes, from EF8. Note: this is a perf regression only, not a functional regression. Testing Ad hoc performance test using BenchmarkDotNet. Functional testing already covered by existing tests. Risk Low. The patch fix has been limited in scope to reduce the risk. Changes should only affect models with primitive collections. Added quirks just to be sure. --- .../Internal/StringDictionaryComparer.cs | 224 +++++++++++++++++- .../ListOfNullableValueTypesComparer.cs | 159 ++++++++++++- .../ListOfReferenceTypesComparer.cs | 165 ++++++++++++- .../ListOfValueTypesComparer.cs | 144 ++++++++++- 4 files changed, 671 insertions(+), 21 deletions(-) diff --git a/src/EFCore.Cosmos/ChangeTracking/Internal/StringDictionaryComparer.cs b/src/EFCore.Cosmos/ChangeTracking/Internal/StringDictionaryComparer.cs index aa4589d54b8..096ebc3b278 100644 --- a/src/EFCore.Cosmos/ChangeTracking/Internal/StringDictionaryComparer.cs +++ b/src/EFCore.Cosmos/ChangeTracking/Internal/StringDictionaryComparer.cs @@ -14,13 +14,25 @@ namespace Microsoft.EntityFrameworkCore.Cosmos.ChangeTracking.Internal; /// public sealed class StringDictionaryComparer : ValueComparer, IInfrastructure { + private static readonly bool UseOldBehavior35239 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35239", out var enabled35239) && enabled35239; + private static readonly MethodInfo CompareMethod = typeof(StringDictionaryComparer).GetMethod( + nameof(Compare), BindingFlags.Static | BindingFlags.NonPublic, [typeof(object), typeof(object), typeof(Func)])!; + + private static readonly MethodInfo LegacyCompareMethod = typeof(StringDictionaryComparer).GetMethod( nameof(Compare), BindingFlags.Static | BindingFlags.NonPublic, [typeof(object), typeof(object), typeof(ValueComparer)])!; private static readonly MethodInfo GetHashCodeMethod = typeof(StringDictionaryComparer).GetMethod( + nameof(GetHashCode), BindingFlags.Static | BindingFlags.NonPublic, [typeof(IEnumerable), typeof(Func)])!; + + private static readonly MethodInfo LegacyGetHashCodeMethod = typeof(StringDictionaryComparer).GetMethod( nameof(GetHashCode), BindingFlags.Static | BindingFlags.NonPublic, [typeof(IEnumerable), typeof(ValueComparer)])!; private static readonly MethodInfo SnapshotMethod = typeof(StringDictionaryComparer).GetMethod( + nameof(Snapshot), BindingFlags.Static | BindingFlags.NonPublic, [typeof(object), typeof(Func)])!; + + private static readonly MethodInfo LegacySnapshotMethod = typeof(StringDictionaryComparer).GetMethod( nameof(Snapshot), BindingFlags.Static | BindingFlags.NonPublic, [typeof(object), typeof(ValueComparer)])!; /// @@ -52,14 +64,56 @@ ValueComparer IInfrastructure.Instance var prm1 = Expression.Parameter(typeof(object), "a"); var prm2 = Expression.Parameter(typeof(object), "b"); + if (UseOldBehavior35239) + { + // (a, b) => Compare(a, b, new Comparer(...)) + return Expression.Lambda>( + Expression.Call( + LegacyCompareMethod, + prm1, + prm2, +#pragma warning disable EF9100 + elementComparer.ConstructorExpression), +#pragma warning restore EF9100 + prm1, + prm2); + } + + // we check the compatibility between element type we expect on the Equals methods + // vs what we actually get from the element comparer + // if the expected is assignable from actual we can just do simple call... + if (typeof(TElement).IsAssignableFrom(elementComparer.Type)) + { + // (a, b) => Compare(a, b, elementComparer.Equals) + return Expression.Lambda>( + Expression.Call( + CompareMethod, + prm1, + prm2, + elementComparer.EqualsExpression), + prm1, + prm2); + } + + // ...otherwise we need to rewrite the actual lambda (as we can't change the expected signature) + // in that case we are rewriting the inner lambda parameters to TElement and cast to the element comparer + // type argument in the body, so that semantics of the element comparison func don't change + var newInnerPrm1 = Expression.Parameter(typeof(TElement), "a"); + var newInnerPrm2 = Expression.Parameter(typeof(TElement), "b"); + + var newEqualsExpressionBody = elementComparer.ExtractEqualsBody( + Expression.Convert(newInnerPrm1, elementComparer.Type), + Expression.Convert(newInnerPrm2, elementComparer.Type)); + return Expression.Lambda>( Expression.Call( CompareMethod, prm1, prm2, -#pragma warning disable EF9100 - elementComparer.ConstructorExpression), -#pragma warning restore EF9100 + Expression.Lambda( + newEqualsExpressionBody, + newInnerPrm1, + newInnerPrm2)), prm1, prm2); } @@ -68,15 +122,50 @@ private static Expression> GetHashCodeLambda(ValueComparer ele { var prm = Expression.Parameter(typeof(object), "o"); + if (UseOldBehavior35239) + { + // o => GetHashCode((IEnumerable)o, new Comparer(...)) + return Expression.Lambda>( + Expression.Call( + LegacyGetHashCodeMethod, + Expression.Convert( + prm, + typeof(IEnumerable)), +#pragma warning disable EF9100 + elementComparer.ConstructorExpression), +#pragma warning restore EF9100 + prm); + } + + if (typeof(TElement).IsAssignableFrom(elementComparer.Type)) + { + // o => GetHashCode((IEnumerable)o, elementComparer.GetHashCode) + return Expression.Lambda>( + Expression.Call( + GetHashCodeMethod, + Expression.Convert( + prm, + typeof(IEnumerable)), + elementComparer.HashCodeExpression), + prm); + } + + var newInnerPrm = Expression.Parameter(typeof(TElement), "o"); + + var newInnerBody = elementComparer.ExtractHashCodeBody( + Expression.Convert( + newInnerPrm, + elementComparer.Type)); + return Expression.Lambda>( Expression.Call( GetHashCodeMethod, Expression.Convert( prm, typeof(IEnumerable)), -#pragma warning disable EF9100 - elementComparer.ConstructorExpression), -#pragma warning restore EF9100 + Expression.Lambda( + newInnerBody, + newInnerPrm)), prm); } @@ -84,16 +173,93 @@ private static Expression> SnapshotLambda(ValueComparer ele { var prm = Expression.Parameter(typeof(object), "source"); + if (UseOldBehavior35239) + { + // source => Snapshot(source, new Comparer(..)) + return Expression.Lambda>( + Expression.Call( + LegacySnapshotMethod, + prm, +#pragma warning disable EF9100 + elementComparer.ConstructorExpression), +#pragma warning restore EF9100 + prm); + } + + // TElement is both argument and return type so the types need to be the same + if (typeof(TElement) == elementComparer.Type) + { + // source => Snapshot(source, elementComparer.Snapshot) + return Expression.Lambda>( + Expression.Call( + SnapshotMethod, + prm, + elementComparer.SnapshotExpression), + prm); + } + + var newInnerPrm = Expression.Parameter(typeof(TElement), "source"); + + var newInnerBody = elementComparer.ExtractSnapshotBody( + Expression.Convert( + newInnerPrm, + elementComparer.Type)); + + // note we need to also convert the result of inner lambda back to TElement return Expression.Lambda>( Expression.Call( SnapshotMethod, prm, -#pragma warning disable EF9100 - elementComparer.ConstructorExpression), -#pragma warning restore EF9100 + Expression.Lambda( + Expression.Convert( + newInnerBody, + typeof(TElement)), + newInnerPrm)), prm); } + private static bool Compare(object? a, object? b, Func elementCompare) + { + if (ReferenceEquals(a, b)) + { + return true; + } + + if (a is null) + { + return b is null; + } + + if (b is null) + { + return false; + } + + if (a is IReadOnlyDictionary aDictionary && b is IReadOnlyDictionary bDictionary) + { + if (aDictionary.Count != bDictionary.Count) + { + return false; + } + + foreach (var pair in aDictionary) + { + if (!bDictionary.TryGetValue(pair.Key, out var bValue) + || !elementCompare(pair.Value, bValue)) + { + return false; + } + } + + return true; + } + + throw new InvalidOperationException( + CosmosStrings.BadDictionaryType( + (a is IDictionary ? b : a).GetType().ShortDisplayName(), + typeof(IDictionary<,>).MakeGenericType(typeof(string), typeof(TElement)).ShortDisplayName())); + } + private static bool Compare(object? a, object? b, ValueComparer elementComparer) { if (ReferenceEquals(a, b)) @@ -136,6 +302,27 @@ private static bool Compare(object? a, object? b, ValueComparer elementComparer) typeof(IDictionary<,>).MakeGenericType(typeof(string), elementComparer.Type).ShortDisplayName())); } + private static int GetHashCode(IEnumerable source, Func elementGetHashCode) + { + if (source is not IReadOnlyDictionary sourceDictionary) + { + throw new InvalidOperationException( + CosmosStrings.BadDictionaryType( + source.GetType().ShortDisplayName(), + typeof(IList<>).MakeGenericType(typeof(TElement)).ShortDisplayName())); + } + + var hash = new HashCode(); + + foreach (var pair in sourceDictionary) + { + hash.Add(pair.Key); + hash.Add(pair.Value == null ? 0 : elementGetHashCode(pair.Value)); + } + + return hash.ToHashCode(); + } + private static int GetHashCode(IEnumerable source, ValueComparer elementComparer) { if (source is not IReadOnlyDictionary sourceDictionary) @@ -157,6 +344,25 @@ private static int GetHashCode(IEnumerable source, ValueComparer elementComparer return hash.ToHashCode(); } + private static IReadOnlyDictionary Snapshot(object source, Func elementSnapshot) + { + if (source is not IReadOnlyDictionary sourceDictionary) + { + throw new InvalidOperationException( + CosmosStrings.BadDictionaryType( + source.GetType().ShortDisplayName(), + typeof(IDictionary<,>).MakeGenericType(typeof(string), typeof(TElement)).ShortDisplayName())); + } + + var snapshot = new Dictionary(); + foreach (var pair in sourceDictionary) + { + snapshot[pair.Key] = pair.Value == null ? default : (TElement?)elementSnapshot(pair.Value); + } + + return snapshot; + } + private static IReadOnlyDictionary Snapshot(object source, ValueComparer elementComparer) { if (source is not IReadOnlyDictionary sourceDictionary) diff --git a/src/EFCore/ChangeTracking/ListOfNullableValueTypesComparer.cs b/src/EFCore/ChangeTracking/ListOfNullableValueTypesComparer.cs index d95a40877db..a8c08979f18 100644 --- a/src/EFCore/ChangeTracking/ListOfNullableValueTypesComparer.cs +++ b/src/EFCore/ChangeTracking/ListOfNullableValueTypesComparer.cs @@ -25,6 +25,9 @@ public sealed class ListOfNullableValueTypesComparer : IInfrastructure where TElement : struct { + private static readonly bool UseOldBehavior35239 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35239", out var enabled35239) && enabled35239; + private static readonly bool IsArray = typeof(TConcreteList).IsArray; private static readonly bool IsReadOnly = IsArray @@ -32,14 +35,26 @@ public sealed class ListOfNullableValueTypesComparer : && typeof(TConcreteList).GetGenericTypeDefinition() == typeof(ReadOnlyCollection<>)); private static readonly MethodInfo CompareMethod = typeof(ListOfNullableValueTypesComparer).GetMethod( + nameof(Compare), BindingFlags.Static | BindingFlags.NonPublic, + [typeof(IEnumerable), typeof(IEnumerable), typeof(Func)])!; + + private static readonly MethodInfo LegacyCompareMethod = typeof(ListOfNullableValueTypesComparer).GetMethod( nameof(Compare), BindingFlags.Static | BindingFlags.NonPublic, [typeof(IEnumerable), typeof(IEnumerable), typeof(ValueComparer)])!; private static readonly MethodInfo GetHashCodeMethod = typeof(ListOfNullableValueTypesComparer).GetMethod( + nameof(GetHashCode), BindingFlags.Static | BindingFlags.NonPublic, + [typeof(IEnumerable), typeof(Func)])!; + + private static readonly MethodInfo LegacyGetHashCodeMethod = typeof(ListOfNullableValueTypesComparer).GetMethod( nameof(GetHashCode), BindingFlags.Static | BindingFlags.NonPublic, [typeof(IEnumerable), typeof(ValueComparer)])!; private static readonly MethodInfo SnapshotMethod = typeof(ListOfNullableValueTypesComparer).GetMethod( + nameof(Snapshot), BindingFlags.Static | BindingFlags.NonPublic, + [typeof(IEnumerable), typeof(Func)])!; + + private static readonly MethodInfo LegacySnapshotMethod = typeof(ListOfNullableValueTypesComparer).GetMethod( nameof(Snapshot), BindingFlags.Static | BindingFlags.NonPublic, [typeof(IEnumerable), typeof(ValueComparer)])!; @@ -67,10 +82,23 @@ ValueComparer IInfrastructure.Instance var prm1 = Expression.Parameter(typeof(IEnumerable), "a"); var prm2 = Expression.Parameter(typeof(IEnumerable), "b"); + if (elementComparer is ValueComparer && !UseOldBehavior35239) + { + //(a, b) => Compare(a, b, elementComparer.Equals) + return Expression.Lambda?, IEnumerable?, bool>>( + Expression.Call( + CompareMethod, + prm1, + prm2, + elementComparer.EqualsExpression), + prm1, + prm2); + } + //(a, b) => Compare(a, b, (ValueComparer)elementComparer) return Expression.Lambda?, IEnumerable?, bool>>( Expression.Call( - CompareMethod, + LegacyCompareMethod, prm1, prm2, Expression.Convert( @@ -84,10 +112,21 @@ ValueComparer IInfrastructure.Instance { var prm = Expression.Parameter(typeof(IEnumerable), "o"); + if (elementComparer is ValueComparer && !UseOldBehavior35239) + { + //o => GetHashCode(o, elementComparer.GetHashCode) + return Expression.Lambda, int>>( + Expression.Call( + GetHashCodeMethod, + prm, + elementComparer.HashCodeExpression), + prm); + } + //o => GetHashCode(o, (ValueComparer)elementComparer) return Expression.Lambda, int>>( Expression.Call( - GetHashCodeMethod, + LegacyGetHashCodeMethod, prm, Expression.Convert( elementComparer.ConstructorExpression, @@ -98,11 +137,21 @@ ValueComparer IInfrastructure.Instance private static Expression, IEnumerable>> SnapshotLambda(ValueComparer elementComparer) { var prm = Expression.Parameter(typeof(IEnumerable), "source"); + if (elementComparer is ValueComparer && !UseOldBehavior35239) + { + //source => Snapshot(source, elementComparer.Snapshot) + return Expression.Lambda, IEnumerable>>( + Expression.Call( + SnapshotMethod, + prm, + elementComparer.SnapshotExpression), + prm); + } //source => Snapshot(source, (ValueComparer)elementComparer) return Expression.Lambda, IEnumerable>>( Expression.Call( - SnapshotMethod, + LegacySnapshotMethod, prm, Expression.Convert( elementComparer.ConstructorExpression, @@ -110,6 +159,63 @@ ValueComparer IInfrastructure.Instance prm); } + private static bool Compare(IEnumerable? a, IEnumerable? b, Func elementCompare) + { + if (ReferenceEquals(a, b)) + { + return true; + } + + if (a is null) + { + return b is null; + } + + if (b is null) + { + return false; + } + + if (a is IList aList && b is IList bList) + { + if (aList.Count != bList.Count) + { + return false; + } + + for (var i = 0; i < aList.Count; i++) + { + var (el1, el2) = (aList[i], bList[i]); + if (el1 is null) + { + if (el2 is null) + { + continue; + } + + return false; + } + + if (el2 is null) + { + return false; + } + + if (!elementCompare(el1, el2)) + { + return false; + } + } + + return true; + } + + throw new InvalidOperationException( + CoreStrings.BadListType( + (a is IList ? b : a).GetType().ShortDisplayName(), + typeof(IList<>).MakeGenericType(typeof(TElement).MakeNullable()).ShortDisplayName())); + } + private static bool Compare(IEnumerable? a, IEnumerable? b, ValueComparer elementComparer) { if (ReferenceEquals(a, b)) @@ -167,6 +273,18 @@ private static bool Compare(IEnumerable? a, IEnumerable? b typeof(IList<>).MakeGenericType(elementComparer.Type.MakeNullable()).ShortDisplayName())); } + private static int GetHashCode(IEnumerable source, Func elementGetHashCode) + { + var hash = new HashCode(); + + foreach (var el in source) + { + hash.Add(el == null ? 0 : elementGetHashCode(el)); + } + + return hash.ToHashCode(); + } + private static int GetHashCode(IEnumerable source, ValueComparer elementComparer) { var hash = new HashCode(); @@ -179,6 +297,41 @@ private static int GetHashCode(IEnumerable source, ValueComparer Snapshot(IEnumerable source, Func elementSnapshot) + { + if (source is not IList sourceList) + { + throw new InvalidOperationException( + CoreStrings.BadListType( + source.GetType().ShortDisplayName(), + typeof(IList<>).MakeGenericType(typeof(TElement).MakeNullable()).ShortDisplayName())); + } + + if (IsArray) + { + var snapshot = new TElement?[sourceList.Count]; + for (var i = 0; i < sourceList.Count; i++) + { + var instance = sourceList[i]; + snapshot[i] = instance == null ? null : elementSnapshot(instance); + } + + return snapshot; + } + else + { + var snapshot = IsReadOnly ? new List() : (IList)Activator.CreateInstance()!; + foreach (var e in sourceList) + { + snapshot.Add(e == null ? null : elementSnapshot(e)); + } + + return IsReadOnly + ? (IList)Activator.CreateInstance(typeof(TConcreteList), snapshot)! + : snapshot; + } + } + private static IList Snapshot(IEnumerable source, ValueComparer elementComparer) { if (source is not IList sourceList) diff --git a/src/EFCore/ChangeTracking/ListOfReferenceTypesComparer.cs b/src/EFCore/ChangeTracking/ListOfReferenceTypesComparer.cs index e0e77528d87..f24a6f95aa2 100644 --- a/src/EFCore/ChangeTracking/ListOfReferenceTypesComparer.cs +++ b/src/EFCore/ChangeTracking/ListOfReferenceTypesComparer.cs @@ -23,6 +23,9 @@ namespace Microsoft.EntityFrameworkCore.ChangeTracking; public sealed class ListOfReferenceTypesComparer : ValueComparer, IInfrastructure where TElement : class { + private static readonly bool UseOldBehavior35239 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35239", out var enabled35239) && enabled35239; + private static readonly bool IsArray = typeof(TConcreteList).IsArray; private static readonly bool IsReadOnly = IsArray @@ -30,12 +33,21 @@ public sealed class ListOfReferenceTypesComparer : Valu && typeof(TConcreteList).GetGenericTypeDefinition() == typeof(ReadOnlyCollection<>)); private static readonly MethodInfo CompareMethod = typeof(ListOfReferenceTypesComparer).GetMethod( + nameof(Compare), BindingFlags.Static | BindingFlags.NonPublic, [typeof(object), typeof(object), typeof(Func)])!; + + private static readonly MethodInfo LegacyCompareMethod = typeof(ListOfReferenceTypesComparer).GetMethod( nameof(Compare), BindingFlags.Static | BindingFlags.NonPublic, [typeof(object), typeof(object), typeof(ValueComparer)])!; private static readonly MethodInfo GetHashCodeMethod = typeof(ListOfReferenceTypesComparer).GetMethod( + nameof(GetHashCode), BindingFlags.Static | BindingFlags.NonPublic, [typeof(IEnumerable), typeof(Func)])!; + + private static readonly MethodInfo LegacyGetHashCodeMethod = typeof(ListOfReferenceTypesComparer).GetMethod( nameof(GetHashCode), BindingFlags.Static | BindingFlags.NonPublic, [typeof(IEnumerable), typeof(ValueComparer)])!; private static readonly MethodInfo SnapshotMethod = typeof(ListOfReferenceTypesComparer).GetMethod( + nameof(Snapshot), BindingFlags.Static | BindingFlags.NonPublic, [typeof(object), typeof(Func)])!; + + private static readonly MethodInfo LegacySnapshotMethod = typeof(ListOfReferenceTypesComparer).GetMethod( nameof(Snapshot), BindingFlags.Static | BindingFlags.NonPublic, [typeof(object), typeof(ValueComparer)])!; /// @@ -62,10 +74,23 @@ ValueComparer IInfrastructure.Instance var prm1 = Expression.Parameter(typeof(object), "a"); var prm2 = Expression.Parameter(typeof(object), "b"); - // (a, b) => Compare(a, b, elementComparer) + if (elementComparer is ValueComparer && !UseOldBehavior35239) + { + // (a, b) => Compare(a, b, elementComparer.Equals, elementComparer.Type) + return Expression.Lambda>( + Expression.Call( + CompareMethod, + prm1, + prm2, + elementComparer.EqualsExpression), + prm1, + prm2); + } + + // (a, b) => Compare(a, b, new Comparer(...)) return Expression.Lambda>( Expression.Call( - CompareMethod, + LegacyCompareMethod, prm1, prm2, elementComparer.ConstructorExpression), @@ -77,10 +102,23 @@ private static Expression> GetHashCodeLambda(ValueComparer ele { var prm = Expression.Parameter(typeof(object), "o"); - //o => GetHashCode((IEnumerable)o, elementComparer) + if (elementComparer is ValueComparer && !UseOldBehavior35239) + { + // o => GetHashCode((IEnumerable)o, elementComparer.GetHashCode) + return Expression.Lambda>( + Expression.Call( + GetHashCodeMethod, + Expression.Convert( + prm, + typeof(IEnumerable)), + elementComparer.HashCodeExpression), + prm); + } + + // o => GetHashCode((IEnumerable)o, new Comparer(...)) return Expression.Lambda>( Expression.Call( - GetHashCodeMethod, + LegacyGetHashCodeMethod, Expression.Convert( prm, typeof(IEnumerable)), @@ -92,15 +130,83 @@ private static Expression> SnapshotLambda(ValueComparer ele { var prm = Expression.Parameter(typeof(object), "source"); - //source => Snapshot(source, elementComparer) + if (elementComparer is ValueComparer && !UseOldBehavior35239) + { + // source => Snapshot(source, elementComparer.Snapshot, elementComparer.Type) + return Expression.Lambda>( + Expression.Call( + SnapshotMethod, + prm, + elementComparer.SnapshotExpression), + prm); + } + + // source => Snapshot(source, new Comparer(..)) return Expression.Lambda>( Expression.Call( - SnapshotMethod, + LegacySnapshotMethod, prm, elementComparer.ConstructorExpression), prm); } + private static bool Compare(object? a, object? b, Func elementCompare) + { + if (ReferenceEquals(a, b)) + { + return true; + } + + if (a is null) + { + return b is null; + } + + if (b is null) + { + return false; + } + + if (a is IList aList && b is IList bList) + { + if (aList.Count != bList.Count) + { + return false; + } + + for (var i = 0; i < aList.Count; i++) + { + var (el1, el2) = (aList[i], bList[i]); + if (el1 is null) + { + if (el2 is null) + { + continue; + } + + return false; + } + + if (el2 is null) + { + return false; + } + + if (!elementCompare(el1, el2)) + { + return false; + } + } + + return true; + } + + throw new InvalidOperationException( + CoreStrings.BadListType( + (a is IList ? b : a).GetType().ShortDisplayName(), + typeof(IList<>).MakeGenericType(typeof(TElement)).ShortDisplayName())); + } + private static bool Compare(object? a, object? b, ValueComparer elementComparer) { if (ReferenceEquals(a, b)) @@ -158,6 +264,18 @@ private static bool Compare(object? a, object? b, ValueComparer elementComparer) typeof(IList<>).MakeGenericType(elementComparer.Type).ShortDisplayName())); } + private static int GetHashCode(IEnumerable source, Func elementGetHashCode) + { + var hash = new HashCode(); + + foreach (var el in source) + { + hash.Add(el == null ? 0 : elementGetHashCode((TElement)el)); + } + + return hash.ToHashCode(); + } + private static int GetHashCode(IEnumerable source, ValueComparer elementComparer) { var hash = new HashCode(); @@ -170,6 +288,41 @@ private static int GetHashCode(IEnumerable source, ValueComparer elementComparer return hash.ToHashCode(); } + private static IList Snapshot(object source, Func elementSnapshot) + { + if (source is not IList sourceList) + { + throw new InvalidOperationException( + CoreStrings.BadListType( + source.GetType().ShortDisplayName(), + typeof(IList<>).MakeGenericType(typeof(TElement)).ShortDisplayName())); + } + + if (IsArray) + { + var snapshot = new TElement?[sourceList.Count]; + for (var i = 0; i < sourceList.Count; i++) + { + var instance = sourceList[i]; + snapshot[i] = instance == null ? null : elementSnapshot(instance); + } + + return snapshot; + } + else + { + var snapshot = IsReadOnly ? new List() : (IList)Activator.CreateInstance()!; + foreach (var e in sourceList) + { + snapshot.Add(e == null ? null : elementSnapshot(e)); + } + + return IsReadOnly + ? (IList)Activator.CreateInstance(typeof(TConcreteList), snapshot)! + : snapshot; + } + } + private static IList Snapshot(object source, ValueComparer elementComparer) { if (source is not IList sourceList) diff --git a/src/EFCore/ChangeTracking/ListOfValueTypesComparer.cs b/src/EFCore/ChangeTracking/ListOfValueTypesComparer.cs index 19a3a8d4a2f..d0ae607c6b1 100644 --- a/src/EFCore/ChangeTracking/ListOfValueTypesComparer.cs +++ b/src/EFCore/ChangeTracking/ListOfValueTypesComparer.cs @@ -23,6 +23,9 @@ namespace Microsoft.EntityFrameworkCore.ChangeTracking; public sealed class ListOfValueTypesComparer : ValueComparer>, IInfrastructure where TElement : struct { + private static readonly bool UseOldBehavior35239 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35239", out var enabled35239) && enabled35239; + private static readonly bool IsArray = typeof(TConcreteList).IsArray; private static readonly bool IsReadOnly = IsArray @@ -30,14 +33,25 @@ public sealed class ListOfValueTypesComparer : ValueCom && typeof(TConcreteList).GetGenericTypeDefinition() == typeof(ReadOnlyCollection<>)); private static readonly MethodInfo CompareMethod = typeof(ListOfValueTypesComparer).GetMethod( + nameof(Compare), BindingFlags.Static | BindingFlags.NonPublic, + [typeof(IEnumerable), typeof(IEnumerable), typeof(Func)])!; + + private static readonly MethodInfo LegacyCompareMethod = typeof(ListOfValueTypesComparer).GetMethod( nameof(Compare), BindingFlags.Static | BindingFlags.NonPublic, [typeof(IEnumerable), typeof(IEnumerable), typeof(ValueComparer)])!; private static readonly MethodInfo GetHashCodeMethod = typeof(ListOfValueTypesComparer).GetMethod( + nameof(GetHashCode), BindingFlags.Static | BindingFlags.NonPublic, + [typeof(IEnumerable), typeof(Func)])!; + + private static readonly MethodInfo LegacyGetHashCodeMethod = typeof(ListOfValueTypesComparer).GetMethod( nameof(GetHashCode), BindingFlags.Static | BindingFlags.NonPublic, [typeof(IEnumerable), typeof(ValueComparer)])!; private static readonly MethodInfo SnapshotMethod = typeof(ListOfValueTypesComparer).GetMethod( + nameof(Snapshot), BindingFlags.Static | BindingFlags.NonPublic, [typeof(IEnumerable), typeof(Func)])!; + + private static readonly MethodInfo LegacySnapshotMethod = typeof(ListOfValueTypesComparer).GetMethod( nameof(Snapshot), BindingFlags.Static | BindingFlags.NonPublic, [typeof(IEnumerable), typeof(ValueComparer)])!; /// @@ -64,10 +78,23 @@ ValueComparer IInfrastructure.Instance var prm1 = Expression.Parameter(typeof(IEnumerable), "a"); var prm2 = Expression.Parameter(typeof(IEnumerable), "b"); + if (elementComparer is ValueComparer && !UseOldBehavior35239) + { + //(a, b) => Compare(a, b, elementComparer.Equals) + return Expression.Lambda?, IEnumerable?, bool>>( + Expression.Call( + CompareMethod, + prm1, + prm2, + elementComparer.EqualsExpression), + prm1, + prm2); + } + //(a, b) => Compare(a, b, (ValueComparer)elementComparer) return Expression.Lambda?, IEnumerable?, bool>>( Expression.Call( - CompareMethod, + LegacyCompareMethod, prm1, prm2, Expression.Convert( @@ -81,10 +108,21 @@ private static Expression, int>> GetHashCodeLambda(Va { var prm = Expression.Parameter(typeof(IEnumerable), "o"); + if (elementComparer is ValueComparer && !UseOldBehavior35239) + { + //o => GetHashCode(o, elementComparer.GetHashCode) + return Expression.Lambda, int>>( + Expression.Call( + GetHashCodeMethod, + prm, + elementComparer.HashCodeExpression), + prm); + } + //o => GetHashCode(o, (ValueComparer)elementComparer) return Expression.Lambda, int>>( Expression.Call( - GetHashCodeMethod, + LegacyGetHashCodeMethod, prm, Expression.Convert( elementComparer.ConstructorExpression, @@ -96,10 +134,21 @@ private static Expression, IEnumerable>> Sn { var prm = Expression.Parameter(typeof(IEnumerable), "source"); + if (elementComparer is ValueComparer && !UseOldBehavior35239) + { + //source => Snapshot(source, elementComparer.SnapShot) + return Expression.Lambda, IEnumerable>>( + Expression.Call( + SnapshotMethod, + prm, + elementComparer.SnapshotExpression), + prm); + } + //source => Snapshot(source, (ValueComparer)elementComparer) return Expression.Lambda, IEnumerable>>( Expression.Call( - SnapshotMethod, + LegacySnapshotMethod, prm, Expression.Convert( elementComparer.ConstructorExpression, @@ -107,6 +156,48 @@ private static Expression, IEnumerable>> Sn prm); } + private static bool Compare(IEnumerable? a, IEnumerable? b, Func elementCompare) + { + if (ReferenceEquals(a, b)) + { + return true; + } + + if (a is null) + { + return b is null; + } + + if (b is null) + { + return false; + } + + if (a is IList aList && b is IList bList) + { + if (aList.Count != bList.Count) + { + return false; + } + + for (var i = 0; i < aList.Count; i++) + { + var (el1, el2) = (aList[i], bList[i]); + if (!elementCompare(el1, el2)) + { + return false; + } + } + + return true; + } + + throw new InvalidOperationException( + CoreStrings.BadListType( + (a is IList ? b : a).GetType().ShortDisplayName(), + typeof(IList<>).MakeGenericType(typeof(TElement)).ShortDisplayName())); + } + private static bool Compare(IEnumerable? a, IEnumerable? b, ValueComparer elementComparer) { if (ReferenceEquals(a, b)) @@ -149,6 +240,18 @@ private static bool Compare(IEnumerable? a, IEnumerable? b, typeof(IList<>).MakeGenericType(elementComparer.Type).ShortDisplayName())); } + private static int GetHashCode(IEnumerable source, Func elementGetHashCode) + { + var hash = new HashCode(); + + foreach (var el in source) + { + hash.Add(elementGetHashCode(el)); + } + + return hash.ToHashCode(); + } + private static int GetHashCode(IEnumerable source, ValueComparer elementComparer) { var hash = new HashCode(); @@ -161,6 +264,41 @@ private static int GetHashCode(IEnumerable source, ValueComparer Snapshot(IEnumerable source, Func elementSnapshot) + { + if (source is not IList sourceList) + { + throw new InvalidOperationException( + CoreStrings.BadListType( + source.GetType().ShortDisplayName(), + typeof(IList<>).MakeGenericType(typeof(TElement).MakeNullable()).ShortDisplayName())); + } + + if (IsArray) + { + var snapshot = new TElement[sourceList.Count]; + for (var i = 0; i < sourceList.Count; i++) + { + var instance = sourceList[i]; + snapshot[i] = elementSnapshot(instance); + } + + return snapshot; + } + else + { + var snapshot = IsReadOnly ? new List() : (IList)Activator.CreateInstance()!; + foreach (var e in sourceList) + { + snapshot.Add(elementSnapshot(e)); + } + + return IsReadOnly + ? (IList)Activator.CreateInstance(typeof(TConcreteList), snapshot)! + : snapshot; + } + } + private static IList Snapshot(IEnumerable source, ValueComparer elementComparer) { if (source is not IList sourceList) From 892d924bac63f829dd6b97b1ddd7289d415778ca Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 16:31:50 +0000 Subject: [PATCH 07/79] Update dependencies from https://github.com/dotnet/arcade build 20241223.3 (#35415) [release/9.0] Update dependencies from dotnet/arcade --- eng/Version.Details.xml | 12 +++--- eng/Versions.props | 2 +- eng/common/cross/toolchain.cmake | 67 +++++++++++++++----------------- eng/common/tools.ps1 | 2 +- eng/common/tools.sh | 2 +- global.json | 4 +- 6 files changed, 42 insertions(+), 47 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2e2e7c71286..3d511d9df3a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - b41381d5cd633471265e9cd72e933a7048e03062 + e0e05154656254a735ebf19ffa5a37a8b915039b - + https://github.com/dotnet/arcade - b41381d5cd633471265e9cd72e933a7048e03062 + e0e05154656254a735ebf19ffa5a37a8b915039b - + https://github.com/dotnet/arcade - b41381d5cd633471265e9cd72e933a7048e03062 + e0e05154656254a735ebf19ffa5a37a8b915039b diff --git a/eng/Versions.props b/eng/Versions.props index e459c43bb36..3e4d0febabe 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.0 - 9.0.0-beta.24572.2 + 9.0.0-beta.24623.3 17.8.3 diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index 9a4e285a5ae..9a7ecfbd42c 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -40,7 +40,7 @@ if(TARGET_ARCH_NAME STREQUAL "arm") set(TOOLCHAIN "arm-linux-gnueabihf") endif() if(TIZEN) - set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf/9.2.0") + set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf") endif() elseif(TARGET_ARCH_NAME STREQUAL "arm64") set(CMAKE_SYSTEM_PROCESSOR aarch64) @@ -49,7 +49,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") elseif(LINUX) set(TOOLCHAIN "aarch64-linux-gnu") if(TIZEN) - set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0") + set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu") endif() elseif(FREEBSD) set(triple "aarch64-unknown-freebsd12") @@ -58,7 +58,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "armel") set(CMAKE_SYSTEM_PROCESSOR armv7l) set(TOOLCHAIN "arm-linux-gnueabi") if(TIZEN) - set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/9.2.0") + set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi") endif() elseif(TARGET_ARCH_NAME STREQUAL "armv6") set(CMAKE_SYSTEM_PROCESSOR armv6l) @@ -81,7 +81,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "riscv64") else() set(TOOLCHAIN "riscv64-linux-gnu") if(TIZEN) - set(TIZEN_TOOLCHAIN "riscv64-tizen-linux-gnu/13.1.0") + set(TIZEN_TOOLCHAIN "riscv64-tizen-linux-gnu") endif() endif() elseif(TARGET_ARCH_NAME STREQUAL "s390x") @@ -98,7 +98,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64") elseif(LINUX) set(TOOLCHAIN "x86_64-linux-gnu") if(TIZEN) - set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu/9.2.0") + set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu") endif() elseif(FREEBSD) set(triple "x86_64-unknown-freebsd12") @@ -115,7 +115,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86") set(TOOLCHAIN "i686-linux-gnu") endif() if(TIZEN) - set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0") + set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu") endif() else() message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only arm, arm64, armel, armv6, ppc64le, riscv64, s390x, x64 and x86 are supported!") @@ -127,30 +127,25 @@ endif() # Specify include paths if(TIZEN) - if(TARGET_ARCH_NAME STREQUAL "arm") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7hl-tizen-linux-gnueabihf) - endif() - if(TARGET_ARCH_NAME STREQUAL "armel") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi) - endif() - if(TARGET_ARCH_NAME STREQUAL "arm64") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/aarch64-tizen-linux-gnu) - endif() - if(TARGET_ARCH_NAME STREQUAL "x86") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/i586-tizen-linux-gnu) - endif() - if(TARGET_ARCH_NAME STREQUAL "x64") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/x86_64-tizen-linux-gnu) - endif() - if(TARGET_ARCH_NAME STREQUAL "riscv64") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/riscv64-tizen-linux-gnu) + function(find_toolchain_dir prefix) + # Dynamically find the version subdirectory + file(GLOB DIRECTORIES "${prefix}/*") + list(GET DIRECTORIES 0 FIRST_MATCH) + get_filename_component(TOOLCHAIN_VERSION ${FIRST_MATCH} NAME) + + set(TIZEN_TOOLCHAIN_PATH "${prefix}/${TOOLCHAIN_VERSION}" PARENT_SCOPE) + endfunction() + + if(TARGET_ARCH_NAME MATCHES "^(arm|armel|x86)$") + find_toolchain_dir("${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + else() + find_toolchain_dir("${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") endif() + + message(STATUS "TIZEN_TOOLCHAIN_PATH set to: ${TIZEN_TOOLCHAIN_PATH}") + + include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++) + include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++/${TIZEN_TOOLCHAIN}) endif() if(ANDROID) @@ -272,21 +267,21 @@ endif() if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$") if(TIZEN) - add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib") - add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}") endif() elseif(TARGET_ARCH_NAME MATCHES "^(arm64|x64|riscv64)$") if(TIZEN) - add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib64") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64") - add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/lib64") add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64") - add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-Wl,--rpath-link=${TIZEN_TOOLCHAIN_PATH}") endif() elseif(TARGET_ARCH_NAME STREQUAL "s390x") add_toolchain_linker_flag("--target=${TOOLCHAIN}") @@ -297,10 +292,10 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86") endif() add_toolchain_linker_flag(-m32) if(TIZEN) - add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib") - add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}") endif() elseif(ILLUMOS) add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib/amd64") diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index aa94fb17459..a46b6deb759 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -320,7 +320,7 @@ function InstallDotNet([string] $dotnetRoot, $variations += @($installParameters) $dotnetBuilds = $installParameters.Clone() - $dotnetbuilds.AzureFeed = "https://dotnetbuilds.azureedge.net/public" + $dotnetbuilds.AzureFeed = "https://ci.dot.net/public" $variations += @($dotnetBuilds) if ($runtimeSourceFeed) { diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 00473c9f918..1159726a10f 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -232,7 +232,7 @@ function InstallDotNet { local public_location=("${installParameters[@]}") variations+=(public_location) - local dotnetbuilds=("${installParameters[@]}" --azure-feed "https://dotnetbuilds.azureedge.net/public") + local dotnetbuilds=("${installParameters[@]}" --azure-feed "https://ci.dot.net/public") variations+=(dotnetbuilds) if [[ -n "${6:-}" ]]; then diff --git a/global.json b/global.json index 90650c26b0b..8ce92f09ed2 100644 --- a/global.json +++ b/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24572.2", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24572.2" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24623.3", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24623.3" } } From cc16006f6db3733056e746c5f3203735b66e8b59 Mon Sep 17 00:00:00 2001 From: Andriy Svyryd Date: Tue, 7 Jan 2025 10:22:21 -0800 Subject: [PATCH 08/79] Move NonNullableConventionState to CoreAnnotationNames (#35359) Co-authored-by: ajcvickers Fixes #34996 --- .../Conventions/NonNullableConventionBase.cs | 10 +- .../Metadata/Internal/CoreAnnotationNames.cs | 11 +- .../Baselines/BigModel/ManyTypesEntityType.cs | 1544 ++++++----- .../BigModel/ManyTypesUnsafeAccessors.cs | 12 + .../No_NativeAOT/ManyTypesEntityType.cs | 26 +- .../Scaffolding/CompiledModelCosmosTest.cs | 1 + .../No_NativeAOT/ManyTypesEntityType.cs | 32 +- .../Scaffolding/CompiledModelTestBase.cs | 30 + .../BigModel/DbContextModelBuilder.cs | 35 + .../BigModel/DependentDerivedEntityType.cs | 6 +- .../Baselines/BigModel/ManyTypesEntityType.cs | 2288 ++++++++++------- .../BigModel/ManyTypesUnsafeAccessors.cs | 15 + .../BigModel/OwnedType0EntityType.cs | 4 +- .../Baselines/BigModel/OwnedTypeEntityType.cs | 4 +- .../BigModel/PrincipalBaseEntityType.cs | 6 +- ...cipalDerivedDependentBasebyteEntityType.cs | 4 +- .../BigModel/PrincipalDerivedEntityType.cs | 6 +- .../DbContextModelBuilder.cs | 35 + .../DependentDerivedEntityType.cs | 6 +- .../ManyTypesEntityType.cs | 2288 ++++++++++------- .../ManyTypesUnsafeAccessors.cs | 15 + .../OwnedType0EntityType.cs | 4 +- .../OwnedTypeEntityType.cs | 4 +- .../PrincipalBaseEntityType.cs | 6 +- ...cipalDerivedDependentBasebyteEntityType.cs | 4 +- .../PrincipalDerivedEntityType.cs | 6 +- .../No_NativeAOT/ManyTypesEntityType.cs | 37 +- .../BigModel/DbContextModelBuilder.cs | 35 + .../BigModel/DependentDerivedEntityType.cs | 6 +- .../Baselines/BigModel/ManyTypesEntityType.cs | 2192 +++++++++------- .../BigModel/ManyTypesUnsafeAccessors.cs | 15 + .../BigModel/OwnedType0EntityType.cs | 4 +- .../Baselines/BigModel/OwnedTypeEntityType.cs | 4 +- .../BigModel/PrincipalBaseEntityType.cs | 6 +- ...cipalDerivedDependentBasebyteEntityType.cs | 4 +- .../BigModel/PrincipalDerivedEntityType.cs | 6 +- .../DbContextModelBuilder.cs | 35 + .../DependentDerivedEntityType.cs | 6 +- .../ManyTypesEntityType.cs | 2192 +++++++++------- .../ManyTypesUnsafeAccessors.cs | 15 + .../OwnedType0EntityType.cs | 4 +- .../OwnedTypeEntityType.cs | 4 +- .../PrincipalBaseEntityType.cs | 6 +- ...cipalDerivedDependentBasebyteEntityType.cs | 4 +- .../PrincipalDerivedEntityType.cs | 6 +- .../No_NativeAOT/ManyTypesEntityType.cs | 32 +- 46 files changed, 6463 insertions(+), 4552 deletions(-) diff --git a/src/EFCore/Metadata/Conventions/NonNullableConventionBase.cs b/src/EFCore/Metadata/Conventions/NonNullableConventionBase.cs index 78ddc34d8d9..b5ab87dc9a2 100644 --- a/src/EFCore/Metadata/Conventions/NonNullableConventionBase.cs +++ b/src/EFCore/Metadata/Conventions/NonNullableConventionBase.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Diagnostics.CodeAnalysis; +using Microsoft.EntityFrameworkCore.Metadata.Internal; namespace Microsoft.EntityFrameworkCore.Metadata.Conventions; @@ -14,8 +15,6 @@ namespace Microsoft.EntityFrameworkCore.Metadata.Conventions; /// public abstract class NonNullableConventionBase : IModelFinalizingConvention { - private const string StateAnnotationName = "NonNullableConventionState"; - /// /// Creates a new instance of . /// @@ -50,8 +49,8 @@ protected virtual bool TryGetNullabilityInfo( } var annotation = - modelBuilder.Metadata.FindAnnotation(StateAnnotationName) - ?? modelBuilder.Metadata.AddAnnotation(StateAnnotationName, new NullabilityInfoContext()); + modelBuilder.Metadata.FindAnnotation(CoreAnnotationNames.NonNullableConventionState) + ?? modelBuilder.Metadata.AddAnnotation(CoreAnnotationNames.NonNullableConventionState, new NullabilityInfoContext()); var nullabilityInfoContext = (NullabilityInfoContext)annotation.Value!; @@ -69,5 +68,6 @@ protected virtual bool TryGetNullabilityInfo( public virtual void ProcessModelFinalizing( IConventionModelBuilder modelBuilder, IConventionContext context) - => modelBuilder.Metadata.RemoveAnnotation(StateAnnotationName); + { + } } diff --git a/src/EFCore/Metadata/Internal/CoreAnnotationNames.cs b/src/EFCore/Metadata/Internal/CoreAnnotationNames.cs index 3db5be6b3f8..cb6e7a32c61 100644 --- a/src/EFCore/Metadata/Internal/CoreAnnotationNames.cs +++ b/src/EFCore/Metadata/Internal/CoreAnnotationNames.cs @@ -372,6 +372,14 @@ public static class CoreAnnotationNames /// public const string UnsafeAccessors = "UnsafeAccessors"; + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public const string NonNullableConventionState = "NonNullableConventionState"; + /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in @@ -426,6 +434,7 @@ public static class CoreAnnotationNames JsonValueReaderWriterType, ElementType, SkipNavigationBeingConfigured, - UnsafeAccessors + UnsafeAccessors, + NonNullableConventionState }; } diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs index 23192b1e6b6..7deabfede83 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs @@ -39,7 +39,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas baseEntityType, discriminatorProperty: "$type", discriminatorValue: "ManyTypes", - propertyCount: 166, + propertyCount: 170, keyCount: 1); var id = runtimeEntityType.AddProperty( @@ -304,6 +304,64 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(bool), jsonValueReaderWriter: JsonBoolReaderWriter.Instance))); + var boolReadOnlyCollection = runtimeEntityType.AddProperty( + "BoolReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_boolReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + boolReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance) == null); + boolReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) = ((List)(value))); + boolReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) = ((List)(value))); + boolReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(boolReadOnlyCollection, 5), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(boolReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[5]); + boolReadOnlyCollection.SetPropertyIndexes( + index: 5, + originalValueIndex: 5, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + boolReadOnlyCollection.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, bool>(new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v)), + keyComparer: new ValueComparer>( + bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), + int (IReadOnlyCollection v) => ((object)v).GetHashCode(), + IReadOnlyCollection (IReadOnlyCollection v) => v), + providerValueComparer: new ValueComparer>( + bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), + int (IReadOnlyCollection v) => ((object)v).GetHashCode(), + IReadOnlyCollection (IReadOnlyCollection v) => v), + clrType: typeof(IReadOnlyCollection), + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, bool>( + JsonBoolReaderWriter.Instance), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + keyComparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + providerValueComparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + clrType: typeof(bool), + jsonValueReaderWriter: JsonBoolReaderWriter.Instance)); + var boolToStringConverterProperty = runtimeEntityType.AddProperty( "BoolToStringConverterProperty", typeof(bool), @@ -321,12 +379,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToStringConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToStringConverterProperty, 5), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToStringConverterProperty, 6), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[5]); + object (ValueBuffer valueBuffer) => valueBuffer[6]); boolToStringConverterProperty.SetPropertyIndexes( - index: 5, - originalValueIndex: 5, + index: 6, + originalValueIndex: 6, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -370,12 +428,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToTwoValuesConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToTwoValuesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToTwoValuesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToTwoValuesConverterProperty, 6), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToTwoValuesConverterProperty, 7), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToTwoValuesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[6]); + object (ValueBuffer valueBuffer) => valueBuffer[7]); boolToTwoValuesConverterProperty.SetPropertyIndexes( - index: 6, - originalValueIndex: 6, + index: 7, + originalValueIndex: 7, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -420,12 +478,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToZeroOneConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToZeroOneConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToZeroOneConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToZeroOneConverterProperty, 7), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToZeroOneConverterProperty, 8), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToZeroOneConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[7]); + object (ValueBuffer valueBuffer) => valueBuffer[8]); boolToZeroOneConverterProperty.SetPropertyIndexes( - index: 7, - originalValueIndex: 7, + index: 8, + originalValueIndex: 8, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -469,12 +527,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytes.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Bytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Bytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytes, 8), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytes, 9), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(bytes), - object (ValueBuffer valueBuffer) => valueBuffer[8]); + object (ValueBuffer valueBuffer) => valueBuffer[9]); bytes.SetPropertyIndexes( - index: 8, - originalValueIndex: 8, + index: 9, + originalValueIndex: 9, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -519,12 +577,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytesToStringConverterProperty.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesToStringConverterProperty, 9), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesToStringConverterProperty, 10), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(bytesToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[9]); + object (ValueBuffer valueBuffer) => valueBuffer[10]); bytesToStringConverterProperty.SetPropertyIndexes( - index: 9, - originalValueIndex: 9, + index: 10, + originalValueIndex: 10, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -568,12 +626,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas castingConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CastingConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CastingConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(castingConverterProperty, 10), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(castingConverterProperty, 11), int (InternalEntityEntry entry) => entry.GetCurrentValue(castingConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[10]); + object (ValueBuffer valueBuffer) => valueBuffer[11]); castingConverterProperty.SetPropertyIndexes( - index: 10, - originalValueIndex: 10, + index: 11, + originalValueIndex: 11, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -618,12 +676,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @char.SetAccessors( char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Char(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Char(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char (InternalEntityEntry entry) => entry.ReadOriginalValue(@char, 11), + char (InternalEntityEntry entry) => entry.ReadOriginalValue(@char, 12), char (InternalEntityEntry entry) => entry.GetCurrentValue(@char), - object (ValueBuffer valueBuffer) => valueBuffer[11]); + object (ValueBuffer valueBuffer) => valueBuffer[12]); @char.SetPropertyIndexes( - index: 11, - originalValueIndex: 11, + index: 12, + originalValueIndex: 12, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -660,12 +718,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas charArray.SetAccessors( char[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char[] (InternalEntityEntry entry) => entry.ReadOriginalValue(charArray, 12), + char[] (InternalEntityEntry entry) => entry.ReadOriginalValue(charArray, 13), char[] (InternalEntityEntry entry) => entry.GetCurrentValue(charArray), - object (ValueBuffer valueBuffer) => valueBuffer[12]); + object (ValueBuffer valueBuffer) => valueBuffer[13]); charArray.SetPropertyIndexes( - index: 12, - originalValueIndex: 12, + index: 13, + originalValueIndex: 13, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -718,12 +776,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas charNestedCollection.SetAccessors( char[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharNestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharNestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(charNestedCollection, 13), + char[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(charNestedCollection, 14), char[][] (InternalEntityEntry entry) => entry.GetCurrentValue(charNestedCollection), - object (ValueBuffer valueBuffer) => valueBuffer[13]); + object (ValueBuffer valueBuffer) => valueBuffer[14]); charNestedCollection.SetPropertyIndexes( - index: 13, - originalValueIndex: 13, + index: 14, + originalValueIndex: 14, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -794,12 +852,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas charToStringConverterProperty.SetAccessors( char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char (InternalEntityEntry entry) => entry.ReadOriginalValue(charToStringConverterProperty, 14), + char (InternalEntityEntry entry) => entry.ReadOriginalValue(charToStringConverterProperty, 15), char (InternalEntityEntry entry) => entry.GetCurrentValue(charToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[14]); + object (ValueBuffer valueBuffer) => valueBuffer[15]); charToStringConverterProperty.SetPropertyIndexes( - index: 14, - originalValueIndex: 14, + index: 15, + originalValueIndex: 15, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -844,12 +902,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnly.SetAccessors( DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnly, 15), + DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnly, 16), DateOnly (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnly), - object (ValueBuffer valueBuffer) => valueBuffer[15]); + object (ValueBuffer valueBuffer) => valueBuffer[16]); dateOnly.SetPropertyIndexes( - index: 15, - originalValueIndex: 15, + index: 16, + originalValueIndex: 16, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -887,12 +945,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnlyToStringConverterProperty.SetAccessors( DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyToStringConverterProperty, 16), + DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyToStringConverterProperty, 17), DateOnly (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnlyToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[16]); + object (ValueBuffer valueBuffer) => valueBuffer[17]); dateOnlyToStringConverterProperty.SetPropertyIndexes( - index: 16, - originalValueIndex: 16, + index: 17, + originalValueIndex: 17, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -937,12 +995,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTime.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTime, 17), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTime, 18), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTime), - object (ValueBuffer valueBuffer) => valueBuffer[17]); + object (ValueBuffer valueBuffer) => valueBuffer[18]); dateTime.SetPropertyIndexes( - index: 17, - originalValueIndex: 17, + index: 18, + originalValueIndex: 18, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -980,12 +1038,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToBinaryConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBinaryConverterProperty, 18), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBinaryConverterProperty, 19), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[18]); + object (ValueBuffer valueBuffer) => valueBuffer[19]); dateTimeOffsetToBinaryConverterProperty.SetPropertyIndexes( - index: 18, - originalValueIndex: 18, + index: 19, + originalValueIndex: 19, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1030,12 +1088,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToBytesConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBytesConverterProperty, 19), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBytesConverterProperty, 20), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[19]); + object (ValueBuffer valueBuffer) => valueBuffer[20]); dateTimeOffsetToBytesConverterProperty.SetPropertyIndexes( - index: 19, - originalValueIndex: 19, + index: 20, + originalValueIndex: 20, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1080,12 +1138,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToStringConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToStringConverterProperty, 20), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToStringConverterProperty, 21), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[20]); + object (ValueBuffer valueBuffer) => valueBuffer[21]); dateTimeOffsetToStringConverterProperty.SetPropertyIndexes( - index: 20, - originalValueIndex: 20, + index: 21, + originalValueIndex: 21, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1130,12 +1188,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToBinaryConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToBinaryConverterProperty, 21), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToBinaryConverterProperty, 22), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToBinaryConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[21]); + object (ValueBuffer valueBuffer) => valueBuffer[22]); dateTimeToBinaryConverterProperty.SetPropertyIndexes( - index: 21, - originalValueIndex: 21, + index: 22, + originalValueIndex: 22, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1180,12 +1238,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToStringConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToStringConverterProperty, 22), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToStringConverterProperty, 23), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[22]); + object (ValueBuffer valueBuffer) => valueBuffer[23]); dateTimeToStringConverterProperty.SetPropertyIndexes( - index: 22, - originalValueIndex: 22, + index: 23, + originalValueIndex: 23, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1230,12 +1288,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToTicksConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToTicksConverterProperty, 23), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToTicksConverterProperty, 24), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[23]); + object (ValueBuffer valueBuffer) => valueBuffer[24]); dateTimeToTicksConverterProperty.SetPropertyIndexes( - index: 23, - originalValueIndex: 23, + index: 24, + originalValueIndex: 24, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1273,12 +1331,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @decimal.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Decimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Decimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(@decimal, 24), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(@decimal, 25), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(@decimal), - object (ValueBuffer valueBuffer) => valueBuffer[24]); + object (ValueBuffer valueBuffer) => valueBuffer[25]); @decimal.SetPropertyIndexes( - index: 24, - originalValueIndex: 24, + index: 25, + originalValueIndex: 25, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1315,12 +1373,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalArray.SetAccessors( decimal[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal[] (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalArray, 25), + decimal[] (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalArray, 26), decimal[] (InternalEntityEntry entry) => entry.GetCurrentValue(decimalArray), - object (ValueBuffer valueBuffer) => valueBuffer[25]); + object (ValueBuffer valueBuffer) => valueBuffer[26]); decimalArray.SetPropertyIndexes( - index: 25, - originalValueIndex: 25, + index: 26, + originalValueIndex: 26, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1374,12 +1432,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalNumberToBytesConverterProperty.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToBytesConverterProperty, 26), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToBytesConverterProperty, 27), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(decimalNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[26]); + object (ValueBuffer valueBuffer) => valueBuffer[27]); decimalNumberToBytesConverterProperty.SetPropertyIndexes( - index: 26, - originalValueIndex: 26, + index: 27, + originalValueIndex: 27, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1424,12 +1482,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalNumberToStringConverterProperty.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToStringConverterProperty, 27), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToStringConverterProperty, 28), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(decimalNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[27]); + object (ValueBuffer valueBuffer) => valueBuffer[28]); decimalNumberToStringConverterProperty.SetPropertyIndexes( - index: 27, - originalValueIndex: 27, + index: 28, + originalValueIndex: 28, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1474,12 +1532,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @double.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Double(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Double(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(@double, 28), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(@double, 29), double (InternalEntityEntry entry) => entry.GetCurrentValue(@double), - object (ValueBuffer valueBuffer) => valueBuffer[28]); + object (ValueBuffer valueBuffer) => valueBuffer[29]); @double.SetPropertyIndexes( - index: 28, - originalValueIndex: 28, + index: 29, + originalValueIndex: 29, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1516,12 +1574,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleArray.SetAccessors( double[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double[] (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleArray, 29), + double[] (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleArray, 30), double[] (InternalEntityEntry entry) => entry.GetCurrentValue(doubleArray), - object (ValueBuffer valueBuffer) => valueBuffer[29]); + object (ValueBuffer valueBuffer) => valueBuffer[30]); doubleArray.SetPropertyIndexes( - index: 29, - originalValueIndex: 29, + index: 30, + originalValueIndex: 30, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1575,12 +1633,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleNumberToBytesConverterProperty.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToBytesConverterProperty, 30), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToBytesConverterProperty, 31), double (InternalEntityEntry entry) => entry.GetCurrentValue(doubleNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[30]); + object (ValueBuffer valueBuffer) => valueBuffer[31]); doubleNumberToBytesConverterProperty.SetPropertyIndexes( - index: 30, - originalValueIndex: 30, + index: 31, + originalValueIndex: 31, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1625,12 +1683,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleNumberToStringConverterProperty.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToStringConverterProperty, 31), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToStringConverterProperty, 32), double (InternalEntityEntry entry) => entry.GetCurrentValue(doubleNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[31]); + object (ValueBuffer valueBuffer) => valueBuffer[32]); doubleNumberToStringConverterProperty.SetPropertyIndexes( - index: 31, - originalValueIndex: 31, + index: 32, + originalValueIndex: 32, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1674,12 +1732,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16.SetAccessors( CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16, 32), + CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16, 33), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.GetCurrentValue(enum16), - object (ValueBuffer valueBuffer) => valueBuffer[32]); + object (ValueBuffer valueBuffer) => valueBuffer[33]); enum16.SetPropertyIndexes( - index: 32, - originalValueIndex: 32, + index: 33, + originalValueIndex: 33, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1724,12 +1782,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsString.SetAccessors( CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsString, 33), + CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsString, 34), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.GetCurrentValue(enum16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[33]); + object (ValueBuffer valueBuffer) => valueBuffer[34]); enum16AsString.SetPropertyIndexes( - index: 33, - originalValueIndex: 33, + index: 34, + originalValueIndex: 34, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1773,12 +1831,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32, 34), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32, 35), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enum32), - object (ValueBuffer valueBuffer) => valueBuffer[34]); + object (ValueBuffer valueBuffer) => valueBuffer[35]); enum32.SetPropertyIndexes( - index: 34, - originalValueIndex: 34, + index: 35, + originalValueIndex: 35, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1823,12 +1881,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsString.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsString, 35), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsString, 36), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enum32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[35]); + object (ValueBuffer valueBuffer) => valueBuffer[36]); enum32AsString.SetPropertyIndexes( - index: 35, - originalValueIndex: 35, + index: 36, + originalValueIndex: 36, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1872,12 +1930,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64.SetAccessors( CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64, 36), + CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64, 37), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.GetCurrentValue(enum64), - object (ValueBuffer valueBuffer) => valueBuffer[36]); + object (ValueBuffer valueBuffer) => valueBuffer[37]); enum64.SetPropertyIndexes( - index: 36, - originalValueIndex: 36, + index: 37, + originalValueIndex: 37, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1922,12 +1980,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsString.SetAccessors( CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsString, 37), + CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsString, 38), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.GetCurrentValue(enum64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[37]); + object (ValueBuffer valueBuffer) => valueBuffer[38]); enum64AsString.SetPropertyIndexes( - index: 37, - originalValueIndex: 37, + index: 38, + originalValueIndex: 38, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1971,12 +2029,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8.SetAccessors( CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8, 38), + CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8, 39), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.GetCurrentValue(enum8), - object (ValueBuffer valueBuffer) => valueBuffer[38]); + object (ValueBuffer valueBuffer) => valueBuffer[39]); enum8.SetPropertyIndexes( - index: 38, - originalValueIndex: 38, + index: 39, + originalValueIndex: 39, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2021,12 +2079,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsString.SetAccessors( CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsString, 39), + CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsString, 40), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.GetCurrentValue(enum8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[39]); + object (ValueBuffer valueBuffer) => valueBuffer[40]); enum8AsString.SetPropertyIndexes( - index: 39, - originalValueIndex: 39, + index: 40, + originalValueIndex: 40, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2071,12 +2129,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumToNumberConverterProperty.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToNumberConverterProperty, 40), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToNumberConverterProperty, 41), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumToNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[40]); + object (ValueBuffer valueBuffer) => valueBuffer[41]); enumToNumberConverterProperty.SetPropertyIndexes( - index: 40, - originalValueIndex: 40, + index: 41, + originalValueIndex: 41, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2121,12 +2179,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumToStringConverterProperty.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToStringConverterProperty, 41), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToStringConverterProperty, 42), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[41]); + object (ValueBuffer valueBuffer) => valueBuffer[42]); enumToStringConverterProperty.SetPropertyIndexes( - index: 41, - originalValueIndex: 41, + index: 42, + originalValueIndex: 42, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2170,12 +2228,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16.SetAccessors( CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16, 42), + CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16, 43), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16), - object (ValueBuffer valueBuffer) => valueBuffer[42]); + object (ValueBuffer valueBuffer) => valueBuffer[43]); enumU16.SetPropertyIndexes( - index: 42, - originalValueIndex: 42, + index: 43, + originalValueIndex: 43, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2220,12 +2278,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsString.SetAccessors( CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsString, 43), + CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsString, 44), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[43]); + object (ValueBuffer valueBuffer) => valueBuffer[44]); enumU16AsString.SetPropertyIndexes( - index: 43, - originalValueIndex: 43, + index: 44, + originalValueIndex: 44, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2269,12 +2327,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32.SetAccessors( CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32, 44), + CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32, 45), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32), - object (ValueBuffer valueBuffer) => valueBuffer[44]); + object (ValueBuffer valueBuffer) => valueBuffer[45]); enumU32.SetPropertyIndexes( - index: 44, - originalValueIndex: 44, + index: 45, + originalValueIndex: 45, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2319,12 +2377,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsString.SetAccessors( CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsString, 45), + CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsString, 46), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[45]); + object (ValueBuffer valueBuffer) => valueBuffer[46]); enumU32AsString.SetPropertyIndexes( - index: 45, - originalValueIndex: 45, + index: 46, + originalValueIndex: 46, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2368,12 +2426,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64.SetAccessors( CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64, 46), + CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64, 47), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64), - object (ValueBuffer valueBuffer) => valueBuffer[46]); + object (ValueBuffer valueBuffer) => valueBuffer[47]); enumU64.SetPropertyIndexes( - index: 46, - originalValueIndex: 46, + index: 47, + originalValueIndex: 47, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2418,12 +2476,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsString.SetAccessors( CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsString, 47), + CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsString, 48), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[47]); + object (ValueBuffer valueBuffer) => valueBuffer[48]); enumU64AsString.SetPropertyIndexes( - index: 47, - originalValueIndex: 47, + index: 48, + originalValueIndex: 48, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2467,12 +2525,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8.SetAccessors( CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8, 48), + CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8, 49), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8), - object (ValueBuffer valueBuffer) => valueBuffer[48]); + object (ValueBuffer valueBuffer) => valueBuffer[49]); enumU8.SetPropertyIndexes( - index: 48, - originalValueIndex: 48, + index: 49, + originalValueIndex: 49, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2517,12 +2575,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsString.SetAccessors( CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsString, 49), + CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsString, 50), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[49]); + object (ValueBuffer valueBuffer) => valueBuffer[50]); enumU8AsString.SetPropertyIndexes( - index: 49, - originalValueIndex: 49, + index: 50, + originalValueIndex: 50, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2567,12 +2625,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @float.SetAccessors( float (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Float(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Float(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float (InternalEntityEntry entry) => entry.ReadOriginalValue(@float, 50), + float (InternalEntityEntry entry) => entry.ReadOriginalValue(@float, 51), float (InternalEntityEntry entry) => entry.GetCurrentValue(@float), - object (ValueBuffer valueBuffer) => valueBuffer[50]); + object (ValueBuffer valueBuffer) => valueBuffer[51]); @float.SetPropertyIndexes( - index: 50, - originalValueIndex: 50, + index: 51, + originalValueIndex: 51, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2609,12 +2667,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas floatArray.SetAccessors( float[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.FloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.FloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float[] (InternalEntityEntry entry) => entry.ReadOriginalValue(floatArray, 51), + float[] (InternalEntityEntry entry) => entry.ReadOriginalValue(floatArray, 52), float[] (InternalEntityEntry entry) => entry.GetCurrentValue(floatArray), - object (ValueBuffer valueBuffer) => valueBuffer[51]); + object (ValueBuffer valueBuffer) => valueBuffer[52]); floatArray.SetPropertyIndexes( - index: 51, - originalValueIndex: 51, + index: 52, + originalValueIndex: 52, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2667,12 +2725,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guid.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Guid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Guid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guid, 52), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guid, 53), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guid), - object (ValueBuffer valueBuffer) => valueBuffer[52]); + object (ValueBuffer valueBuffer) => valueBuffer[53]); guid.SetPropertyIndexes( - index: 52, - originalValueIndex: 52, + index: 53, + originalValueIndex: 53, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2717,12 +2775,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidToBytesConverterProperty.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToBytesConverterProperty, 53), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToBytesConverterProperty, 54), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guidToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[53]); + object (ValueBuffer valueBuffer) => valueBuffer[54]); guidToBytesConverterProperty.SetPropertyIndexes( - index: 53, - originalValueIndex: 53, + index: 54, + originalValueIndex: 54, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2767,12 +2825,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidToStringConverterProperty.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToStringConverterProperty, 54), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToStringConverterProperty, 55), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guidToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[54]); + object (ValueBuffer valueBuffer) => valueBuffer[55]); guidToStringConverterProperty.SetPropertyIndexes( - index: 54, - originalValueIndex: 54, + index: 55, + originalValueIndex: 55, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2816,12 +2874,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddress.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddress, 55), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddress, 56), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddress), - object (ValueBuffer valueBuffer) => valueBuffer[55]); + object (ValueBuffer valueBuffer) => valueBuffer[56]); iPAddress.SetPropertyIndexes( - index: 55, - originalValueIndex: 55, + index: 56, + originalValueIndex: 56, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2865,12 +2923,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressToBytesConverterProperty.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToBytesConverterProperty, 56), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToBytesConverterProperty, 57), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[56]); + object (ValueBuffer valueBuffer) => valueBuffer[57]); iPAddressToBytesConverterProperty.SetPropertyIndexes( - index: 56, - originalValueIndex: 56, + index: 57, + originalValueIndex: 57, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2914,12 +2972,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressToStringConverterProperty.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToStringConverterProperty, 57), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToStringConverterProperty, 58), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[57]); + object (ValueBuffer valueBuffer) => valueBuffer[58]); iPAddressToStringConverterProperty.SetPropertyIndexes( - index: 57, - originalValueIndex: 57, + index: 58, + originalValueIndex: 58, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2963,12 +3021,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int16.SetAccessors( short (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short (InternalEntityEntry entry) => entry.ReadOriginalValue(int16, 58), + short (InternalEntityEntry entry) => entry.ReadOriginalValue(int16, 59), short (InternalEntityEntry entry) => entry.GetCurrentValue(int16), - object (ValueBuffer valueBuffer) => valueBuffer[58]); + object (ValueBuffer valueBuffer) => valueBuffer[59]); int16.SetPropertyIndexes( - index: 58, - originalValueIndex: 58, + index: 59, + originalValueIndex: 59, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3005,12 +3063,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int16Array.SetAccessors( short[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int16Array, 59), + short[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int16Array, 60), short[] (InternalEntityEntry entry) => entry.GetCurrentValue(int16Array), - object (ValueBuffer valueBuffer) => valueBuffer[59]); + object (ValueBuffer valueBuffer) => valueBuffer[60]); int16Array.SetPropertyIndexes( - index: 59, - originalValueIndex: 59, + index: 60, + originalValueIndex: 60, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3064,12 +3122,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int32.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(int32, 60), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(int32, 61), int (InternalEntityEntry entry) => entry.GetCurrentValue(int32), - object (ValueBuffer valueBuffer) => valueBuffer[60]); + object (ValueBuffer valueBuffer) => valueBuffer[61]); int32.SetPropertyIndexes( - index: 60, - originalValueIndex: 60, + index: 61, + originalValueIndex: 61, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3106,12 +3164,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int32Array.SetAccessors( int[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32Array, 61), + int[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32Array, 62), int[] (InternalEntityEntry entry) => entry.GetCurrentValue(int32Array), - object (ValueBuffer valueBuffer) => valueBuffer[61]); + object (ValueBuffer valueBuffer) => valueBuffer[62]); int32Array.SetPropertyIndexes( - index: 61, - originalValueIndex: 61, + index: 62, + originalValueIndex: 62, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3164,12 +3222,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int32NestedCollection.SetAccessors( int[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32NestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32NestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32NestedCollection, 62), + int[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32NestedCollection, 63), int[][] (InternalEntityEntry entry) => entry.GetCurrentValue(int32NestedCollection), - object (ValueBuffer valueBuffer) => valueBuffer[62]); + object (ValueBuffer valueBuffer) => valueBuffer[63]); int32NestedCollection.SetPropertyIndexes( - index: 62, - originalValueIndex: 62, + index: 63, + originalValueIndex: 63, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3222,6 +3280,64 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(int), jsonValueReaderWriter: JsonInt32ReaderWriter.Instance))); + var int32ReadOnlyCollection = runtimeEntityType.AddProperty( + "Int32ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_int32ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + int32ReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance) == null); + int32ReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) = ((List)(value))); + int32ReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) = ((List)(value))); + int32ReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(int32ReadOnlyCollection, 64), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(int32ReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[64]); + int32ReadOnlyCollection.SetPropertyIndexes( + index: 64, + originalValueIndex: 64, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + int32ReadOnlyCollection.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, int>(new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v)), + keyComparer: new ValueComparer>( + bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), + int (IReadOnlyCollection v) => ((object)v).GetHashCode(), + IReadOnlyCollection (IReadOnlyCollection v) => v), + providerValueComparer: new ValueComparer>( + bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), + int (IReadOnlyCollection v) => ((object)v).GetHashCode(), + IReadOnlyCollection (IReadOnlyCollection v) => v), + clrType: typeof(IReadOnlyCollection), + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, int>( + JsonInt32ReaderWriter.Instance), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + keyComparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + providerValueComparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + clrType: typeof(int), + jsonValueReaderWriter: JsonInt32ReaderWriter.Instance)); + var int64 = runtimeEntityType.AddProperty( "Int64", typeof(long), @@ -3240,12 +3356,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int64.SetAccessors( long (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long (InternalEntityEntry entry) => entry.ReadOriginalValue(int64, 63), + long (InternalEntityEntry entry) => entry.ReadOriginalValue(int64, 65), long (InternalEntityEntry entry) => entry.GetCurrentValue(int64), - object (ValueBuffer valueBuffer) => valueBuffer[63]); + object (ValueBuffer valueBuffer) => valueBuffer[65]); int64.SetPropertyIndexes( - index: 63, - originalValueIndex: 63, + index: 65, + originalValueIndex: 65, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3282,12 +3398,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int64Array.SetAccessors( long[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int64Array, 64), + long[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int64Array, 66), long[] (InternalEntityEntry entry) => entry.GetCurrentValue(int64Array), - object (ValueBuffer valueBuffer) => valueBuffer[64]); + object (ValueBuffer valueBuffer) => valueBuffer[66]); int64Array.SetPropertyIndexes( - index: 64, - originalValueIndex: 64, + index: 66, + originalValueIndex: 66, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3340,12 +3456,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int64NestedCollection.SetAccessors( IList[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64NestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IList[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64NestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IList[] (InternalEntityEntry entry) => entry.ReadOriginalValue[]>(int64NestedCollection, 65), + IList[] (InternalEntityEntry entry) => entry.ReadOriginalValue[]>(int64NestedCollection, 67), IList[] (InternalEntityEntry entry) => entry.GetCurrentValue[]>(int64NestedCollection), - object (ValueBuffer valueBuffer) => valueBuffer[65]); + object (ValueBuffer valueBuffer) => valueBuffer[67]); int64NestedCollection.SetPropertyIndexes( - index: 65, - originalValueIndex: 65, + index: 67, + originalValueIndex: 67, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3434,12 +3550,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int8.SetAccessors( sbyte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte (InternalEntityEntry entry) => entry.ReadOriginalValue(int8, 66), + sbyte (InternalEntityEntry entry) => entry.ReadOriginalValue(int8, 68), sbyte (InternalEntityEntry entry) => entry.GetCurrentValue(int8), - object (ValueBuffer valueBuffer) => valueBuffer[66]); + object (ValueBuffer valueBuffer) => valueBuffer[68]); int8.SetPropertyIndexes( - index: 66, - originalValueIndex: 66, + index: 68, + originalValueIndex: 68, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3476,12 +3592,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int8Array.SetAccessors( sbyte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8Array, 67), + sbyte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8Array, 69), sbyte[] (InternalEntityEntry entry) => entry.GetCurrentValue(int8Array), - object (ValueBuffer valueBuffer) => valueBuffer[67]); + object (ValueBuffer valueBuffer) => valueBuffer[69]); int8Array.SetPropertyIndexes( - index: 67, - originalValueIndex: 67, + index: 69, + originalValueIndex: 69, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3534,12 +3650,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int8NestedCollection.SetAccessors( sbyte[][][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8NestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte[][][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8NestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte[][][] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8NestedCollection, 68), + sbyte[][][] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8NestedCollection, 70), sbyte[][][] (InternalEntityEntry entry) => entry.GetCurrentValue(int8NestedCollection), - object (ValueBuffer valueBuffer) => valueBuffer[68]); + object (ValueBuffer valueBuffer) => valueBuffer[70]); int8NestedCollection.SetPropertyIndexes( - index: 68, - originalValueIndex: 68, + index: 70, + originalValueIndex: 70, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3628,12 +3744,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas intNumberToBytesConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToBytesConverterProperty, 69), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToBytesConverterProperty, 71), int (InternalEntityEntry entry) => entry.GetCurrentValue(intNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[69]); + object (ValueBuffer valueBuffer) => valueBuffer[71]); intNumberToBytesConverterProperty.SetPropertyIndexes( - index: 69, - originalValueIndex: 69, + index: 71, + originalValueIndex: 71, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3678,12 +3794,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas intNumberToStringConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToStringConverterProperty, 70), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToStringConverterProperty, 72), int (InternalEntityEntry entry) => entry.GetCurrentValue(intNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[70]); + object (ValueBuffer valueBuffer) => valueBuffer[72]); intNumberToStringConverterProperty.SetPropertyIndexes( - index: 70, - originalValueIndex: 70, + index: 72, + originalValueIndex: 72, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3729,12 +3845,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullIntToNullStringConverterProperty.SetAccessors( int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullIntToNullStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullIntToNullStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullIntToNullStringConverterProperty, 71), + int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullIntToNullStringConverterProperty, 73), int? (InternalEntityEntry entry) => entry.GetCurrentValue(nullIntToNullStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[71]); + object (ValueBuffer valueBuffer) => valueBuffer[73]); nullIntToNullStringConverterProperty.SetPropertyIndexes( - index: 71, - originalValueIndex: 71, + index: 73, + originalValueIndex: 73, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3780,12 +3896,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBool.SetAccessors( bool? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBool(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBool(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBool, 72), + bool? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBool, 74), bool? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBool), - object (ValueBuffer valueBuffer) => valueBuffer[72]); + object (ValueBuffer valueBuffer) => valueBuffer[74]); nullableBool.SetPropertyIndexes( - index: 72, - originalValueIndex: 72, + index: 74, + originalValueIndex: 74, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3824,12 +3940,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBoolArray.SetAccessors( bool? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBoolArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBoolArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBoolArray, 73), + bool? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBoolArray, 75), bool? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBoolArray), - object (ValueBuffer valueBuffer) => valueBuffer[73]); + object (ValueBuffer valueBuffer) => valueBuffer[75]); nullableBoolArray.SetPropertyIndexes( - index: 73, - originalValueIndex: 73, + index: 75, + originalValueIndex: 75, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3883,12 +3999,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBytes.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytes, 74), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytes, 76), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBytes), - object (ValueBuffer valueBuffer) => valueBuffer[74]); + object (ValueBuffer valueBuffer) => valueBuffer[76]); nullableBytes.SetPropertyIndexes( - index: 74, - originalValueIndex: 74, + index: 76, + originalValueIndex: 76, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3932,12 +4048,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableChar.SetAccessors( char? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableChar(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableChar(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableChar, 75), + char? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableChar, 77), char? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableChar), - object (ValueBuffer valueBuffer) => valueBuffer[75]); + object (ValueBuffer valueBuffer) => valueBuffer[77]); nullableChar.SetPropertyIndexes( - index: 75, - originalValueIndex: 75, + index: 77, + originalValueIndex: 77, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3976,12 +4092,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableCharArray.SetAccessors( char? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableCharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableCharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableCharArray, 76), + char? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableCharArray, 78), char? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableCharArray), - object (ValueBuffer valueBuffer) => valueBuffer[76]); + object (ValueBuffer valueBuffer) => valueBuffer[78]); nullableCharArray.SetPropertyIndexes( - index: 76, - originalValueIndex: 76, + index: 78, + originalValueIndex: 78, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4035,12 +4151,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateOnly.SetAccessors( DateOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnly, 77), + DateOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnly, 79), DateOnly? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateOnly), - object (ValueBuffer valueBuffer) => valueBuffer[77]); + object (ValueBuffer valueBuffer) => valueBuffer[79]); nullableDateOnly.SetPropertyIndexes( - index: 77, - originalValueIndex: 77, + index: 79, + originalValueIndex: 79, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4080,12 +4196,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateTime.SetAccessors( DateTime? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTime, 78), + DateTime? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTime, 80), DateTime? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateTime), - object (ValueBuffer valueBuffer) => valueBuffer[78]); + object (ValueBuffer valueBuffer) => valueBuffer[80]); nullableDateTime.SetPropertyIndexes( - index: 78, - originalValueIndex: 78, + index: 80, + originalValueIndex: 80, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4125,12 +4241,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDecimal.SetAccessors( decimal? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimal, 79), + decimal? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimal, 81), decimal? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDecimal), - object (ValueBuffer valueBuffer) => valueBuffer[79]); + object (ValueBuffer valueBuffer) => valueBuffer[81]); nullableDecimal.SetPropertyIndexes( - index: 79, - originalValueIndex: 79, + index: 81, + originalValueIndex: 81, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4169,12 +4285,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDecimalArray.SetAccessors( decimal? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimalArray, 80), + decimal? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimalArray, 82), decimal? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDecimalArray), - object (ValueBuffer valueBuffer) => valueBuffer[80]); + object (ValueBuffer valueBuffer) => valueBuffer[82]); nullableDecimalArray.SetPropertyIndexes( - index: 80, - originalValueIndex: 80, + index: 82, + originalValueIndex: 82, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4228,12 +4344,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDouble.SetAccessors( double? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDouble(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDouble(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDouble, 81), + double? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDouble, 83), double? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDouble), - object (ValueBuffer valueBuffer) => valueBuffer[81]); + object (ValueBuffer valueBuffer) => valueBuffer[83]); nullableDouble.SetPropertyIndexes( - index: 81, - originalValueIndex: 81, + index: 83, + originalValueIndex: 83, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4272,12 +4388,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDoubleArray.SetAccessors( double? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDoubleArray, 82), + double? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDoubleArray, 84), double? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDoubleArray), - object (ValueBuffer valueBuffer) => valueBuffer[82]); + object (ValueBuffer valueBuffer) => valueBuffer[84]); nullableDoubleArray.SetPropertyIndexes( - index: 82, - originalValueIndex: 82, + index: 84, + originalValueIndex: 84, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4331,12 +4447,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16.SetAccessors( CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16, 83), + CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16, 85), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16), - object (ValueBuffer valueBuffer) => valueBuffer[83]); + object (ValueBuffer valueBuffer) => valueBuffer[85]); nullableEnum16.SetPropertyIndexes( - index: 83, - originalValueIndex: 83, + index: 85, + originalValueIndex: 85, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4382,12 +4498,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsString.SetAccessors( CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsString, 84), + CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsString, 86), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[84]); + object (ValueBuffer valueBuffer) => valueBuffer[86]); nullableEnum16AsString.SetPropertyIndexes( - index: 84, - originalValueIndex: 84, + index: 86, + originalValueIndex: 86, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4433,12 +4549,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32.SetAccessors( CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32, 85), + CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32, 87), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32), - object (ValueBuffer valueBuffer) => valueBuffer[85]); + object (ValueBuffer valueBuffer) => valueBuffer[87]); nullableEnum32.SetPropertyIndexes( - index: 85, - originalValueIndex: 85, + index: 87, + originalValueIndex: 87, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4484,12 +4600,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsString.SetAccessors( CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsString, 86), + CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsString, 88), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[86]); + object (ValueBuffer valueBuffer) => valueBuffer[88]); nullableEnum32AsString.SetPropertyIndexes( - index: 86, - originalValueIndex: 86, + index: 88, + originalValueIndex: 88, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4535,12 +4651,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64.SetAccessors( CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64, 87), + CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64, 89), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64), - object (ValueBuffer valueBuffer) => valueBuffer[87]); + object (ValueBuffer valueBuffer) => valueBuffer[89]); nullableEnum64.SetPropertyIndexes( - index: 87, - originalValueIndex: 87, + index: 89, + originalValueIndex: 89, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4586,12 +4702,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsString.SetAccessors( CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsString, 88), + CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsString, 90), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[88]); + object (ValueBuffer valueBuffer) => valueBuffer[90]); nullableEnum64AsString.SetPropertyIndexes( - index: 88, - originalValueIndex: 88, + index: 90, + originalValueIndex: 90, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4637,12 +4753,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8.SetAccessors( CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8, 89), + CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8, 91), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8), - object (ValueBuffer valueBuffer) => valueBuffer[89]); + object (ValueBuffer valueBuffer) => valueBuffer[91]); nullableEnum8.SetPropertyIndexes( - index: 89, - originalValueIndex: 89, + index: 91, + originalValueIndex: 91, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4688,12 +4804,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsString.SetAccessors( CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsString, 90), + CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsString, 92), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[90]); + object (ValueBuffer valueBuffer) => valueBuffer[92]); nullableEnum8AsString.SetPropertyIndexes( - index: 90, - originalValueIndex: 90, + index: 92, + originalValueIndex: 92, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4739,12 +4855,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16.SetAccessors( CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16, 91), + CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16, 93), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16), - object (ValueBuffer valueBuffer) => valueBuffer[91]); + object (ValueBuffer valueBuffer) => valueBuffer[93]); nullableEnumU16.SetPropertyIndexes( - index: 91, - originalValueIndex: 91, + index: 93, + originalValueIndex: 93, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4790,12 +4906,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsString.SetAccessors( CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsString, 92), + CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsString, 94), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[92]); + object (ValueBuffer valueBuffer) => valueBuffer[94]); nullableEnumU16AsString.SetPropertyIndexes( - index: 92, - originalValueIndex: 92, + index: 94, + originalValueIndex: 94, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4841,12 +4957,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32.SetAccessors( CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32, 93), + CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32, 95), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32), - object (ValueBuffer valueBuffer) => valueBuffer[93]); + object (ValueBuffer valueBuffer) => valueBuffer[95]); nullableEnumU32.SetPropertyIndexes( - index: 93, - originalValueIndex: 93, + index: 95, + originalValueIndex: 95, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4892,12 +5008,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsString.SetAccessors( CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsString, 94), + CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsString, 96), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[94]); + object (ValueBuffer valueBuffer) => valueBuffer[96]); nullableEnumU32AsString.SetPropertyIndexes( - index: 94, - originalValueIndex: 94, + index: 96, + originalValueIndex: 96, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4943,12 +5059,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64.SetAccessors( CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64, 95), + CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64, 97), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64), - object (ValueBuffer valueBuffer) => valueBuffer[95]); + object (ValueBuffer valueBuffer) => valueBuffer[97]); nullableEnumU64.SetPropertyIndexes( - index: 95, - originalValueIndex: 95, + index: 97, + originalValueIndex: 97, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4994,12 +5110,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsString.SetAccessors( CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsString, 96), + CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsString, 98), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[96]); + object (ValueBuffer valueBuffer) => valueBuffer[98]); nullableEnumU64AsString.SetPropertyIndexes( - index: 96, - originalValueIndex: 96, + index: 98, + originalValueIndex: 98, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5045,12 +5161,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8.SetAccessors( CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8, 97), + CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8, 99), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8), - object (ValueBuffer valueBuffer) => valueBuffer[97]); + object (ValueBuffer valueBuffer) => valueBuffer[99]); nullableEnumU8.SetPropertyIndexes( - index: 97, - originalValueIndex: 97, + index: 99, + originalValueIndex: 99, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5096,12 +5212,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsString.SetAccessors( CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsString, 98), + CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsString, 100), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[98]); + object (ValueBuffer valueBuffer) => valueBuffer[100]); nullableEnumU8AsString.SetPropertyIndexes( - index: 98, - originalValueIndex: 98, + index: 100, + originalValueIndex: 100, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5147,12 +5263,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableFloat.SetAccessors( float? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloat(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloat(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloat, 99), + float? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloat, 101), float? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableFloat), - object (ValueBuffer valueBuffer) => valueBuffer[99]); + object (ValueBuffer valueBuffer) => valueBuffer[101]); nullableFloat.SetPropertyIndexes( - index: 99, - originalValueIndex: 99, + index: 101, + originalValueIndex: 101, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5191,12 +5307,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableFloatArray.SetAccessors( float? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloatArray, 100), + float? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloatArray, 102), float? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableFloatArray), - object (ValueBuffer valueBuffer) => valueBuffer[100]); + object (ValueBuffer valueBuffer) => valueBuffer[102]); nullableFloatArray.SetPropertyIndexes( - index: 100, - originalValueIndex: 100, + index: 102, + originalValueIndex: 102, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5250,12 +5366,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableGuid.SetAccessors( Guid? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuid, 101), + Guid? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuid, 103), Guid? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableGuid), - object (ValueBuffer valueBuffer) => valueBuffer[101]); + object (ValueBuffer valueBuffer) => valueBuffer[103]); nullableGuid.SetPropertyIndexes( - index: 101, - originalValueIndex: 101, + index: 103, + originalValueIndex: 103, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5301,12 +5417,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableIPAddress.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddress, 102), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddress, 104), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(nullableIPAddress), - object (ValueBuffer valueBuffer) => valueBuffer[102]); + object (ValueBuffer valueBuffer) => valueBuffer[104]); nullableIPAddress.SetPropertyIndexes( - index: 102, - originalValueIndex: 102, + index: 104, + originalValueIndex: 104, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5350,12 +5466,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt16.SetAccessors( short? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16, 103), + short? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16, 105), short? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt16), - object (ValueBuffer valueBuffer) => valueBuffer[103]); + object (ValueBuffer valueBuffer) => valueBuffer[105]); nullableInt16.SetPropertyIndexes( - index: 103, - originalValueIndex: 103, + index: 105, + originalValueIndex: 105, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5394,12 +5510,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt16Array.SetAccessors( short? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16Array, 104), + short? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16Array, 106), short? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[104]); + object (ValueBuffer valueBuffer) => valueBuffer[106]); nullableInt16Array.SetPropertyIndexes( - index: 104, - originalValueIndex: 104, + index: 106, + originalValueIndex: 106, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5453,12 +5569,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt32.SetAccessors( int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32, 105), + int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32, 107), int? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt32), - object (ValueBuffer valueBuffer) => valueBuffer[105]); + object (ValueBuffer valueBuffer) => valueBuffer[107]); nullableInt32.SetPropertyIndexes( - index: 105, - originalValueIndex: 105, + index: 107, + originalValueIndex: 107, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5497,12 +5613,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt32Array.SetAccessors( int? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32Array, 106), + int? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32Array, 108), int? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[106]); + object (ValueBuffer valueBuffer) => valueBuffer[108]); nullableInt32Array.SetPropertyIndexes( - index: 106, - originalValueIndex: 106, + index: 108, + originalValueIndex: 108, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5555,12 +5671,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt32NestedCollection.SetAccessors( int? [][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32NestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? [][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32NestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? [][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32NestedCollection, 107), + int? [][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32NestedCollection, 109), int? [][] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt32NestedCollection), - object (ValueBuffer valueBuffer) => valueBuffer[107]); + object (ValueBuffer valueBuffer) => valueBuffer[109]); nullableInt32NestedCollection.SetPropertyIndexes( - index: 107, - originalValueIndex: 107, + index: 109, + originalValueIndex: 109, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5631,12 +5747,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt64.SetAccessors( long? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64, 108), + long? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64, 110), long? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt64), - object (ValueBuffer valueBuffer) => valueBuffer[108]); + object (ValueBuffer valueBuffer) => valueBuffer[110]); nullableInt64.SetPropertyIndexes( - index: 108, - originalValueIndex: 108, + index: 110, + originalValueIndex: 110, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5675,12 +5791,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt64Array.SetAccessors( long? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64Array, 109), + long? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64Array, 111), long? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[109]); + object (ValueBuffer valueBuffer) => valueBuffer[111]); nullableInt64Array.SetPropertyIndexes( - index: 109, - originalValueIndex: 109, + index: 111, + originalValueIndex: 111, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5733,12 +5849,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt64NestedCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64NestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64NestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableInt64NestedCollection, 110), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableInt64NestedCollection, 112), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableInt64NestedCollection), - object (ValueBuffer valueBuffer) => valueBuffer[110]); + object (ValueBuffer valueBuffer) => valueBuffer[112]); nullableInt64NestedCollection.SetPropertyIndexes( - index: 110, - originalValueIndex: 110, + index: 112, + originalValueIndex: 112, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5827,12 +5943,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt8.SetAccessors( sbyte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8, 111), + sbyte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8, 113), sbyte? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt8), - object (ValueBuffer valueBuffer) => valueBuffer[111]); + object (ValueBuffer valueBuffer) => valueBuffer[113]); nullableInt8.SetPropertyIndexes( - index: 111, - originalValueIndex: 111, + index: 113, + originalValueIndex: 113, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5871,12 +5987,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt8Array.SetAccessors( sbyte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8Array, 112), + sbyte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8Array, 114), sbyte? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[112]); + object (ValueBuffer valueBuffer) => valueBuffer[114]); nullableInt8Array.SetPropertyIndexes( - index: 112, - originalValueIndex: 112, + index: 114, + originalValueIndex: 114, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5930,12 +6046,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullablePhysicalAddress.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddress, 113), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddress, 115), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(nullablePhysicalAddress), - object (ValueBuffer valueBuffer) => valueBuffer[113]); + object (ValueBuffer valueBuffer) => valueBuffer[115]); nullablePhysicalAddress.SetPropertyIndexes( - index: 113, - originalValueIndex: 113, + index: 115, + originalValueIndex: 115, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5979,12 +6095,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableString.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableString, 114), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableString, 116), string (InternalEntityEntry entry) => entry.GetCurrentValue(nullableString), - object (ValueBuffer valueBuffer) => valueBuffer[114]); + object (ValueBuffer valueBuffer) => valueBuffer[116]); nullableString.SetPropertyIndexes( - index: 114, - originalValueIndex: 114, + index: 116, + originalValueIndex: 116, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6021,12 +6137,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableStringArray.SetAccessors( string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringArray, 115), + string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringArray, 117), string[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[115]); + object (ValueBuffer valueBuffer) => valueBuffer[117]); nullableStringArray.SetPropertyIndexes( - index: 115, - originalValueIndex: 115, + index: 117, + originalValueIndex: 117, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6079,12 +6195,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableStringNestedCollection.SetAccessors( string[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringNestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringNestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringNestedCollection, 116), + string[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringNestedCollection, 118), string[][] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableStringNestedCollection), - object (ValueBuffer valueBuffer) => valueBuffer[116]); + object (ValueBuffer valueBuffer) => valueBuffer[118]); nullableStringNestedCollection.SetPropertyIndexes( - index: 116, - originalValueIndex: 116, + index: 118, + originalValueIndex: 118, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6155,12 +6271,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeOnly.SetAccessors( TimeOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnly, 117), + TimeOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnly, 119), TimeOnly? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeOnly), - object (ValueBuffer valueBuffer) => valueBuffer[117]); + object (ValueBuffer valueBuffer) => valueBuffer[119]); nullableTimeOnly.SetPropertyIndexes( - index: 117, - originalValueIndex: 117, + index: 119, + originalValueIndex: 119, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6200,12 +6316,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeSpan.SetAccessors( TimeSpan? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpan, 118), + TimeSpan? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpan, 120), TimeSpan? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeSpan), - object (ValueBuffer valueBuffer) => valueBuffer[118]); + object (ValueBuffer valueBuffer) => valueBuffer[120]); nullableTimeSpan.SetPropertyIndexes( - index: 118, - originalValueIndex: 118, + index: 120, + originalValueIndex: 120, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6245,12 +6361,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt16.SetAccessors( ushort? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16, 119), + ushort? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16, 121), ushort? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt16), - object (ValueBuffer valueBuffer) => valueBuffer[119]); + object (ValueBuffer valueBuffer) => valueBuffer[121]); nullableUInt16.SetPropertyIndexes( - index: 119, - originalValueIndex: 119, + index: 121, + originalValueIndex: 121, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6289,12 +6405,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt16Array.SetAccessors( ushort? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16Array, 120), + ushort? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16Array, 122), ushort? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[120]); + object (ValueBuffer valueBuffer) => valueBuffer[122]); nullableUInt16Array.SetPropertyIndexes( - index: 120, - originalValueIndex: 120, + index: 122, + originalValueIndex: 122, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6348,12 +6464,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt32.SetAccessors( uint? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32, 121), + uint? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32, 123), uint? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt32), - object (ValueBuffer valueBuffer) => valueBuffer[121]); + object (ValueBuffer valueBuffer) => valueBuffer[123]); nullableUInt32.SetPropertyIndexes( - index: 121, - originalValueIndex: 121, + index: 123, + originalValueIndex: 123, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6392,12 +6508,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt32Array.SetAccessors( uint? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32Array, 122), + uint? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32Array, 124), uint? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[122]); + object (ValueBuffer valueBuffer) => valueBuffer[124]); nullableUInt32Array.SetPropertyIndexes( - index: 122, - originalValueIndex: 122, + index: 124, + originalValueIndex: 124, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6451,12 +6567,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt64.SetAccessors( ulong? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64, 123), + ulong? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64, 125), ulong? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt64), - object (ValueBuffer valueBuffer) => valueBuffer[123]); + object (ValueBuffer valueBuffer) => valueBuffer[125]); nullableUInt64.SetPropertyIndexes( - index: 123, - originalValueIndex: 123, + index: 125, + originalValueIndex: 125, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6495,12 +6611,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt64Array.SetAccessors( ulong? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64Array, 124), + ulong? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64Array, 126), ulong? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[124]); + object (ValueBuffer valueBuffer) => valueBuffer[126]); nullableUInt64Array.SetPropertyIndexes( - index: 124, - originalValueIndex: 124, + index: 126, + originalValueIndex: 126, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6554,12 +6670,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt8.SetAccessors( byte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8, 125), + byte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8, 127), byte? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt8), - object (ValueBuffer valueBuffer) => valueBuffer[125]); + object (ValueBuffer valueBuffer) => valueBuffer[127]); nullableUInt8.SetPropertyIndexes( - index: 125, - originalValueIndex: 125, + index: 127, + originalValueIndex: 127, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6598,12 +6714,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt8Array.SetAccessors( byte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8Array, 126), + byte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8Array, 128), byte? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[126]); + object (ValueBuffer valueBuffer) => valueBuffer[128]); nullableUInt8Array.SetPropertyIndexes( - index: 126, - originalValueIndex: 126, + index: 128, + originalValueIndex: 128, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6657,12 +6773,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUri.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUri, 127), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUri, 129), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUri), - object (ValueBuffer valueBuffer) => valueBuffer[127]); + object (ValueBuffer valueBuffer) => valueBuffer[129]); nullableUri.SetPropertyIndexes( - index: 127, - originalValueIndex: 127, + index: 129, + originalValueIndex: 129, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6705,12 +6821,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddress.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddress, 128), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddress, 130), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddress), - object (ValueBuffer valueBuffer) => valueBuffer[128]); + object (ValueBuffer valueBuffer) => valueBuffer[130]); physicalAddress.SetPropertyIndexes( - index: 128, - originalValueIndex: 128, + index: 130, + originalValueIndex: 130, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6754,12 +6870,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressToBytesConverterProperty.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToBytesConverterProperty, 129), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToBytesConverterProperty, 131), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[129]); + object (ValueBuffer valueBuffer) => valueBuffer[131]); physicalAddressToBytesConverterProperty.SetPropertyIndexes( - index: 129, - originalValueIndex: 129, + index: 131, + originalValueIndex: 131, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6803,12 +6919,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressToStringConverterProperty.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToStringConverterProperty, 130), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToStringConverterProperty, 132), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[130]); + object (ValueBuffer valueBuffer) => valueBuffer[132]); physicalAddressToStringConverterProperty.SetPropertyIndexes( - index: 130, - originalValueIndex: 130, + index: 132, + originalValueIndex: 132, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6851,12 +6967,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @string.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.String(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.String(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(@string, 131), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(@string, 133), string (InternalEntityEntry entry) => entry.GetCurrentValue(@string), - object (ValueBuffer valueBuffer) => valueBuffer[131]); + object (ValueBuffer valueBuffer) => valueBuffer[133]); @string.SetPropertyIndexes( - index: 131, - originalValueIndex: 131, + index: 133, + originalValueIndex: 133, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6893,12 +7009,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringArray.SetAccessors( string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringArray, 132), + string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringArray, 134), string[] (InternalEntityEntry entry) => entry.GetCurrentValue(stringArray), - object (ValueBuffer valueBuffer) => valueBuffer[132]); + object (ValueBuffer valueBuffer) => valueBuffer[134]); stringArray.SetPropertyIndexes( - index: 132, - originalValueIndex: 132, + index: 134, + originalValueIndex: 134, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6951,12 +7067,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringNestedCollection.SetAccessors( string[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringNestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringNestedCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringNestedCollection, 133), + string[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringNestedCollection, 135), string[][] (InternalEntityEntry entry) => entry.GetCurrentValue(stringNestedCollection), - object (ValueBuffer valueBuffer) => valueBuffer[133]); + object (ValueBuffer valueBuffer) => valueBuffer[135]); stringNestedCollection.SetPropertyIndexes( - index: 133, - originalValueIndex: 133, + index: 135, + originalValueIndex: 135, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7009,6 +7125,64 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas clrType: typeof(string), jsonValueReaderWriter: JsonStringReaderWriter.Instance))); + var stringReadOnlyCollection = runtimeEntityType.AddProperty( + "StringReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_stringReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + stringReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance) == null); + stringReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) = ((List)(value))); + stringReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) = ((List)(value))); + stringReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(stringReadOnlyCollection, 136), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(stringReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[136]); + stringReadOnlyCollection.SetPropertyIndexes( + index: 136, + originalValueIndex: 136, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + stringReadOnlyCollection.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v)), + keyComparer: new ValueComparer>( + bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), + int (IReadOnlyCollection v) => ((object)v).GetHashCode(), + IReadOnlyCollection (IReadOnlyCollection v) => v), + providerValueComparer: new ValueComparer>( + bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), + int (IReadOnlyCollection v) => ((object)v).GetHashCode(), + IReadOnlyCollection (IReadOnlyCollection v) => v), + clrType: typeof(IReadOnlyCollection), + jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( + JsonStringReaderWriter.Instance), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + keyComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + clrType: typeof(string), + jsonValueReaderWriter: JsonStringReaderWriter.Instance)); + var stringToBoolConverterProperty = runtimeEntityType.AddProperty( "StringToBoolConverterProperty", typeof(string), @@ -7027,12 +7201,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToBoolConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBoolConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBoolConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBoolConverterProperty, 134), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBoolConverterProperty, 137), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToBoolConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[134]); + object (ValueBuffer valueBuffer) => valueBuffer[137]); stringToBoolConverterProperty.SetPropertyIndexes( - index: 134, - originalValueIndex: 134, + index: 137, + originalValueIndex: 137, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7076,12 +7250,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToBytesConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBytesConverterProperty, 135), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBytesConverterProperty, 138), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[135]); + object (ValueBuffer valueBuffer) => valueBuffer[138]); stringToBytesConverterProperty.SetPropertyIndexes( - index: 135, - originalValueIndex: 135, + index: 138, + originalValueIndex: 138, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7125,12 +7299,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToCharConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToCharConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToCharConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToCharConverterProperty, 136), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToCharConverterProperty, 139), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToCharConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[136]); + object (ValueBuffer valueBuffer) => valueBuffer[139]); stringToCharConverterProperty.SetPropertyIndexes( - index: 136, - originalValueIndex: 136, + index: 139, + originalValueIndex: 139, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7174,12 +7348,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateOnlyConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateOnlyConverterProperty, 137), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateOnlyConverterProperty, 140), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateOnlyConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[137]); + object (ValueBuffer valueBuffer) => valueBuffer[140]); stringToDateOnlyConverterProperty.SetPropertyIndexes( - index: 137, - originalValueIndex: 137, + index: 140, + originalValueIndex: 140, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7223,12 +7397,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateTimeConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeConverterProperty, 138), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeConverterProperty, 141), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateTimeConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[138]); + object (ValueBuffer valueBuffer) => valueBuffer[141]); stringToDateTimeConverterProperty.SetPropertyIndexes( - index: 138, - originalValueIndex: 138, + index: 141, + originalValueIndex: 141, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7272,12 +7446,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateTimeOffsetConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeOffsetConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeOffsetConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeOffsetConverterProperty, 139), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeOffsetConverterProperty, 142), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateTimeOffsetConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[139]); + object (ValueBuffer valueBuffer) => valueBuffer[142]); stringToDateTimeOffsetConverterProperty.SetPropertyIndexes( - index: 139, - originalValueIndex: 139, + index: 142, + originalValueIndex: 142, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7321,12 +7495,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDecimalNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDecimalNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDecimalNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDecimalNumberConverterProperty, 140), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDecimalNumberConverterProperty, 143), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDecimalNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[140]); + object (ValueBuffer valueBuffer) => valueBuffer[143]); stringToDecimalNumberConverterProperty.SetPropertyIndexes( - index: 140, - originalValueIndex: 140, + index: 143, + originalValueIndex: 143, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7370,12 +7544,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDoubleNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDoubleNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDoubleNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDoubleNumberConverterProperty, 141), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDoubleNumberConverterProperty, 144), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDoubleNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[141]); + object (ValueBuffer valueBuffer) => valueBuffer[144]); stringToDoubleNumberConverterProperty.SetPropertyIndexes( - index: 141, - originalValueIndex: 141, + index: 144, + originalValueIndex: 144, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7419,12 +7593,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToEnumConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToEnumConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToEnumConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToEnumConverterProperty, 142), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToEnumConverterProperty, 145), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToEnumConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[142]); + object (ValueBuffer valueBuffer) => valueBuffer[145]); stringToEnumConverterProperty.SetPropertyIndexes( - index: 142, - originalValueIndex: 142, + index: 145, + originalValueIndex: 145, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7467,12 +7641,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToGuidConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToGuidConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToGuidConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToGuidConverterProperty, 143), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToGuidConverterProperty, 146), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToGuidConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[143]); + object (ValueBuffer valueBuffer) => valueBuffer[146]); stringToGuidConverterProperty.SetPropertyIndexes( - index: 143, - originalValueIndex: 143, + index: 146, + originalValueIndex: 146, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7510,12 +7684,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToIntNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToIntNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToIntNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToIntNumberConverterProperty, 144), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToIntNumberConverterProperty, 147), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToIntNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[144]); + object (ValueBuffer valueBuffer) => valueBuffer[147]); stringToIntNumberConverterProperty.SetPropertyIndexes( - index: 144, - originalValueIndex: 144, + index: 147, + originalValueIndex: 147, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7559,12 +7733,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToTimeOnlyConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeOnlyConverterProperty, 145), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeOnlyConverterProperty, 148), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToTimeOnlyConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[145]); + object (ValueBuffer valueBuffer) => valueBuffer[148]); stringToTimeOnlyConverterProperty.SetPropertyIndexes( - index: 145, - originalValueIndex: 145, + index: 148, + originalValueIndex: 148, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7608,12 +7782,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToTimeSpanConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeSpanConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeSpanConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeSpanConverterProperty, 146), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeSpanConverterProperty, 149), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToTimeSpanConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[146]); + object (ValueBuffer valueBuffer) => valueBuffer[149]); stringToTimeSpanConverterProperty.SetPropertyIndexes( - index: 146, - originalValueIndex: 146, + index: 149, + originalValueIndex: 149, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7657,12 +7831,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToUriConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToUriConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToUriConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToUriConverterProperty, 147), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToUriConverterProperty, 150), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToUriConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[147]); + object (ValueBuffer valueBuffer) => valueBuffer[150]); stringToUriConverterProperty.SetPropertyIndexes( - index: 147, - originalValueIndex: 147, + index: 150, + originalValueIndex: 150, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7706,12 +7880,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnly.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnly, 148), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnly, 151), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnly), - object (ValueBuffer valueBuffer) => valueBuffer[148]); + object (ValueBuffer valueBuffer) => valueBuffer[151]); timeOnly.SetPropertyIndexes( - index: 148, - originalValueIndex: 148, + index: 151, + originalValueIndex: 151, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7749,12 +7923,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyToStringConverterProperty.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToStringConverterProperty, 149), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToStringConverterProperty, 152), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[149]); + object (ValueBuffer valueBuffer) => valueBuffer[152]); timeOnlyToStringConverterProperty.SetPropertyIndexes( - index: 149, - originalValueIndex: 149, + index: 152, + originalValueIndex: 152, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7799,12 +7973,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyToTicksConverterProperty.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToTicksConverterProperty, 150), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToTicksConverterProperty, 153), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[150]); + object (ValueBuffer valueBuffer) => valueBuffer[153]); timeOnlyToTicksConverterProperty.SetPropertyIndexes( - index: 150, - originalValueIndex: 150, + index: 153, + originalValueIndex: 153, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7849,12 +8023,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpan.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpan, 151), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpan, 154), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpan), - object (ValueBuffer valueBuffer) => valueBuffer[151]); + object (ValueBuffer valueBuffer) => valueBuffer[154]); timeSpan.SetPropertyIndexes( - index: 151, - originalValueIndex: 151, + index: 154, + originalValueIndex: 154, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7892,12 +8066,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanToStringConverterProperty.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToStringConverterProperty, 152), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToStringConverterProperty, 155), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[152]); + object (ValueBuffer valueBuffer) => valueBuffer[155]); timeSpanToStringConverterProperty.SetPropertyIndexes( - index: 152, - originalValueIndex: 152, + index: 155, + originalValueIndex: 155, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7942,12 +8116,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanToTicksConverterProperty.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToTicksConverterProperty, 153), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToTicksConverterProperty, 156), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[153]); + object (ValueBuffer valueBuffer) => valueBuffer[156]); timeSpanToTicksConverterProperty.SetPropertyIndexes( - index: 153, - originalValueIndex: 153, + index: 156, + originalValueIndex: 156, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7992,12 +8166,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt16.SetAccessors( ushort (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16, 154), + ushort (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16, 157), ushort (InternalEntityEntry entry) => entry.GetCurrentValue(uInt16), - object (ValueBuffer valueBuffer) => valueBuffer[154]); + object (ValueBuffer valueBuffer) => valueBuffer[157]); uInt16.SetPropertyIndexes( - index: 154, - originalValueIndex: 154, + index: 157, + originalValueIndex: 157, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8034,12 +8208,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt16Array.SetAccessors( ushort[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16Array, 155), + ushort[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16Array, 158), ushort[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[155]); + object (ValueBuffer valueBuffer) => valueBuffer[158]); uInt16Array.SetPropertyIndexes( - index: 155, - originalValueIndex: 155, + index: 158, + originalValueIndex: 158, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8093,12 +8267,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt32.SetAccessors( uint (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32, 156), + uint (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32, 159), uint (InternalEntityEntry entry) => entry.GetCurrentValue(uInt32), - object (ValueBuffer valueBuffer) => valueBuffer[156]); + object (ValueBuffer valueBuffer) => valueBuffer[159]); uInt32.SetPropertyIndexes( - index: 156, - originalValueIndex: 156, + index: 159, + originalValueIndex: 159, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8135,12 +8309,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt32Array.SetAccessors( uint[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32Array, 157), + uint[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32Array, 160), uint[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[157]); + object (ValueBuffer valueBuffer) => valueBuffer[160]); uInt32Array.SetPropertyIndexes( - index: 157, - originalValueIndex: 157, + index: 160, + originalValueIndex: 160, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8194,12 +8368,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt64.SetAccessors( ulong (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64, 158), + ulong (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64, 161), ulong (InternalEntityEntry entry) => entry.GetCurrentValue(uInt64), - object (ValueBuffer valueBuffer) => valueBuffer[158]); + object (ValueBuffer valueBuffer) => valueBuffer[161]); uInt64.SetPropertyIndexes( - index: 158, - originalValueIndex: 158, + index: 161, + originalValueIndex: 161, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8236,12 +8410,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt64Array.SetAccessors( ulong[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64Array, 159), + ulong[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64Array, 162), ulong[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[159]); + object (ValueBuffer valueBuffer) => valueBuffer[162]); uInt64Array.SetPropertyIndexes( - index: 159, - originalValueIndex: 159, + index: 162, + originalValueIndex: 162, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8295,12 +8469,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt8.SetAccessors( byte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8, 160), + byte (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8, 163), byte (InternalEntityEntry entry) => entry.GetCurrentValue(uInt8), - object (ValueBuffer valueBuffer) => valueBuffer[160]); + object (ValueBuffer valueBuffer) => valueBuffer[163]); uInt8.SetPropertyIndexes( - index: 160, - originalValueIndex: 160, + index: 163, + originalValueIndex: 163, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8337,12 +8511,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt8Array.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8Array, 161), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8Array, 164), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[161]); + object (ValueBuffer valueBuffer) => valueBuffer[164]); uInt8Array.SetPropertyIndexes( - index: 161, - originalValueIndex: 161, + index: 164, + originalValueIndex: 164, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8368,6 +8542,64 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (byte[] v) => Convert.ToBase64String(v), byte[] (string v) => Convert.FromBase64String(v)))); + var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( + "UInt8ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_uInt8ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + uInt8ReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance) == null); + uInt8ReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) = ((List)(value))); + uInt8ReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) = ((List)(value))); + uInt8ReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(uInt8ReadOnlyCollection, 165), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(uInt8ReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[165]); + uInt8ReadOnlyCollection.SetPropertyIndexes( + index: 165, + originalValueIndex: 165, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + uInt8ReadOnlyCollection.TypeMapping = CosmosTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v)), + keyComparer: new ValueComparer>( + bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), + int (IReadOnlyCollection v) => ((object)v).GetHashCode(), + IReadOnlyCollection (IReadOnlyCollection v) => v), + providerValueComparer: new ValueComparer>( + bool (IReadOnlyCollection v1, IReadOnlyCollection v2) => object.Equals(v1, v2), + int (IReadOnlyCollection v) => ((object)v).GetHashCode(), + IReadOnlyCollection (IReadOnlyCollection v) => v), + clrType: typeof(IReadOnlyCollection), + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( + JsonByteReaderWriter.Instance), + elementMapping: CosmosTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + keyComparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + providerValueComparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + clrType: typeof(byte), + jsonValueReaderWriter: JsonByteReaderWriter.Instance)); + var uri = runtimeEntityType.AddProperty( "Uri", typeof(Uri), @@ -8385,12 +8617,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uri.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Uri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Uri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uri, 162), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uri, 166), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(uri), - object (ValueBuffer valueBuffer) => valueBuffer[162]); + object (ValueBuffer valueBuffer) => valueBuffer[166]); uri.SetPropertyIndexes( - index: 162, - originalValueIndex: 162, + index: 166, + originalValueIndex: 166, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8434,12 +8666,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uriToStringConverterProperty.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uriToStringConverterProperty, 163), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uriToStringConverterProperty, 167), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(uriToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[163]); + object (ValueBuffer valueBuffer) => valueBuffer[167]); uriToStringConverterProperty.SetPropertyIndexes( - index: 163, - originalValueIndex: 163, + index: 167, + originalValueIndex: 167, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8473,12 +8705,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas __id.SetAccessors( string (InternalEntityEntry entry) => entry.ReadShadowValue(1), string (InternalEntityEntry entry) => entry.ReadShadowValue(1), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(__id, 164), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(__id, 168), string (InternalEntityEntry entry) => entry.GetCurrentValue(__id), - object (ValueBuffer valueBuffer) => valueBuffer[164]); + object (ValueBuffer valueBuffer) => valueBuffer[168]); __id.SetPropertyIndexes( - index: 164, - originalValueIndex: 164, + index: 168, + originalValueIndex: 168, shadowIndex: 1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8507,14 +8739,14 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas beforeSaveBehavior: PropertySaveBehavior.Ignore, afterSaveBehavior: PropertySaveBehavior.Ignore); __jObject.SetAccessors( - JObject (InternalEntityEntry entry) => (entry.FlaggedAsStoreGenerated(165) ? entry.ReadStoreGeneratedValue(1) : (entry.FlaggedAsTemporary(165) && entry.ReadShadowValue(2) == null ? entry.ReadTemporaryValue(1) : entry.ReadShadowValue(2))), + JObject (InternalEntityEntry entry) => (entry.FlaggedAsStoreGenerated(169) ? entry.ReadStoreGeneratedValue(1) : (entry.FlaggedAsTemporary(169) && entry.ReadShadowValue(2) == null ? entry.ReadTemporaryValue(1) : entry.ReadShadowValue(2))), JObject (InternalEntityEntry entry) => entry.ReadShadowValue(2), - JObject (InternalEntityEntry entry) => entry.ReadOriginalValue(__jObject, 165), + JObject (InternalEntityEntry entry) => entry.ReadOriginalValue(__jObject, 169), JObject (InternalEntityEntry entry) => entry.GetCurrentValue(__jObject), - object (ValueBuffer valueBuffer) => valueBuffer[165]); + object (ValueBuffer valueBuffer) => valueBuffer[169]); __jObject.SetPropertyIndexes( - index: 165, - originalValueIndex: 165, + index: 169, + originalValueIndex: 169, shadowIndex: 2, relationshipIndex: -1, storeGenerationIndex: 1); @@ -8548,6 +8780,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var @bool = runtimeEntityType.FindProperty("Bool"); var boolArray = runtimeEntityType.FindProperty("BoolArray"); var boolNestedCollection = runtimeEntityType.FindProperty("BoolNestedCollection"); + var boolReadOnlyCollection = runtimeEntityType.FindProperty("BoolReadOnlyCollection"); var boolToStringConverterProperty = runtimeEntityType.FindProperty("BoolToStringConverterProperty"); var boolToTwoValuesConverterProperty = runtimeEntityType.FindProperty("BoolToTwoValuesConverterProperty"); var boolToZeroOneConverterProperty = runtimeEntityType.FindProperty("BoolToZeroOneConverterProperty"); @@ -8606,6 +8839,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var int32 = runtimeEntityType.FindProperty("Int32"); var int32Array = runtimeEntityType.FindProperty("Int32Array"); var int32NestedCollection = runtimeEntityType.FindProperty("Int32NestedCollection"); + var int32ReadOnlyCollection = runtimeEntityType.FindProperty("Int32ReadOnlyCollection"); var int64 = runtimeEntityType.FindProperty("Int64"); var int64Array = runtimeEntityType.FindProperty("Int64Array"); var int64NestedCollection = runtimeEntityType.FindProperty("Int64NestedCollection"); @@ -8677,6 +8911,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var @string = runtimeEntityType.FindProperty("String"); var stringArray = runtimeEntityType.FindProperty("StringArray"); var stringNestedCollection = runtimeEntityType.FindProperty("StringNestedCollection"); + var stringReadOnlyCollection = runtimeEntityType.FindProperty("StringReadOnlyCollection"); var stringToBoolConverterProperty = runtimeEntityType.FindProperty("StringToBoolConverterProperty"); var stringToBytesConverterProperty = runtimeEntityType.FindProperty("StringToBytesConverterProperty"); var stringToCharConverterProperty = runtimeEntityType.FindProperty("StringToCharConverterProperty"); @@ -8705,6 +8940,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var uInt64Array = runtimeEntityType.FindProperty("UInt64Array"); var uInt8 = runtimeEntityType.FindProperty("UInt8"); var uInt8Array = runtimeEntityType.FindProperty("UInt8Array"); + var uInt8ReadOnlyCollection = runtimeEntityType.FindProperty("UInt8ReadOnlyCollection"); var uri = runtimeEntityType.FindProperty("Uri"); var uriToStringConverterProperty = runtimeEntityType.FindProperty("UriToStringConverterProperty"); var __id = runtimeEntityType.FindProperty("__id"); @@ -8716,17 +8952,17 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) ISnapshot (InternalEntityEntry source) => { var entity = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg = ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), (source.GetCurrentValue(type) == null ? null : ((ValueComparer)(((IProperty)type).GetValueComparer())).Snapshot(source.GetCurrentValue(type))), ((ValueComparer)(((IProperty)@bool).GetValueComparer())).Snapshot(source.GetCurrentValue(@bool)), (((IEnumerable)(source.GetCurrentValue(boolArray))) == null ? null : ((bool[])(((ValueComparer>)(((IProperty)boolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(boolArray))))))), (((object)(source.GetCurrentValue(boolNestedCollection))) == null ? null : ((bool[][])(((ValueComparer)(((IProperty)boolNestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(boolNestedCollection))))))), ((ValueComparer)(((IProperty)boolToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToStringConverterProperty)), ((ValueComparer)(((IProperty)boolToTwoValuesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToTwoValuesConverterProperty)), ((ValueComparer)(((IProperty)boolToZeroOneConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToZeroOneConverterProperty)), (source.GetCurrentValue(bytes) == null ? null : ((ValueComparer)(((IProperty)bytes).GetValueComparer())).Snapshot(source.GetCurrentValue(bytes))), (source.GetCurrentValue(bytesToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)bytesToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(bytesToStringConverterProperty))), ((ValueComparer)(((IProperty)castingConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(castingConverterProperty)), ((ValueComparer)(((IProperty)@char).GetValueComparer())).Snapshot(source.GetCurrentValue(@char)), (((IEnumerable)(source.GetCurrentValue(charArray))) == null ? null : ((char[])(((ValueComparer>)(((IProperty)charArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(charArray))))))), (((object)(source.GetCurrentValue(charNestedCollection))) == null ? null : ((char[][])(((ValueComparer)(((IProperty)charNestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(charNestedCollection))))))), ((ValueComparer)(((IProperty)charToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(charToStringConverterProperty)), ((ValueComparer)(((IProperty)dateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnly)), ((ValueComparer)(((IProperty)dateOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTime)), ((ValueComparer)(((IProperty)dateTimeOffsetToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBytesConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToTicksConverterProperty)), ((ValueComparer)(((IProperty)@decimal).GetValueComparer())).Snapshot(source.GetCurrentValue(@decimal)), (((IEnumerable)(source.GetCurrentValue(decimalArray))) == null ? null : ((decimal[])(((ValueComparer>)(((IProperty)decimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(decimalArray))))))), ((ValueComparer)(((IProperty)decimalNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)decimalNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)@double).GetValueComparer())).Snapshot(source.GetCurrentValue(@double)), (((IEnumerable)(source.GetCurrentValue(doubleArray))) == null ? null : ((double[])(((ValueComparer>)(((IProperty)doubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(doubleArray)))))))))); + var liftedArg = ((ISnapshot)(new Snapshot, bool, bool, bool, byte[], byte[], int, char, char[], char[][], char, DateOnly, DateOnly, DateTime, DateTimeOffset, DateTimeOffset, DateTimeOffset, DateTime, DateTime, DateTime, decimal, decimal[], decimal, decimal, double>(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), (source.GetCurrentValue(type) == null ? null : ((ValueComparer)(((IProperty)type).GetValueComparer())).Snapshot(source.GetCurrentValue(type))), ((ValueComparer)(((IProperty)@bool).GetValueComparer())).Snapshot(source.GetCurrentValue(@bool)), (((IEnumerable)(source.GetCurrentValue(boolArray))) == null ? null : ((bool[])(((ValueComparer>)(((IProperty)boolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(boolArray))))))), (((object)(source.GetCurrentValue(boolNestedCollection))) == null ? null : ((bool[][])(((ValueComparer)(((IProperty)boolNestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(boolNestedCollection))))))), (((IEnumerable)(source.GetCurrentValue>(boolReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)boolReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(boolReadOnlyCollection))))))), ((ValueComparer)(((IProperty)boolToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToStringConverterProperty)), ((ValueComparer)(((IProperty)boolToTwoValuesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToTwoValuesConverterProperty)), ((ValueComparer)(((IProperty)boolToZeroOneConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToZeroOneConverterProperty)), (source.GetCurrentValue(bytes) == null ? null : ((ValueComparer)(((IProperty)bytes).GetValueComparer())).Snapshot(source.GetCurrentValue(bytes))), (source.GetCurrentValue(bytesToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)bytesToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(bytesToStringConverterProperty))), ((ValueComparer)(((IProperty)castingConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(castingConverterProperty)), ((ValueComparer)(((IProperty)@char).GetValueComparer())).Snapshot(source.GetCurrentValue(@char)), (((IEnumerable)(source.GetCurrentValue(charArray))) == null ? null : ((char[])(((ValueComparer>)(((IProperty)charArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(charArray))))))), (((object)(source.GetCurrentValue(charNestedCollection))) == null ? null : ((char[][])(((ValueComparer)(((IProperty)charNestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(charNestedCollection))))))), ((ValueComparer)(((IProperty)charToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(charToStringConverterProperty)), ((ValueComparer)(((IProperty)dateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnly)), ((ValueComparer)(((IProperty)dateOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTime)), ((ValueComparer)(((IProperty)dateTimeOffsetToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBytesConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToTicksConverterProperty)), ((ValueComparer)(((IProperty)@decimal).GetValueComparer())).Snapshot(source.GetCurrentValue(@decimal)), (((IEnumerable)(source.GetCurrentValue(decimalArray))) == null ? null : ((decimal[])(((ValueComparer>)(((IProperty)decimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(decimalArray))))))), ((ValueComparer)(((IProperty)decimalNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)decimalNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)@double).GetValueComparer())).Snapshot(source.GetCurrentValue(@double))))); var entity0 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg0 = ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)doubleNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)doubleNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)enum16).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16)), ((ValueComparer)(((IProperty)enum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16AsString)), ((ValueComparer)(((IProperty)enum32).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32)), ((ValueComparer)(((IProperty)enum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32AsString)), ((ValueComparer)(((IProperty)enum64).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64)), ((ValueComparer)(((IProperty)enum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64AsString)), ((ValueComparer)(((IProperty)enum8).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8)), ((ValueComparer)(((IProperty)enum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8AsString)), ((ValueComparer)(((IProperty)enumToNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToNumberConverterProperty)), ((ValueComparer)(((IProperty)enumToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToStringConverterProperty)), ((ValueComparer)(((IProperty)enumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16)), ((ValueComparer)(((IProperty)enumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16AsString)), ((ValueComparer)(((IProperty)enumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32)), ((ValueComparer)(((IProperty)enumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32AsString)), ((ValueComparer)(((IProperty)enumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64)), ((ValueComparer)(((IProperty)enumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64AsString)), ((ValueComparer)(((IProperty)enumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8)), ((ValueComparer)(((IProperty)enumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8AsString)), ((ValueComparer)(((IProperty)@float).GetValueComparer())).Snapshot(source.GetCurrentValue(@float)), (((IEnumerable)(source.GetCurrentValue(floatArray))) == null ? null : ((float[])(((ValueComparer>)(((IProperty)floatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(floatArray))))))), ((ValueComparer)(((IProperty)guid).GetValueComparer())).Snapshot(source.GetCurrentValue(guid)), ((ValueComparer)(((IProperty)guidToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToBytesConverterProperty)), ((ValueComparer)(((IProperty)guidToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToStringConverterProperty)), (source.GetCurrentValue(iPAddress) == null ? null : ((ValueComparer)(((IProperty)iPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddress))), (source.GetCurrentValue(iPAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToBytesConverterProperty))), (source.GetCurrentValue(iPAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToStringConverterProperty))), ((ValueComparer)(((IProperty)int16).GetValueComparer())).Snapshot(source.GetCurrentValue(int16)), (((IEnumerable)(source.GetCurrentValue(int16Array))) == null ? null : ((short[])(((ValueComparer>)(((IProperty)int16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int16Array)))))))))); + var liftedArg0 = ((ISnapshot)(new Snapshot((((IEnumerable)(source.GetCurrentValue(doubleArray))) == null ? null : ((double[])(((ValueComparer>)(((IProperty)doubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(doubleArray))))))), ((ValueComparer)(((IProperty)doubleNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)doubleNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)enum16).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16)), ((ValueComparer)(((IProperty)enum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16AsString)), ((ValueComparer)(((IProperty)enum32).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32)), ((ValueComparer)(((IProperty)enum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32AsString)), ((ValueComparer)(((IProperty)enum64).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64)), ((ValueComparer)(((IProperty)enum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64AsString)), ((ValueComparer)(((IProperty)enum8).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8)), ((ValueComparer)(((IProperty)enum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8AsString)), ((ValueComparer)(((IProperty)enumToNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToNumberConverterProperty)), ((ValueComparer)(((IProperty)enumToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToStringConverterProperty)), ((ValueComparer)(((IProperty)enumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16)), ((ValueComparer)(((IProperty)enumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16AsString)), ((ValueComparer)(((IProperty)enumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32)), ((ValueComparer)(((IProperty)enumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32AsString)), ((ValueComparer)(((IProperty)enumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64)), ((ValueComparer)(((IProperty)enumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64AsString)), ((ValueComparer)(((IProperty)enumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8)), ((ValueComparer)(((IProperty)enumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8AsString)), ((ValueComparer)(((IProperty)@float).GetValueComparer())).Snapshot(source.GetCurrentValue(@float)), (((IEnumerable)(source.GetCurrentValue(floatArray))) == null ? null : ((float[])(((ValueComparer>)(((IProperty)floatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(floatArray))))))), ((ValueComparer)(((IProperty)guid).GetValueComparer())).Snapshot(source.GetCurrentValue(guid)), ((ValueComparer)(((IProperty)guidToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToBytesConverterProperty)), ((ValueComparer)(((IProperty)guidToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToStringConverterProperty)), (source.GetCurrentValue(iPAddress) == null ? null : ((ValueComparer)(((IProperty)iPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddress))), (source.GetCurrentValue(iPAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToBytesConverterProperty))), (source.GetCurrentValue(iPAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToStringConverterProperty))), ((ValueComparer)(((IProperty)int16).GetValueComparer())).Snapshot(source.GetCurrentValue(int16))))); var entity1 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg1 = ((ISnapshot)(new Snapshot[], sbyte, sbyte[], sbyte[][][], int, int, int?, bool?, bool? [], byte[], char?, char? [], DateOnly?, DateTime?, decimal?, decimal? [], double?, double? [], CompiledModelTestBase.Enum16?, CompiledModelTestBase.Enum16?, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum8?>(((ValueComparer)(((IProperty)int32).GetValueComparer())).Snapshot(source.GetCurrentValue(int32)), (((IEnumerable)(source.GetCurrentValue(int32Array))) == null ? null : ((int[])(((ValueComparer>)(((IProperty)int32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int32Array))))))), (((object)(source.GetCurrentValue(int32NestedCollection))) == null ? null : ((int[][])(((ValueComparer)(((IProperty)int32NestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(int32NestedCollection))))))), ((ValueComparer)(((IProperty)int64).GetValueComparer())).Snapshot(source.GetCurrentValue(int64)), (((IEnumerable)(source.GetCurrentValue(int64Array))) == null ? null : ((long[])(((ValueComparer>)(((IProperty)int64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int64Array))))))), (((object)(source.GetCurrentValue[]>(int64NestedCollection))) == null ? null : ((IList[])(((ValueComparer)(((IProperty)int64NestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue[]>(int64NestedCollection))))))), ((ValueComparer)(((IProperty)int8).GetValueComparer())).Snapshot(source.GetCurrentValue(int8)), (((IEnumerable)(source.GetCurrentValue(int8Array))) == null ? null : ((sbyte[])(((ValueComparer>)(((IProperty)int8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int8Array))))))), (((object)(source.GetCurrentValue(int8NestedCollection))) == null ? null : ((sbyte[][][])(((ValueComparer)(((IProperty)int8NestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(int8NestedCollection))))))), ((ValueComparer)(((IProperty)intNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)intNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToStringConverterProperty)), (source.GetCurrentValue(nullIntToNullStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)nullIntToNullStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(nullIntToNullStringConverterProperty))), (source.GetCurrentValue(nullableBool) == null ? null : ((ValueComparer)(((IProperty)nullableBool).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBool))), (((IEnumerable)(source.GetCurrentValue(nullableBoolArray))) == null ? null : ((bool? [])(((ValueComparer>)(((IProperty)nullableBoolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableBoolArray))))))), (source.GetCurrentValue(nullableBytes) == null ? null : ((ValueComparer)(((IProperty)nullableBytes).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBytes))), (source.GetCurrentValue(nullableChar) == null ? null : ((ValueComparer)(((IProperty)nullableChar).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableChar))), (((IEnumerable)(source.GetCurrentValue(nullableCharArray))) == null ? null : ((char? [])(((ValueComparer>)(((IProperty)nullableCharArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableCharArray))))))), (source.GetCurrentValue(nullableDateOnly) == null ? null : ((ValueComparer)(((IProperty)nullableDateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateOnly))), (source.GetCurrentValue(nullableDateTime) == null ? null : ((ValueComparer)(((IProperty)nullableDateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateTime))), (source.GetCurrentValue(nullableDecimal) == null ? null : ((ValueComparer)(((IProperty)nullableDecimal).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDecimal))), (((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))) == null ? null : ((decimal? [])(((ValueComparer>)(((IProperty)nullableDecimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))))))), (source.GetCurrentValue(nullableDouble) == null ? null : ((ValueComparer)(((IProperty)nullableDouble).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDouble))), (((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))) == null ? null : ((double? [])(((ValueComparer>)(((IProperty)nullableDoubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))))))), (source.GetCurrentValue(nullableEnum16) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16))), (source.GetCurrentValue(nullableEnum16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16AsString))), (source.GetCurrentValue(nullableEnum32) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32))), (source.GetCurrentValue(nullableEnum32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32AsString))), (source.GetCurrentValue(nullableEnum64) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64))), (source.GetCurrentValue(nullableEnum64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64AsString))), (source.GetCurrentValue(nullableEnum8) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8)))))); + var liftedArg1 = ((ISnapshot)(new Snapshot, long, long[], IList[], sbyte, sbyte[], sbyte[][][], int, int, int?, bool?, bool? [], byte[], char?, char? [], DateOnly?, DateTime?, decimal?, decimal? [], double?, double? [], CompiledModelTestBase.Enum16?, CompiledModelTestBase.Enum16?, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum64?>((((IEnumerable)(source.GetCurrentValue(int16Array))) == null ? null : ((short[])(((ValueComparer>)(((IProperty)int16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int16Array))))))), ((ValueComparer)(((IProperty)int32).GetValueComparer())).Snapshot(source.GetCurrentValue(int32)), (((IEnumerable)(source.GetCurrentValue(int32Array))) == null ? null : ((int[])(((ValueComparer>)(((IProperty)int32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int32Array))))))), (((object)(source.GetCurrentValue(int32NestedCollection))) == null ? null : ((int[][])(((ValueComparer)(((IProperty)int32NestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(int32NestedCollection))))))), (((IEnumerable)(source.GetCurrentValue>(int32ReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)int32ReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(int32ReadOnlyCollection))))))), ((ValueComparer)(((IProperty)int64).GetValueComparer())).Snapshot(source.GetCurrentValue(int64)), (((IEnumerable)(source.GetCurrentValue(int64Array))) == null ? null : ((long[])(((ValueComparer>)(((IProperty)int64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int64Array))))))), (((object)(source.GetCurrentValue[]>(int64NestedCollection))) == null ? null : ((IList[])(((ValueComparer)(((IProperty)int64NestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue[]>(int64NestedCollection))))))), ((ValueComparer)(((IProperty)int8).GetValueComparer())).Snapshot(source.GetCurrentValue(int8)), (((IEnumerable)(source.GetCurrentValue(int8Array))) == null ? null : ((sbyte[])(((ValueComparer>)(((IProperty)int8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int8Array))))))), (((object)(source.GetCurrentValue(int8NestedCollection))) == null ? null : ((sbyte[][][])(((ValueComparer)(((IProperty)int8NestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(int8NestedCollection))))))), ((ValueComparer)(((IProperty)intNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)intNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToStringConverterProperty)), (source.GetCurrentValue(nullIntToNullStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)nullIntToNullStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(nullIntToNullStringConverterProperty))), (source.GetCurrentValue(nullableBool) == null ? null : ((ValueComparer)(((IProperty)nullableBool).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBool))), (((IEnumerable)(source.GetCurrentValue(nullableBoolArray))) == null ? null : ((bool? [])(((ValueComparer>)(((IProperty)nullableBoolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableBoolArray))))))), (source.GetCurrentValue(nullableBytes) == null ? null : ((ValueComparer)(((IProperty)nullableBytes).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBytes))), (source.GetCurrentValue(nullableChar) == null ? null : ((ValueComparer)(((IProperty)nullableChar).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableChar))), (((IEnumerable)(source.GetCurrentValue(nullableCharArray))) == null ? null : ((char? [])(((ValueComparer>)(((IProperty)nullableCharArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableCharArray))))))), (source.GetCurrentValue(nullableDateOnly) == null ? null : ((ValueComparer)(((IProperty)nullableDateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateOnly))), (source.GetCurrentValue(nullableDateTime) == null ? null : ((ValueComparer)(((IProperty)nullableDateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateTime))), (source.GetCurrentValue(nullableDecimal) == null ? null : ((ValueComparer)(((IProperty)nullableDecimal).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDecimal))), (((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))) == null ? null : ((decimal? [])(((ValueComparer>)(((IProperty)nullableDecimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))))))), (source.GetCurrentValue(nullableDouble) == null ? null : ((ValueComparer)(((IProperty)nullableDouble).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDouble))), (((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))) == null ? null : ((double? [])(((ValueComparer>)(((IProperty)nullableDoubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))))))), (source.GetCurrentValue(nullableEnum16) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16))), (source.GetCurrentValue(nullableEnum16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16AsString))), (source.GetCurrentValue(nullableEnum32) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32))), (source.GetCurrentValue(nullableEnum32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32AsString))), (source.GetCurrentValue(nullableEnum64) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64)))))); var entity2 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg2 = ((ISnapshot)(new Snapshot, sbyte?, sbyte? [], PhysicalAddress, string, string[], string[][], TimeOnly?, TimeSpan?, ushort?>((source.GetCurrentValue(nullableEnum8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8AsString))), (source.GetCurrentValue(nullableEnumU16) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16))), (source.GetCurrentValue(nullableEnumU16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16AsString))), (source.GetCurrentValue(nullableEnumU32) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32))), (source.GetCurrentValue(nullableEnumU32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32AsString))), (source.GetCurrentValue(nullableEnumU64) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64))), (source.GetCurrentValue(nullableEnumU64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64AsString))), (source.GetCurrentValue(nullableEnumU8) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8))), (source.GetCurrentValue(nullableEnumU8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8AsString))), (source.GetCurrentValue(nullableFloat) == null ? null : ((ValueComparer)(((IProperty)nullableFloat).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableFloat))), (((IEnumerable)(source.GetCurrentValue(nullableFloatArray))) == null ? null : ((float? [])(((ValueComparer>)(((IProperty)nullableFloatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableFloatArray))))))), (source.GetCurrentValue(nullableGuid) == null ? null : ((ValueComparer)(((IProperty)nullableGuid).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableGuid))), (source.GetCurrentValue(nullableIPAddress) == null ? null : ((ValueComparer)(((IProperty)nullableIPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableIPAddress))), (source.GetCurrentValue(nullableInt16) == null ? null : ((ValueComparer)(((IProperty)nullableInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt16))), (((IEnumerable)(source.GetCurrentValue(nullableInt16Array))) == null ? null : ((short? [])(((ValueComparer>)(((IProperty)nullableInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt16Array))))))), (source.GetCurrentValue(nullableInt32) == null ? null : ((ValueComparer)(((IProperty)nullableInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt32))), (((IEnumerable)(source.GetCurrentValue(nullableInt32Array))) == null ? null : ((int? [])(((ValueComparer>)(((IProperty)nullableInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt32Array))))))), (((object)(source.GetCurrentValue(nullableInt32NestedCollection))) == null ? null : ((int? [][])(((ValueComparer)(((IProperty)nullableInt32NestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableInt32NestedCollection))))))), (source.GetCurrentValue(nullableInt64) == null ? null : ((ValueComparer)(((IProperty)nullableInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt64))), (((IEnumerable)(source.GetCurrentValue(nullableInt64Array))) == null ? null : ((long? [])(((ValueComparer>)(((IProperty)nullableInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt64Array))))))), (((object)(source.GetCurrentValue>(nullableInt64NestedCollection))) == null ? null : ((List)(((ValueComparer)(((IProperty)nullableInt64NestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(nullableInt64NestedCollection))))))), (source.GetCurrentValue(nullableInt8) == null ? null : ((ValueComparer)(((IProperty)nullableInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt8))), (((IEnumerable)(source.GetCurrentValue(nullableInt8Array))) == null ? null : ((sbyte? [])(((ValueComparer>)(((IProperty)nullableInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt8Array))))))), (source.GetCurrentValue(nullablePhysicalAddress) == null ? null : ((ValueComparer)(((IProperty)nullablePhysicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullablePhysicalAddress))), (source.GetCurrentValue(nullableString) == null ? null : ((ValueComparer)(((IProperty)nullableString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableString))), (((object)(source.GetCurrentValue(nullableStringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)nullableStringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringArray))))))), (((object)(source.GetCurrentValue(nullableStringNestedCollection))) == null ? null : ((string[][])(((ValueComparer)(((IProperty)nullableStringNestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringNestedCollection))))))), (source.GetCurrentValue(nullableTimeOnly) == null ? null : ((ValueComparer)(((IProperty)nullableTimeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeOnly))), (source.GetCurrentValue(nullableTimeSpan) == null ? null : ((ValueComparer)(((IProperty)nullableTimeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeSpan))), (source.GetCurrentValue(nullableUInt16) == null ? null : ((ValueComparer)(((IProperty)nullableUInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt16)))))); + var liftedArg2 = ((ISnapshot)(new Snapshot, sbyte?, sbyte? [], PhysicalAddress, string, string[], string[][], TimeOnly?>((source.GetCurrentValue(nullableEnum64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64AsString))), (source.GetCurrentValue(nullableEnum8) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8))), (source.GetCurrentValue(nullableEnum8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8AsString))), (source.GetCurrentValue(nullableEnumU16) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16))), (source.GetCurrentValue(nullableEnumU16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16AsString))), (source.GetCurrentValue(nullableEnumU32) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32))), (source.GetCurrentValue(nullableEnumU32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32AsString))), (source.GetCurrentValue(nullableEnumU64) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64))), (source.GetCurrentValue(nullableEnumU64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64AsString))), (source.GetCurrentValue(nullableEnumU8) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8))), (source.GetCurrentValue(nullableEnumU8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8AsString))), (source.GetCurrentValue(nullableFloat) == null ? null : ((ValueComparer)(((IProperty)nullableFloat).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableFloat))), (((IEnumerable)(source.GetCurrentValue(nullableFloatArray))) == null ? null : ((float? [])(((ValueComparer>)(((IProperty)nullableFloatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableFloatArray))))))), (source.GetCurrentValue(nullableGuid) == null ? null : ((ValueComparer)(((IProperty)nullableGuid).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableGuid))), (source.GetCurrentValue(nullableIPAddress) == null ? null : ((ValueComparer)(((IProperty)nullableIPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableIPAddress))), (source.GetCurrentValue(nullableInt16) == null ? null : ((ValueComparer)(((IProperty)nullableInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt16))), (((IEnumerable)(source.GetCurrentValue(nullableInt16Array))) == null ? null : ((short? [])(((ValueComparer>)(((IProperty)nullableInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt16Array))))))), (source.GetCurrentValue(nullableInt32) == null ? null : ((ValueComparer)(((IProperty)nullableInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt32))), (((IEnumerable)(source.GetCurrentValue(nullableInt32Array))) == null ? null : ((int? [])(((ValueComparer>)(((IProperty)nullableInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt32Array))))))), (((object)(source.GetCurrentValue(nullableInt32NestedCollection))) == null ? null : ((int? [][])(((ValueComparer)(((IProperty)nullableInt32NestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableInt32NestedCollection))))))), (source.GetCurrentValue(nullableInt64) == null ? null : ((ValueComparer)(((IProperty)nullableInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt64))), (((IEnumerable)(source.GetCurrentValue(nullableInt64Array))) == null ? null : ((long? [])(((ValueComparer>)(((IProperty)nullableInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt64Array))))))), (((object)(source.GetCurrentValue>(nullableInt64NestedCollection))) == null ? null : ((List)(((ValueComparer)(((IProperty)nullableInt64NestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(nullableInt64NestedCollection))))))), (source.GetCurrentValue(nullableInt8) == null ? null : ((ValueComparer)(((IProperty)nullableInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt8))), (((IEnumerable)(source.GetCurrentValue(nullableInt8Array))) == null ? null : ((sbyte? [])(((ValueComparer>)(((IProperty)nullableInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt8Array))))))), (source.GetCurrentValue(nullablePhysicalAddress) == null ? null : ((ValueComparer)(((IProperty)nullablePhysicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullablePhysicalAddress))), (source.GetCurrentValue(nullableString) == null ? null : ((ValueComparer)(((IProperty)nullableString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableString))), (((object)(source.GetCurrentValue(nullableStringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)nullableStringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringArray))))))), (((object)(source.GetCurrentValue(nullableStringNestedCollection))) == null ? null : ((string[][])(((ValueComparer)(((IProperty)nullableStringNestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringNestedCollection))))))), (source.GetCurrentValue(nullableTimeOnly) == null ? null : ((ValueComparer)(((IProperty)nullableTimeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeOnly)))))); var entity3 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg3 = ((ISnapshot)(new Snapshot((((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))) == null ? null : ((ushort? [])(((ValueComparer>)(((IProperty)nullableUInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))))))), (source.GetCurrentValue(nullableUInt32) == null ? null : ((ValueComparer)(((IProperty)nullableUInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt32))), (((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))) == null ? null : ((uint? [])(((ValueComparer>)(((IProperty)nullableUInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))))))), (source.GetCurrentValue(nullableUInt64) == null ? null : ((ValueComparer)(((IProperty)nullableUInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt64))), (((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))) == null ? null : ((ulong? [])(((ValueComparer>)(((IProperty)nullableUInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))))))), (source.GetCurrentValue(nullableUInt8) == null ? null : ((ValueComparer)(((IProperty)nullableUInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt8))), (((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))) == null ? null : ((byte? [])(((ValueComparer>)(((IProperty)nullableUInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))))))), (source.GetCurrentValue(nullableUri) == null ? null : ((ValueComparer)(((IProperty)nullableUri).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUri))), (source.GetCurrentValue(physicalAddress) == null ? null : ((ValueComparer)(((IProperty)physicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddress))), (source.GetCurrentValue(physicalAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToBytesConverterProperty))), (source.GetCurrentValue(physicalAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToStringConverterProperty))), (source.GetCurrentValue(@string) == null ? null : ((ValueComparer)(((IProperty)@string).GetValueComparer())).Snapshot(source.GetCurrentValue(@string))), (((object)(source.GetCurrentValue(stringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)stringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringArray))))))), (((object)(source.GetCurrentValue(stringNestedCollection))) == null ? null : ((string[][])(((ValueComparer)(((IProperty)stringNestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringNestedCollection))))))), (source.GetCurrentValue(stringToBoolConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBoolConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBoolConverterProperty))), (source.GetCurrentValue(stringToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBytesConverterProperty))), (source.GetCurrentValue(stringToCharConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToCharConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToCharConverterProperty))), (source.GetCurrentValue(stringToDateOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateOnlyConverterProperty))), (source.GetCurrentValue(stringToDateTimeConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeConverterProperty))), (source.GetCurrentValue(stringToDateTimeOffsetConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeOffsetConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeOffsetConverterProperty))), (source.GetCurrentValue(stringToDecimalNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDecimalNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDecimalNumberConverterProperty))), (source.GetCurrentValue(stringToDoubleNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDoubleNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDoubleNumberConverterProperty))), (source.GetCurrentValue(stringToEnumConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToEnumConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToEnumConverterProperty))), (source.GetCurrentValue(stringToGuidConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToGuidConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToGuidConverterProperty))), (source.GetCurrentValue(stringToIntNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToIntNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToIntNumberConverterProperty))), (source.GetCurrentValue(stringToTimeOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeOnlyConverterProperty))), (source.GetCurrentValue(stringToTimeSpanConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeSpanConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeSpanConverterProperty))), (source.GetCurrentValue(stringToUriConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToUriConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToUriConverterProperty))), ((ValueComparer)(((IProperty)timeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnly)), ((ValueComparer)(((IProperty)timeOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToStringConverterProperty))))); + var liftedArg3 = ((ISnapshot)(new Snapshot, string, string, string, string, string, string, string, string, string, string, string, string, string>((source.GetCurrentValue(nullableTimeSpan) == null ? null : ((ValueComparer)(((IProperty)nullableTimeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeSpan))), (source.GetCurrentValue(nullableUInt16) == null ? null : ((ValueComparer)(((IProperty)nullableUInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt16))), (((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))) == null ? null : ((ushort? [])(((ValueComparer>)(((IProperty)nullableUInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))))))), (source.GetCurrentValue(nullableUInt32) == null ? null : ((ValueComparer)(((IProperty)nullableUInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt32))), (((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))) == null ? null : ((uint? [])(((ValueComparer>)(((IProperty)nullableUInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))))))), (source.GetCurrentValue(nullableUInt64) == null ? null : ((ValueComparer)(((IProperty)nullableUInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt64))), (((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))) == null ? null : ((ulong? [])(((ValueComparer>)(((IProperty)nullableUInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))))))), (source.GetCurrentValue(nullableUInt8) == null ? null : ((ValueComparer)(((IProperty)nullableUInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt8))), (((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))) == null ? null : ((byte? [])(((ValueComparer>)(((IProperty)nullableUInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))))))), (source.GetCurrentValue(nullableUri) == null ? null : ((ValueComparer)(((IProperty)nullableUri).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUri))), (source.GetCurrentValue(physicalAddress) == null ? null : ((ValueComparer)(((IProperty)physicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddress))), (source.GetCurrentValue(physicalAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToBytesConverterProperty))), (source.GetCurrentValue(physicalAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToStringConverterProperty))), (source.GetCurrentValue(@string) == null ? null : ((ValueComparer)(((IProperty)@string).GetValueComparer())).Snapshot(source.GetCurrentValue(@string))), (((object)(source.GetCurrentValue(stringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)stringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringArray))))))), (((object)(source.GetCurrentValue(stringNestedCollection))) == null ? null : ((string[][])(((ValueComparer)(((IProperty)stringNestedCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringNestedCollection))))))), (((object)(source.GetCurrentValue>(stringReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer)(((IProperty)stringReadOnlyCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(stringReadOnlyCollection))))))), (source.GetCurrentValue(stringToBoolConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBoolConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBoolConverterProperty))), (source.GetCurrentValue(stringToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBytesConverterProperty))), (source.GetCurrentValue(stringToCharConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToCharConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToCharConverterProperty))), (source.GetCurrentValue(stringToDateOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateOnlyConverterProperty))), (source.GetCurrentValue(stringToDateTimeConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeConverterProperty))), (source.GetCurrentValue(stringToDateTimeOffsetConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeOffsetConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeOffsetConverterProperty))), (source.GetCurrentValue(stringToDecimalNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDecimalNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDecimalNumberConverterProperty))), (source.GetCurrentValue(stringToDoubleNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDoubleNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDoubleNumberConverterProperty))), (source.GetCurrentValue(stringToEnumConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToEnumConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToEnumConverterProperty))), (source.GetCurrentValue(stringToGuidConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToGuidConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToGuidConverterProperty))), (source.GetCurrentValue(stringToIntNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToIntNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToIntNumberConverterProperty))), (source.GetCurrentValue(stringToTimeOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeOnlyConverterProperty))), (source.GetCurrentValue(stringToTimeSpanConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeSpanConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeSpanConverterProperty)))))); var entity4 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - return ((ISnapshot)(new MultiSnapshot(new ISnapshot[] { liftedArg, liftedArg0, liftedArg1, liftedArg2, liftedArg3, ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)timeOnlyToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToTicksConverterProperty)), ((ValueComparer)(((IProperty)timeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpan)), ((ValueComparer)(((IProperty)timeSpanToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToStringConverterProperty)), ((ValueComparer)(((IProperty)timeSpanToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToTicksConverterProperty)), ((ValueComparer)(((IProperty)uInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt16)), (((IEnumerable)(source.GetCurrentValue(uInt16Array))) == null ? null : ((ushort[])(((ValueComparer>)(((IProperty)uInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt16Array))))))), ((ValueComparer)(((IProperty)uInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt32)), (((IEnumerable)(source.GetCurrentValue(uInt32Array))) == null ? null : ((uint[])(((ValueComparer>)(((IProperty)uInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt32Array))))))), ((ValueComparer)(((IProperty)uInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt64)), (((IEnumerable)(source.GetCurrentValue(uInt64Array))) == null ? null : ((ulong[])(((ValueComparer>)(((IProperty)uInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt64Array))))))), ((ValueComparer)(((IProperty)uInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8)), (source.GetCurrentValue(uInt8Array) == null ? null : ((ValueComparer)(((IProperty)uInt8Array).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8Array))), (source.GetCurrentValue(uri) == null ? null : ((ValueComparer)(((IProperty)uri).GetValueComparer())).Snapshot(source.GetCurrentValue(uri))), (source.GetCurrentValue(uriToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)uriToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(uriToStringConverterProperty))), (source.GetCurrentValue(__id) == null ? null : ((ValueComparer)(((IProperty)__id).GetValueComparer())).Snapshot(source.GetCurrentValue(__id))), (source.GetCurrentValue(__jObject) == null ? null : ((ValueComparer)(((IProperty)__jObject).GetValueComparer())).Snapshot(source.GetCurrentValue(__jObject)))))) }))); + return ((ISnapshot)(new MultiSnapshot(new ISnapshot[] { liftedArg, liftedArg0, liftedArg1, liftedArg2, liftedArg3, ((ISnapshot)(new Snapshot, Uri, Uri, string, JObject>((source.GetCurrentValue(stringToUriConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToUriConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToUriConverterProperty))), ((ValueComparer)(((IProperty)timeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnly)), ((ValueComparer)(((IProperty)timeOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)timeOnlyToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToTicksConverterProperty)), ((ValueComparer)(((IProperty)timeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpan)), ((ValueComparer)(((IProperty)timeSpanToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToStringConverterProperty)), ((ValueComparer)(((IProperty)timeSpanToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToTicksConverterProperty)), ((ValueComparer)(((IProperty)uInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt16)), (((IEnumerable)(source.GetCurrentValue(uInt16Array))) == null ? null : ((ushort[])(((ValueComparer>)(((IProperty)uInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt16Array))))))), ((ValueComparer)(((IProperty)uInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt32)), (((IEnumerable)(source.GetCurrentValue(uInt32Array))) == null ? null : ((uint[])(((ValueComparer>)(((IProperty)uInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt32Array))))))), ((ValueComparer)(((IProperty)uInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt64)), (((IEnumerable)(source.GetCurrentValue(uInt64Array))) == null ? null : ((ulong[])(((ValueComparer>)(((IProperty)uInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt64Array))))))), ((ValueComparer)(((IProperty)uInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8)), (source.GetCurrentValue(uInt8Array) == null ? null : ((ValueComparer)(((IProperty)uInt8Array).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8Array))), (((IEnumerable)(source.GetCurrentValue>(uInt8ReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)uInt8ReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(uInt8ReadOnlyCollection))))))), (source.GetCurrentValue(uri) == null ? null : ((ValueComparer)(((IProperty)uri).GetValueComparer())).Snapshot(source.GetCurrentValue(uri))), (source.GetCurrentValue(uriToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)uriToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(uriToStringConverterProperty))), (source.GetCurrentValue(__id) == null ? null : ((ValueComparer)(((IProperty)__id).GetValueComparer())).Snapshot(source.GetCurrentValue(__id))), (source.GetCurrentValue(__jObject) == null ? null : ((ValueComparer)(((IProperty)__jObject).GetValueComparer())).Snapshot(source.GetCurrentValue(__jObject)))))) }))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( ISnapshot () => ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(default(CompiledModelTestBase.ManyTypesId)), (default(JObject) == null ? null : ((ValueComparer)(((IProperty)__jObject).GetValueComparer())).Snapshot(default(JObject))))))); @@ -8743,10 +8979,10 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))))); }); runtimeEntityType.Counts = new PropertyCounts( - propertyCount: 166, + propertyCount: 170, navigationCount: 0, complexPropertyCount: 0, - originalValueCount: 166, + originalValueCount: 170, shadowCount: 3, relationshipCount: 1, storeGeneratedCount: 2); diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs index b38e2d936e7..5ee3bb48112 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs @@ -25,6 +25,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref bool[][] BoolNestedCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_boolReadOnlyCollection")] + public static extern ref List _boolReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref bool BoolToStringConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -199,6 +202,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref int[][] Int32NestedCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_int32ReadOnlyCollection")] + public static extern ref List _int32ReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref long Int64(CompiledModelTestBase.ManyTypes @this); @@ -412,6 +418,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref string[][] StringNestedCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_stringReadOnlyCollection")] + public static extern ref List _stringReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref string StringToBoolConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -496,6 +505,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref byte[] UInt8Array(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_uInt8ReadOnlyCollection")] + public static extern ref List _uInt8ReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref Uri Uri(CompiledModelTestBase.ManyTypes @this); diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs index 2d447e1dba5..f0619692a37 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs @@ -32,7 +32,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas baseEntityType, discriminatorProperty: "$type", discriminatorValue: "ManyTypes", - propertyCount: 166, + propertyCount: 170, keyCount: 1); var id = runtimeEntityType.AddProperty( @@ -70,6 +70,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolNestedCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var boolReadOnlyCollection = runtimeEntityType.AddProperty( + "BoolReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_boolReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var boolToStringConverterProperty = runtimeEntityType.AddProperty( "BoolToStringConverterProperty", typeof(bool), @@ -516,6 +522,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32NestedCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var int32ReadOnlyCollection = runtimeEntityType.AddProperty( + "Int32ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_int32ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var int64 = runtimeEntityType.AddProperty( "Int64", typeof(long), @@ -991,6 +1003,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringNestedCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var stringReadOnlyCollection = runtimeEntityType.AddProperty( + "StringReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_stringReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var stringToBoolConverterProperty = runtimeEntityType.AddProperty( "StringToBoolConverterProperty", typeof(string), @@ -1189,6 +1207,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8Array", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( + "UInt8ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_uInt8ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var uri = runtimeEntityType.AddProperty( "Uri", typeof(Uri), diff --git a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/CompiledModelCosmosTest.cs b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/CompiledModelCosmosTest.cs index 26eb930ce0c..e38f8fdeb86 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Scaffolding/CompiledModelCosmosTest.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Scaffolding/CompiledModelCosmosTest.cs @@ -331,6 +331,7 @@ protected override void BuildBigModel(ModelBuilder modelBuilder, bool jsonColumn b.Ignore(e => e.NullableGuidNestedCollection); b.Ignore(e => e.UInt8NestedCollection); b.Ignore(e => e.NullableUInt8NestedCollection); + b.Ignore(e => e.IPAddressReadOnlyCollection); }); } diff --git a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs index 1af80a9af87..fa1d5745f89 100644 --- a/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs +++ b/test/EFCore.InMemory.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs @@ -27,7 +27,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes", typeof(CompiledModelTestBase.ManyTypes), baseEntityType, - propertyCount: 258, + propertyCount: 263, keyCount: 1); var id = runtimeEntityType.AddProperty( @@ -59,6 +59,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolNestedCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var boolReadOnlyCollection = runtimeEntityType.AddProperty( + "BoolReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_boolReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var boolToStringConverterProperty = runtimeEntityType.AddProperty( "BoolToStringConverterProperty", typeof(bool), @@ -711,6 +717,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("IPAddressArray", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var iPAddressReadOnlyCollection = runtimeEntityType.AddProperty( + "IPAddressReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("IPAddressReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_ipAddressReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var iPAddressToBytesConverterProperty = runtimeEntityType.AddProperty( "IPAddressToBytesConverterProperty", typeof(IPAddress), @@ -757,6 +769,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32NestedCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var int32ReadOnlyCollection = runtimeEntityType.AddProperty( + "Int32ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_int32ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var int64 = runtimeEntityType.AddProperty( "Int64", typeof(long), @@ -1526,6 +1544,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringNestedCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var stringReadOnlyCollection = runtimeEntityType.AddProperty( + "StringReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_stringReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var stringToBoolConverterProperty = runtimeEntityType.AddProperty( "StringToBoolConverterProperty", typeof(string), @@ -1742,6 +1766,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8NestedCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( + "UInt8ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_uInt8ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var uri = runtimeEntityType.AddProperty( "Uri", typeof(Uri), diff --git a/test/EFCore.Specification.Tests/Scaffolding/CompiledModelTestBase.cs b/test/EFCore.Specification.Tests/Scaffolding/CompiledModelTestBase.cs index 29a7f138fb7..cf1241ebfa7 100644 --- a/test/EFCore.Specification.Tests/Scaffolding/CompiledModelTestBase.cs +++ b/test/EFCore.Specification.Tests/Scaffolding/CompiledModelTestBase.cs @@ -221,6 +221,15 @@ protected virtual void BuildBigModel(ModelBuilder modelBuilder, bool jsonColumns b.PrimitiveCollection(e => e.EnumU32AsStringArray).ElementType(b => b.HasConversion()); b.PrimitiveCollection(e => e.EnumU64AsStringArray).ElementType(b => b.HasConversion()); + b.Property(e => e.BoolReadOnlyCollection); + b.Property(e => e.UInt8ReadOnlyCollection).HasField("_uInt8ReadOnlyCollection"); + b.Property(e => e.Int32ReadOnlyCollection); + b.Property(e => e.StringReadOnlyCollection).HasField("_stringReadOnlyCollection"); + + b.PrimitiveCollection(e => e.IPAddressReadOnlyCollection) + .ElementType(b => b.HasConversion()) + .HasField("_ipAddressReadOnlyCollection"); + b.Property(e => e.BoolToStringConverterProperty).HasConversion(new BoolToStringConverter("A", "B")); b.Property(e => e.BoolToTwoValuesConverterProperty).HasConversion(new BoolToTwoValuesConverter(0, 1)); b.Property(e => e.BoolToZeroOneConverterProperty).HasConversion>(); @@ -911,6 +920,27 @@ public class ManyTypes public IPAddress?[] NullableIPAddressArray { get; set; } = null!; public PhysicalAddress?[] NullablePhysicalAddressArray { get; set; } = null!; + private List _boolReadOnlyCollection = []; + private List _uInt8ReadOnlyCollection = []; + private List _int32ReadOnlyCollection = []; + private List _stringReadOnlyCollection = []; + private List _ipAddressReadOnlyCollection = []; + + public IReadOnlyCollection BoolReadOnlyCollection + => _boolReadOnlyCollection.ToList(); + + public IReadOnlyCollection UInt8ReadOnlyCollection + => _uInt8ReadOnlyCollection.ToList(); + + public IReadOnlyCollection Int32ReadOnlyCollection + => _int32ReadOnlyCollection.ToList(); + + public IReadOnlyCollection StringReadOnlyCollection + => _stringReadOnlyCollection.ToList(); + + public IReadOnlyCollection IPAddressReadOnlyCollection + => _ipAddressReadOnlyCollection.ToList(); + public Enum8 Enum8 { get; set; } public Enum16 Enum16 { get; set; } public Enum32 Enum32 { get; set; } diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs index 6f51ca35f4f..8faca370257 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs @@ -194,6 +194,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Bool", boolColumnBase); var boolArrayColumnBase = new ColumnBase("BoolArray", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolArray", boolArrayColumnBase); + var boolReadOnlyCollectionColumnBase = new ColumnBase("BoolReadOnlyCollection", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolReadOnlyCollection", boolReadOnlyCollectionColumnBase); var boolToStringConverterPropertyColumnBase = new ColumnBase("BoolToStringConverterProperty", "nvarchar(1)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolToStringConverterProperty", boolToStringConverterPropertyColumnBase); var boolToTwoValuesConverterPropertyColumnBase = new ColumnBase("BoolToTwoValuesConverterProperty", "tinyint", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -368,6 +370,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddress", iPAddressColumnBase); var iPAddressArrayColumnBase = new ColumnBase("IPAddressArray", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressArray", iPAddressArrayColumnBase); + var iPAddressReadOnlyCollectionColumnBase = new ColumnBase("IPAddressReadOnlyCollection", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressReadOnlyCollection", iPAddressReadOnlyCollectionColumnBase); var iPAddressToBytesConverterPropertyColumnBase = new ColumnBase("IPAddressToBytesConverterProperty", "varbinary(16)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressToBytesConverterProperty", iPAddressToBytesConverterPropertyColumnBase); var iPAddressToStringConverterPropertyColumnBase = new ColumnBase("IPAddressToStringConverterProperty", "nvarchar(45)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -382,6 +386,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32", int32ColumnBase); var int32ArrayColumnBase = new ColumnBase("Int32Array", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32Array", int32ArrayColumnBase); + var int32ReadOnlyCollectionColumnBase = new ColumnBase("Int32ReadOnlyCollection", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32ReadOnlyCollection", int32ReadOnlyCollectionColumnBase); var int64ColumnBase = new ColumnBase("Int64", "bigint", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int64", int64ColumnBase); var int64ArrayColumnBase = new ColumnBase("Int64Array", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -716,6 +722,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("String", stringColumnBase); var stringArrayColumnBase = new ColumnBase("StringArray", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringArray", stringArrayColumnBase); + var stringReadOnlyCollectionColumnBase = new ColumnBase("StringReadOnlyCollection", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringReadOnlyCollection", stringReadOnlyCollectionColumnBase); var stringToBoolConverterPropertyColumnBase = new ColumnBase("StringToBoolConverterProperty", "bit", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringToBoolConverterProperty", stringToBoolConverterPropertyColumnBase); var stringToBytesConverterPropertyColumnBase = new ColumnBase("StringToBytesConverterProperty", "varbinary(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase) @@ -779,6 +787,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8", uInt8ColumnBase); var uInt8ArrayColumnBase = new ColumnBase("UInt8Array", "varbinary(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8Array", uInt8ArrayColumnBase); + var uInt8ReadOnlyCollectionColumnBase = new ColumnBase("UInt8ReadOnlyCollection", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8ReadOnlyCollection", uInt8ReadOnlyCollectionColumnBase); var uriColumnBase = new ColumnBase("Uri", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Uri", uriColumnBase); var uriArrayColumnBase = new ColumnBase("UriArray", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -792,6 +802,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)idColumnBase0, manyTypes.FindProperty("Id")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolColumnBase, manyTypes.FindProperty("Bool")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolArrayColumnBase, manyTypes.FindProperty("BoolArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)boolReadOnlyCollectionColumnBase, manyTypes.FindProperty("BoolReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToStringConverterPropertyColumnBase, manyTypes.FindProperty("BoolToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToTwoValuesConverterPropertyColumnBase, manyTypes.FindProperty("BoolToTwoValuesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToZeroOneConverterPropertyColumnBase, manyTypes.FindProperty("BoolToZeroOneConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -879,12 +890,14 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)guidToStringConverterPropertyColumnBase, manyTypes.FindProperty("GuidToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressColumnBase, manyTypes.FindProperty("IPAddress")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressArrayColumnBase, manyTypes.FindProperty("IPAddressArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)iPAddressReadOnlyCollectionColumnBase, manyTypes.FindProperty("IPAddressReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressToBytesConverterPropertyColumnBase, manyTypes.FindProperty("IPAddressToBytesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressToStringConverterPropertyColumnBase, manyTypes.FindProperty("IPAddressToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int16ColumnBase, manyTypes.FindProperty("Int16")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int16ArrayColumnBase, manyTypes.FindProperty("Int16Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int32ColumnBase, manyTypes.FindProperty("Int32")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int32ArrayColumnBase, manyTypes.FindProperty("Int32Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)int32ReadOnlyCollectionColumnBase, manyTypes.FindProperty("Int32ReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int64ColumnBase, manyTypes.FindProperty("Int64")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int64ArrayColumnBase, manyTypes.FindProperty("Int64Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int8ColumnBase, manyTypes.FindProperty("Int8")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -992,6 +1005,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)physicalAddressToStringConverterPropertyColumnBase, manyTypes.FindProperty("PhysicalAddressToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringColumnBase, manyTypes.FindProperty("String")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringArrayColumnBase, manyTypes.FindProperty("StringArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)stringReadOnlyCollectionColumnBase, manyTypes.FindProperty("StringReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToBoolConverterPropertyColumnBase, manyTypes.FindProperty("StringToBoolConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToBytesConverterPropertyColumnBase, manyTypes.FindProperty("StringToBytesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToCharConverterPropertyColumnBase, manyTypes.FindProperty("StringToCharConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -1022,6 +1036,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)uInt64ArrayColumnBase, manyTypes.FindProperty("UInt64Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uInt8ColumnBase, manyTypes.FindProperty("UInt8")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uInt8ArrayColumnBase, manyTypes.FindProperty("UInt8Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)uInt8ReadOnlyCollectionColumnBase, manyTypes.FindProperty("UInt8ReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriColumnBase, manyTypes.FindProperty("Uri")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriArrayColumnBase, manyTypes.FindProperty("UriArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriToStringConverterPropertyColumnBase, manyTypes.FindProperty("UriToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -1038,6 +1053,9 @@ private IRelationalModel CreateRelationalModel() var boolArrayColumn = new Column("BoolArray", "nvarchar(max)", manyTypesTable); manyTypesTable.Columns.Add("BoolArray", boolArrayColumn); boolArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolArrayColumn); + var boolReadOnlyCollectionColumn = new Column("BoolReadOnlyCollection", "nvarchar(max)", manyTypesTable); + manyTypesTable.Columns.Add("BoolReadOnlyCollection", boolReadOnlyCollectionColumn); + boolReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolReadOnlyCollectionColumn); var boolToStringConverterPropertyColumn = new Column("BoolToStringConverterProperty", "nvarchar(1)", manyTypesTable); manyTypesTable.Columns.Add("BoolToStringConverterProperty", boolToStringConverterPropertyColumn); boolToStringConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolToStringConverterPropertyColumn); @@ -1299,6 +1317,9 @@ private IRelationalModel CreateRelationalModel() var iPAddressArrayColumn = new Column("IPAddressArray", "nvarchar(max)", manyTypesTable); manyTypesTable.Columns.Add("IPAddressArray", iPAddressArrayColumn); iPAddressArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressArrayColumn); + var iPAddressReadOnlyCollectionColumn = new Column("IPAddressReadOnlyCollection", "nvarchar(max)", manyTypesTable); + manyTypesTable.Columns.Add("IPAddressReadOnlyCollection", iPAddressReadOnlyCollectionColumn); + iPAddressReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressReadOnlyCollectionColumn); var iPAddressToBytesConverterPropertyColumn = new Column("IPAddressToBytesConverterProperty", "varbinary(16)", manyTypesTable); manyTypesTable.Columns.Add("IPAddressToBytesConverterProperty", iPAddressToBytesConverterPropertyColumn); iPAddressToBytesConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressToBytesConverterPropertyColumn); @@ -1317,6 +1338,9 @@ private IRelationalModel CreateRelationalModel() var int32ArrayColumn = new Column("Int32Array", "nvarchar(max)", manyTypesTable); manyTypesTable.Columns.Add("Int32Array", int32ArrayColumn); int32ArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(int32ArrayColumn); + var int32ReadOnlyCollectionColumn = new Column("Int32ReadOnlyCollection", "nvarchar(max)", manyTypesTable); + manyTypesTable.Columns.Add("Int32ReadOnlyCollection", int32ReadOnlyCollectionColumn); + int32ReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(int32ReadOnlyCollectionColumn); var int64Column = new Column("Int64", "bigint", manyTypesTable); manyTypesTable.Columns.Add("Int64", int64Column); int64Column.Accessors = ColumnAccessorsFactory.CreateGeneric(int64Column); @@ -1758,6 +1782,9 @@ private IRelationalModel CreateRelationalModel() var stringArrayColumn = new Column("StringArray", "nvarchar(max)", manyTypesTable); manyTypesTable.Columns.Add("StringArray", stringArrayColumn); stringArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringArrayColumn); + var stringReadOnlyCollectionColumn = new Column("StringReadOnlyCollection", "nvarchar(max)", manyTypesTable); + manyTypesTable.Columns.Add("StringReadOnlyCollection", stringReadOnlyCollectionColumn); + stringReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringReadOnlyCollectionColumn); var stringToBoolConverterPropertyColumn = new Column("StringToBoolConverterProperty", "bit", manyTypesTable); manyTypesTable.Columns.Add("StringToBoolConverterProperty", stringToBoolConverterPropertyColumn); stringToBoolConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringToBoolConverterPropertyColumn); @@ -1851,6 +1878,9 @@ private IRelationalModel CreateRelationalModel() var uInt8ArrayColumn = new Column("UInt8Array", "varbinary(max)", manyTypesTable); manyTypesTable.Columns.Add("UInt8Array", uInt8ArrayColumn); uInt8ArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uInt8ArrayColumn); + var uInt8ReadOnlyCollectionColumn = new Column("UInt8ReadOnlyCollection", "nvarchar(max)", manyTypesTable); + manyTypesTable.Columns.Add("UInt8ReadOnlyCollection", uInt8ReadOnlyCollectionColumn); + uInt8ReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uInt8ReadOnlyCollectionColumn); var uriColumn = new Column("Uri", "nvarchar(max)", manyTypesTable); manyTypesTable.Columns.Add("Uri", uriColumn); uriColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uriColumn); @@ -1867,6 +1897,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(idColumn0, manyTypes.FindProperty("Id")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolColumn, manyTypes.FindProperty("Bool")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolArrayColumn, manyTypes.FindProperty("BoolArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(boolReadOnlyCollectionColumn, manyTypes.FindProperty("BoolReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToStringConverterPropertyColumn, manyTypes.FindProperty("BoolToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToTwoValuesConverterPropertyColumn, manyTypes.FindProperty("BoolToTwoValuesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToZeroOneConverterPropertyColumn, manyTypes.FindProperty("BoolToZeroOneConverterProperty")!, manyTypesTableMapping); @@ -1954,12 +1985,14 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(guidToStringConverterPropertyColumn, manyTypes.FindProperty("GuidToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressColumn, manyTypes.FindProperty("IPAddress")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressArrayColumn, manyTypes.FindProperty("IPAddressArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(iPAddressReadOnlyCollectionColumn, manyTypes.FindProperty("IPAddressReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressToBytesConverterPropertyColumn, manyTypes.FindProperty("IPAddressToBytesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressToStringConverterPropertyColumn, manyTypes.FindProperty("IPAddressToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int16Column, manyTypes.FindProperty("Int16")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int16ArrayColumn, manyTypes.FindProperty("Int16Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int32Column, manyTypes.FindProperty("Int32")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int32ArrayColumn, manyTypes.FindProperty("Int32Array")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(int32ReadOnlyCollectionColumn, manyTypes.FindProperty("Int32ReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int64Column, manyTypes.FindProperty("Int64")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int64ArrayColumn, manyTypes.FindProperty("Int64Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int8Column, manyTypes.FindProperty("Int8")!, manyTypesTableMapping); @@ -2067,6 +2100,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(physicalAddressToStringConverterPropertyColumn, manyTypes.FindProperty("PhysicalAddressToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringColumn, manyTypes.FindProperty("String")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringArrayColumn, manyTypes.FindProperty("StringArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(stringReadOnlyCollectionColumn, manyTypes.FindProperty("StringReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToBoolConverterPropertyColumn, manyTypes.FindProperty("StringToBoolConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToBytesConverterPropertyColumn, manyTypes.FindProperty("StringToBytesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToCharConverterPropertyColumn, manyTypes.FindProperty("StringToCharConverterProperty")!, manyTypesTableMapping); @@ -2097,6 +2131,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(uInt64ArrayColumn, manyTypes.FindProperty("UInt64Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uInt8Column, manyTypes.FindProperty("UInt8")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uInt8ArrayColumn, manyTypes.FindProperty("UInt8Array")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(uInt8ReadOnlyCollectionColumn, manyTypes.FindProperty("UInt8ReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriColumn, manyTypes.FindProperty("Uri")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriArrayColumn, manyTypes.FindProperty("UriArray")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriToStringConverterPropertyColumn, manyTypes.FindProperty("UriToStringConverterProperty")!, manyTypesTableMapping); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs index ebd7aee13f6..0da710b64b0 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs @@ -131,7 +131,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); + var entity8 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), ((ValueComparer)(((IProperty)enumDiscriminator).GetValueComparer())).Snapshot(source.GetCurrentValue(enumDiscriminator)), (source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), (source.GetCurrentValue(data) == null ? null : ((ValueComparer)(((IProperty)data).GetValueComparer())).Snapshot(source.GetCurrentValue(data))), ((ValueComparer)(((IProperty)money).GetValueComparer())).Snapshot(source.GetCurrentValue(money))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -145,8 +145,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); - return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), DependentBaseUnsafeAccessors.Principal(entity7)))); + var entity8 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); + return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), DependentBaseUnsafeAccessors.Principal(entity8)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 6, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs index 7363b3af85d..e36b79214b3 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs @@ -34,7 +34,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes", typeof(CompiledModelTestBase.ManyTypes), baseEntityType, - propertyCount: 236, + propertyCount: 241, keyCount: 1); var id = runtimeEntityType.AddProperty( @@ -196,6 +196,69 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bool (bool v) => v))); boolArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var boolReadOnlyCollection = runtimeEntityType.AddProperty( + "BoolReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_boolReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + boolReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance) == null); + boolReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) = ((List)(value))); + boolReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) = ((List)(value))); + boolReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(boolReadOnlyCollection, 3), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(boolReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[3]); + boolReadOnlyCollection.SetPropertyIndexes( + index: 3, + originalValueIndex: 3, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + boolReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, bool>(new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v)), + keyComparer: new ListOfValueTypesComparer, bool>(new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, bool>( + JsonBoolReaderWriter.Instance)), + storeTypePostfix: StoreTypePostfix.None, + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, bool>( + JsonBoolReaderWriter.Instance), + elementMapping: SqlServerBoolTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + keyComparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + providerValueComparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v))); + boolReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var boolToStringConverterProperty = runtimeEntityType.AddProperty( "BoolToStringConverterProperty", typeof(bool), @@ -213,12 +276,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToStringConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToStringConverterProperty, 3), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToStringConverterProperty, 4), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[3]); + object (ValueBuffer valueBuffer) => valueBuffer[4]); boolToStringConverterProperty.SetPropertyIndexes( - index: 3, - originalValueIndex: 3, + index: 4, + originalValueIndex: 4, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -268,12 +331,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToTwoValuesConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToTwoValuesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToTwoValuesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToTwoValuesConverterProperty, 4), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToTwoValuesConverterProperty, 5), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToTwoValuesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[4]); + object (ValueBuffer valueBuffer) => valueBuffer[5]); boolToTwoValuesConverterProperty.SetPropertyIndexes( - index: 4, - originalValueIndex: 4, + index: 5, + originalValueIndex: 5, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -319,12 +382,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToZeroOneConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToZeroOneConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToZeroOneConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToZeroOneConverterProperty, 5), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToZeroOneConverterProperty, 6), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToZeroOneConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[5]); + object (ValueBuffer valueBuffer) => valueBuffer[6]); boolToZeroOneConverterProperty.SetPropertyIndexes( - index: 5, - originalValueIndex: 5, + index: 6, + originalValueIndex: 6, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -369,12 +432,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytes.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Bytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Bytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytes, 6), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytes, 7), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(bytes), - object (ValueBuffer valueBuffer) => valueBuffer[6]); + object (ValueBuffer valueBuffer) => valueBuffer[7]); bytes.SetPropertyIndexes( - index: 6, - originalValueIndex: 6, + index: 7, + originalValueIndex: 7, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -413,12 +476,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytesArray.SetAccessors( byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesArray, 7), + byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesArray, 8), byte[][] (InternalEntityEntry entry) => entry.GetCurrentValue(bytesArray), - object (ValueBuffer valueBuffer) => valueBuffer[7]); + object (ValueBuffer valueBuffer) => valueBuffer[8]); bytesArray.SetPropertyIndexes( - index: 7, - originalValueIndex: 7, + index: 8, + originalValueIndex: 8, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -481,12 +544,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytesToStringConverterProperty.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesToStringConverterProperty, 8), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesToStringConverterProperty, 9), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(bytesToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[8]); + object (ValueBuffer valueBuffer) => valueBuffer[9]); bytesToStringConverterProperty.SetPropertyIndexes( - index: 8, - originalValueIndex: 8, + index: 9, + originalValueIndex: 9, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -536,12 +599,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas castingConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CastingConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CastingConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(castingConverterProperty, 9), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(castingConverterProperty, 10), int (InternalEntityEntry entry) => entry.GetCurrentValue(castingConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[9]); + object (ValueBuffer valueBuffer) => valueBuffer[10]); castingConverterProperty.SetPropertyIndexes( - index: 9, - originalValueIndex: 9, + index: 10, + originalValueIndex: 10, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -586,12 +649,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @char.SetAccessors( char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Char(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Char(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char (InternalEntityEntry entry) => entry.ReadOriginalValue(@char, 10), + char (InternalEntityEntry entry) => entry.ReadOriginalValue(@char, 11), char (InternalEntityEntry entry) => entry.GetCurrentValue(@char), - object (ValueBuffer valueBuffer) => valueBuffer[10]); + object (ValueBuffer valueBuffer) => valueBuffer[11]); @char.SetPropertyIndexes( - index: 10, - originalValueIndex: 10, + index: 11, + originalValueIndex: 11, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -641,12 +704,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas charArray.SetAccessors( char[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char[] (InternalEntityEntry entry) => entry.ReadOriginalValue(charArray, 11), + char[] (InternalEntityEntry entry) => entry.ReadOriginalValue(charArray, 12), char[] (InternalEntityEntry entry) => entry.GetCurrentValue(charArray), - object (ValueBuffer valueBuffer) => valueBuffer[11]); + object (ValueBuffer valueBuffer) => valueBuffer[12]); charArray.SetPropertyIndexes( - index: 11, - originalValueIndex: 11, + index: 12, + originalValueIndex: 12, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -726,12 +789,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas charToStringConverterProperty.SetAccessors( char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char (InternalEntityEntry entry) => entry.ReadOriginalValue(charToStringConverterProperty, 12), + char (InternalEntityEntry entry) => entry.ReadOriginalValue(charToStringConverterProperty, 13), char (InternalEntityEntry entry) => entry.GetCurrentValue(charToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[12]); + object (ValueBuffer valueBuffer) => valueBuffer[13]); charToStringConverterProperty.SetPropertyIndexes( - index: 12, - originalValueIndex: 12, + index: 13, + originalValueIndex: 13, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -784,12 +847,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnly.SetAccessors( DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnly, 13), + DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnly, 14), DateOnly (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnly), - object (ValueBuffer valueBuffer) => valueBuffer[13]); + object (ValueBuffer valueBuffer) => valueBuffer[14]); dateOnly.SetPropertyIndexes( - index: 13, - originalValueIndex: 13, + index: 14, + originalValueIndex: 14, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -825,12 +888,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnlyArray.SetAccessors( DateOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyArray, 14), + DateOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyArray, 15), DateOnly[] (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[14]); + object (ValueBuffer valueBuffer) => valueBuffer[15]); dateOnlyArray.SetPropertyIndexes( - index: 14, - originalValueIndex: 14, + index: 15, + originalValueIndex: 15, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -889,12 +952,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnlyToStringConverterProperty.SetAccessors( DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyToStringConverterProperty, 15), + DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyToStringConverterProperty, 16), DateOnly (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnlyToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[15]); + object (ValueBuffer valueBuffer) => valueBuffer[16]); dateOnlyToStringConverterProperty.SetPropertyIndexes( - index: 15, - originalValueIndex: 15, + index: 16, + originalValueIndex: 16, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -945,12 +1008,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTime.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTime, 16), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTime, 17), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTime), - object (ValueBuffer valueBuffer) => valueBuffer[16]); + object (ValueBuffer valueBuffer) => valueBuffer[17]); dateTime.SetPropertyIndexes( - index: 16, - originalValueIndex: 16, + index: 17, + originalValueIndex: 17, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -986,12 +1049,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeArray.SetAccessors( DateTime[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeArray, 17), + DateTime[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeArray, 18), DateTime[] (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeArray), - object (ValueBuffer valueBuffer) => valueBuffer[17]); + object (ValueBuffer valueBuffer) => valueBuffer[18]); dateTimeArray.SetPropertyIndexes( - index: 17, - originalValueIndex: 17, + index: 18, + originalValueIndex: 18, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1050,12 +1113,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToBinaryConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBinaryConverterProperty, 18), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBinaryConverterProperty, 19), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[18]); + object (ValueBuffer valueBuffer) => valueBuffer[19]); dateTimeOffsetToBinaryConverterProperty.SetPropertyIndexes( - index: 18, - originalValueIndex: 18, + index: 19, + originalValueIndex: 19, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1101,12 +1164,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToBytesConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBytesConverterProperty, 19), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBytesConverterProperty, 20), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[19]); + object (ValueBuffer valueBuffer) => valueBuffer[20]); dateTimeOffsetToBytesConverterProperty.SetPropertyIndexes( - index: 19, - originalValueIndex: 19, + index: 20, + originalValueIndex: 20, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1155,12 +1218,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToStringConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToStringConverterProperty, 20), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToStringConverterProperty, 21), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[20]); + object (ValueBuffer valueBuffer) => valueBuffer[21]); dateTimeOffsetToStringConverterProperty.SetPropertyIndexes( - index: 20, - originalValueIndex: 20, + index: 21, + originalValueIndex: 21, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1211,12 +1274,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToBinaryConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToBinaryConverterProperty, 21), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToBinaryConverterProperty, 22), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToBinaryConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[21]); + object (ValueBuffer valueBuffer) => valueBuffer[22]); dateTimeToBinaryConverterProperty.SetPropertyIndexes( - index: 21, - originalValueIndex: 21, + index: 22, + originalValueIndex: 22, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1262,12 +1325,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToStringConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToStringConverterProperty, 22), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToStringConverterProperty, 23), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[22]); + object (ValueBuffer valueBuffer) => valueBuffer[23]); dateTimeToStringConverterProperty.SetPropertyIndexes( - index: 22, - originalValueIndex: 22, + index: 23, + originalValueIndex: 23, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1318,12 +1381,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToTicksConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToTicksConverterProperty, 23), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToTicksConverterProperty, 24), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[23]); + object (ValueBuffer valueBuffer) => valueBuffer[24]); dateTimeToTicksConverterProperty.SetPropertyIndexes( - index: 23, - originalValueIndex: 23, + index: 24, + originalValueIndex: 24, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1360,12 +1423,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @decimal.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Decimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Decimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(@decimal, 24), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(@decimal, 25), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(@decimal), - object (ValueBuffer valueBuffer) => valueBuffer[24]); + object (ValueBuffer valueBuffer) => valueBuffer[25]); @decimal.SetPropertyIndexes( - index: 24, - originalValueIndex: 24, + index: 25, + originalValueIndex: 25, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1401,12 +1464,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalArray.SetAccessors( decimal[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal[] (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalArray, 25), + decimal[] (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalArray, 26), decimal[] (InternalEntityEntry entry) => entry.GetCurrentValue(decimalArray), - object (ValueBuffer valueBuffer) => valueBuffer[25]); + object (ValueBuffer valueBuffer) => valueBuffer[26]); decimalArray.SetPropertyIndexes( - index: 25, - originalValueIndex: 25, + index: 26, + originalValueIndex: 26, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1465,12 +1528,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalNumberToBytesConverterProperty.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToBytesConverterProperty, 26), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToBytesConverterProperty, 27), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(decimalNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[26]); + object (ValueBuffer valueBuffer) => valueBuffer[27]); decimalNumberToBytesConverterProperty.SetPropertyIndexes( - index: 26, - originalValueIndex: 26, + index: 27, + originalValueIndex: 27, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1519,12 +1582,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalNumberToStringConverterProperty.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToStringConverterProperty, 27), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToStringConverterProperty, 28), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(decimalNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[27]); + object (ValueBuffer valueBuffer) => valueBuffer[28]); decimalNumberToStringConverterProperty.SetPropertyIndexes( - index: 27, - originalValueIndex: 27, + index: 28, + originalValueIndex: 28, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1575,12 +1638,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @double.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Double(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Double(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(@double, 28), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(@double, 29), double (InternalEntityEntry entry) => entry.GetCurrentValue(@double), - object (ValueBuffer valueBuffer) => valueBuffer[28]); + object (ValueBuffer valueBuffer) => valueBuffer[29]); @double.SetPropertyIndexes( - index: 28, - originalValueIndex: 28, + index: 29, + originalValueIndex: 29, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1616,12 +1679,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleArray.SetAccessors( double[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double[] (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleArray, 29), + double[] (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleArray, 30), double[] (InternalEntityEntry entry) => entry.GetCurrentValue(doubleArray), - object (ValueBuffer valueBuffer) => valueBuffer[29]); + object (ValueBuffer valueBuffer) => valueBuffer[30]); doubleArray.SetPropertyIndexes( - index: 29, - originalValueIndex: 29, + index: 30, + originalValueIndex: 30, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1680,12 +1743,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleNumberToBytesConverterProperty.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToBytesConverterProperty, 30), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToBytesConverterProperty, 31), double (InternalEntityEntry entry) => entry.GetCurrentValue(doubleNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[30]); + object (ValueBuffer valueBuffer) => valueBuffer[31]); doubleNumberToBytesConverterProperty.SetPropertyIndexes( - index: 30, - originalValueIndex: 30, + index: 31, + originalValueIndex: 31, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1734,12 +1797,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleNumberToStringConverterProperty.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToStringConverterProperty, 31), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToStringConverterProperty, 32), double (InternalEntityEntry entry) => entry.GetCurrentValue(doubleNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[31]); + object (ValueBuffer valueBuffer) => valueBuffer[32]); doubleNumberToStringConverterProperty.SetPropertyIndexes( - index: 31, - originalValueIndex: 31, + index: 32, + originalValueIndex: 32, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1789,12 +1852,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16.SetAccessors( CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16, 32), + CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16, 33), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.GetCurrentValue(enum16), - object (ValueBuffer valueBuffer) => valueBuffer[32]); + object (ValueBuffer valueBuffer) => valueBuffer[33]); enum16.SetPropertyIndexes( - index: 32, - originalValueIndex: 32, + index: 33, + originalValueIndex: 33, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1839,12 +1902,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16Array.SetAccessors( CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16Array, 33), + CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16Array, 34), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum16Array), - object (ValueBuffer valueBuffer) => valueBuffer[33]); + object (ValueBuffer valueBuffer) => valueBuffer[34]); enum16Array.SetPropertyIndexes( - index: 33, - originalValueIndex: 33, + index: 34, + originalValueIndex: 34, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1919,12 +1982,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsString.SetAccessors( CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsString, 34), + CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsString, 35), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.GetCurrentValue(enum16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[34]); + object (ValueBuffer valueBuffer) => valueBuffer[35]); enum16AsString.SetPropertyIndexes( - index: 34, - originalValueIndex: 34, + index: 35, + originalValueIndex: 35, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1974,12 +2037,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsStringArray.SetAccessors( CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsStringArray, 35), + CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsStringArray, 36), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[35]); + object (ValueBuffer valueBuffer) => valueBuffer[36]); enum16AsStringArray.SetPropertyIndexes( - index: 35, - originalValueIndex: 35, + index: 36, + originalValueIndex: 36, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2058,12 +2121,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16AsStringCollection, 36), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16AsStringCollection, 37), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[36]); + object (ValueBuffer valueBuffer) => valueBuffer[37]); enum16AsStringCollection.SetPropertyIndexes( - index: 36, - originalValueIndex: 36, + index: 37, + originalValueIndex: 37, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2142,12 +2205,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16Collection, 37), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16Collection, 38), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[37]); + object (ValueBuffer valueBuffer) => valueBuffer[38]); enum16Collection.SetPropertyIndexes( - index: 37, - originalValueIndex: 37, + index: 38, + originalValueIndex: 38, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2221,12 +2284,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32, 38), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32, 39), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enum32), - object (ValueBuffer valueBuffer) => valueBuffer[38]); + object (ValueBuffer valueBuffer) => valueBuffer[39]); enum32.SetPropertyIndexes( - index: 38, - originalValueIndex: 38, + index: 39, + originalValueIndex: 39, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2271,12 +2334,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32Array.SetAccessors( CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32Array, 39), + CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32Array, 40), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum32Array), - object (ValueBuffer valueBuffer) => valueBuffer[39]); + object (ValueBuffer valueBuffer) => valueBuffer[40]); enum32Array.SetPropertyIndexes( - index: 39, - originalValueIndex: 39, + index: 40, + originalValueIndex: 40, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2351,12 +2414,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsString.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsString, 40), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsString, 41), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enum32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[40]); + object (ValueBuffer valueBuffer) => valueBuffer[41]); enum32AsString.SetPropertyIndexes( - index: 40, - originalValueIndex: 40, + index: 41, + originalValueIndex: 41, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2406,12 +2469,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsStringArray.SetAccessors( CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsStringArray, 41), + CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsStringArray, 42), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[41]); + object (ValueBuffer valueBuffer) => valueBuffer[42]); enum32AsStringArray.SetPropertyIndexes( - index: 41, - originalValueIndex: 41, + index: 42, + originalValueIndex: 42, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2490,12 +2553,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32AsStringCollection, 42), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32AsStringCollection, 43), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[42]); + object (ValueBuffer valueBuffer) => valueBuffer[43]); enum32AsStringCollection.SetPropertyIndexes( - index: 42, - originalValueIndex: 42, + index: 43, + originalValueIndex: 43, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2574,12 +2637,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32Collection, 43), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32Collection, 44), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[43]); + object (ValueBuffer valueBuffer) => valueBuffer[44]); enum32Collection.SetPropertyIndexes( - index: 43, - originalValueIndex: 43, + index: 44, + originalValueIndex: 44, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2653,12 +2716,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64.SetAccessors( CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64, 44), + CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64, 45), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.GetCurrentValue(enum64), - object (ValueBuffer valueBuffer) => valueBuffer[44]); + object (ValueBuffer valueBuffer) => valueBuffer[45]); enum64.SetPropertyIndexes( - index: 44, - originalValueIndex: 44, + index: 45, + originalValueIndex: 45, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2703,12 +2766,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64Array.SetAccessors( CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64Array, 45), + CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64Array, 46), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum64Array), - object (ValueBuffer valueBuffer) => valueBuffer[45]); + object (ValueBuffer valueBuffer) => valueBuffer[46]); enum64Array.SetPropertyIndexes( - index: 45, - originalValueIndex: 45, + index: 46, + originalValueIndex: 46, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2783,12 +2846,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsString.SetAccessors( CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsString, 46), + CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsString, 47), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.GetCurrentValue(enum64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[46]); + object (ValueBuffer valueBuffer) => valueBuffer[47]); enum64AsString.SetPropertyIndexes( - index: 46, - originalValueIndex: 46, + index: 47, + originalValueIndex: 47, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2838,12 +2901,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsStringArray.SetAccessors( CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsStringArray, 47), + CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsStringArray, 48), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[47]); + object (ValueBuffer valueBuffer) => valueBuffer[48]); enum64AsStringArray.SetPropertyIndexes( - index: 47, - originalValueIndex: 47, + index: 48, + originalValueIndex: 48, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2922,12 +2985,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64AsStringCollection, 48), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64AsStringCollection, 49), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[48]); + object (ValueBuffer valueBuffer) => valueBuffer[49]); enum64AsStringCollection.SetPropertyIndexes( - index: 48, - originalValueIndex: 48, + index: 49, + originalValueIndex: 49, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3006,12 +3069,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64Collection, 49), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64Collection, 50), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[49]); + object (ValueBuffer valueBuffer) => valueBuffer[50]); enum64Collection.SetPropertyIndexes( - index: 49, - originalValueIndex: 49, + index: 50, + originalValueIndex: 50, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3085,12 +3148,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8.SetAccessors( CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8, 50), + CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8, 51), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.GetCurrentValue(enum8), - object (ValueBuffer valueBuffer) => valueBuffer[50]); + object (ValueBuffer valueBuffer) => valueBuffer[51]); enum8.SetPropertyIndexes( - index: 50, - originalValueIndex: 50, + index: 51, + originalValueIndex: 51, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3135,12 +3198,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8Array.SetAccessors( CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8Array, 51), + CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8Array, 52), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum8Array), - object (ValueBuffer valueBuffer) => valueBuffer[51]); + object (ValueBuffer valueBuffer) => valueBuffer[52]); enum8Array.SetPropertyIndexes( - index: 51, - originalValueIndex: 51, + index: 52, + originalValueIndex: 52, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3215,12 +3278,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsString.SetAccessors( CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsString, 52), + CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsString, 53), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.GetCurrentValue(enum8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[52]); + object (ValueBuffer valueBuffer) => valueBuffer[53]); enum8AsString.SetPropertyIndexes( - index: 52, - originalValueIndex: 52, + index: 53, + originalValueIndex: 53, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3270,12 +3333,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsStringArray.SetAccessors( CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsStringArray, 53), + CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsStringArray, 54), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[53]); + object (ValueBuffer valueBuffer) => valueBuffer[54]); enum8AsStringArray.SetPropertyIndexes( - index: 53, - originalValueIndex: 53, + index: 54, + originalValueIndex: 54, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3354,12 +3417,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8AsStringCollection, 54), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8AsStringCollection, 55), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[54]); + object (ValueBuffer valueBuffer) => valueBuffer[55]); enum8AsStringCollection.SetPropertyIndexes( - index: 54, - originalValueIndex: 54, + index: 55, + originalValueIndex: 55, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3438,12 +3501,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8Collection, 55), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8Collection, 56), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[55]); + object (ValueBuffer valueBuffer) => valueBuffer[56]); enum8Collection.SetPropertyIndexes( - index: 55, - originalValueIndex: 55, + index: 56, + originalValueIndex: 56, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3518,12 +3581,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumToNumberConverterProperty.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToNumberConverterProperty, 56), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToNumberConverterProperty, 57), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumToNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[56]); + object (ValueBuffer valueBuffer) => valueBuffer[57]); enumToNumberConverterProperty.SetPropertyIndexes( - index: 56, - originalValueIndex: 56, + index: 57, + originalValueIndex: 57, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3569,12 +3632,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumToStringConverterProperty.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToStringConverterProperty, 57), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToStringConverterProperty, 58), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[57]); + object (ValueBuffer valueBuffer) => valueBuffer[58]); enumToStringConverterProperty.SetPropertyIndexes( - index: 57, - originalValueIndex: 57, + index: 58, + originalValueIndex: 58, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3624,12 +3687,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16.SetAccessors( CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16, 58), + CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16, 59), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16), - object (ValueBuffer valueBuffer) => valueBuffer[58]); + object (ValueBuffer valueBuffer) => valueBuffer[59]); enumU16.SetPropertyIndexes( - index: 58, - originalValueIndex: 58, + index: 59, + originalValueIndex: 59, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3674,12 +3737,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16Array.SetAccessors( CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16Array, 59), + CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16Array, 60), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16Array), - object (ValueBuffer valueBuffer) => valueBuffer[59]); + object (ValueBuffer valueBuffer) => valueBuffer[60]); enumU16Array.SetPropertyIndexes( - index: 59, - originalValueIndex: 59, + index: 60, + originalValueIndex: 60, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3754,12 +3817,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsString.SetAccessors( CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsString, 60), + CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsString, 61), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[60]); + object (ValueBuffer valueBuffer) => valueBuffer[61]); enumU16AsString.SetPropertyIndexes( - index: 60, - originalValueIndex: 60, + index: 61, + originalValueIndex: 61, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3809,12 +3872,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsStringArray.SetAccessors( CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsStringArray, 61), + CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsStringArray, 62), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[61]); + object (ValueBuffer valueBuffer) => valueBuffer[62]); enumU16AsStringArray.SetPropertyIndexes( - index: 61, - originalValueIndex: 61, + index: 62, + originalValueIndex: 62, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3893,12 +3956,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16AsStringCollection, 62), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16AsStringCollection, 63), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[62]); + object (ValueBuffer valueBuffer) => valueBuffer[63]); enumU16AsStringCollection.SetPropertyIndexes( - index: 62, - originalValueIndex: 62, + index: 63, + originalValueIndex: 63, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3977,12 +4040,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16Collection, 63), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16Collection, 64), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[63]); + object (ValueBuffer valueBuffer) => valueBuffer[64]); enumU16Collection.SetPropertyIndexes( - index: 63, - originalValueIndex: 63, + index: 64, + originalValueIndex: 64, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4056,12 +4119,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32.SetAccessors( CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32, 64), + CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32, 65), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32), - object (ValueBuffer valueBuffer) => valueBuffer[64]); + object (ValueBuffer valueBuffer) => valueBuffer[65]); enumU32.SetPropertyIndexes( - index: 64, - originalValueIndex: 64, + index: 65, + originalValueIndex: 65, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4106,12 +4169,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32Array.SetAccessors( CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32Array, 65), + CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32Array, 66), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32Array), - object (ValueBuffer valueBuffer) => valueBuffer[65]); + object (ValueBuffer valueBuffer) => valueBuffer[66]); enumU32Array.SetPropertyIndexes( - index: 65, - originalValueIndex: 65, + index: 66, + originalValueIndex: 66, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4186,12 +4249,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsString.SetAccessors( CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsString, 66), + CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsString, 67), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[66]); + object (ValueBuffer valueBuffer) => valueBuffer[67]); enumU32AsString.SetPropertyIndexes( - index: 66, - originalValueIndex: 66, + index: 67, + originalValueIndex: 67, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4241,12 +4304,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsStringArray.SetAccessors( CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsStringArray, 67), + CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsStringArray, 68), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[67]); + object (ValueBuffer valueBuffer) => valueBuffer[68]); enumU32AsStringArray.SetPropertyIndexes( - index: 67, - originalValueIndex: 67, + index: 68, + originalValueIndex: 68, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4325,12 +4388,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32AsStringCollection, 68), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32AsStringCollection, 69), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[68]); + object (ValueBuffer valueBuffer) => valueBuffer[69]); enumU32AsStringCollection.SetPropertyIndexes( - index: 68, - originalValueIndex: 68, + index: 69, + originalValueIndex: 69, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4409,12 +4472,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32Collection, 69), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32Collection, 70), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[69]); + object (ValueBuffer valueBuffer) => valueBuffer[70]); enumU32Collection.SetPropertyIndexes( - index: 69, - originalValueIndex: 69, + index: 70, + originalValueIndex: 70, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4488,12 +4551,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64.SetAccessors( CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64, 70), + CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64, 71), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64), - object (ValueBuffer valueBuffer) => valueBuffer[70]); + object (ValueBuffer valueBuffer) => valueBuffer[71]); enumU64.SetPropertyIndexes( - index: 70, - originalValueIndex: 70, + index: 71, + originalValueIndex: 71, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4542,12 +4605,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64Array.SetAccessors( CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64Array, 71), + CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64Array, 72), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64Array), - object (ValueBuffer valueBuffer) => valueBuffer[71]); + object (ValueBuffer valueBuffer) => valueBuffer[72]); enumU64Array.SetPropertyIndexes( - index: 71, - originalValueIndex: 71, + index: 72, + originalValueIndex: 72, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4626,12 +4689,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsString.SetAccessors( CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsString, 72), + CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsString, 73), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[72]); + object (ValueBuffer valueBuffer) => valueBuffer[73]); enumU64AsString.SetPropertyIndexes( - index: 72, - originalValueIndex: 72, + index: 73, + originalValueIndex: 73, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4681,12 +4744,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsStringArray.SetAccessors( CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsStringArray, 73), + CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsStringArray, 74), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[73]); + object (ValueBuffer valueBuffer) => valueBuffer[74]); enumU64AsStringArray.SetPropertyIndexes( - index: 73, - originalValueIndex: 73, + index: 74, + originalValueIndex: 74, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4765,12 +4828,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64AsStringCollection, 74), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64AsStringCollection, 75), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[74]); + object (ValueBuffer valueBuffer) => valueBuffer[75]); enumU64AsStringCollection.SetPropertyIndexes( - index: 74, - originalValueIndex: 74, + index: 75, + originalValueIndex: 75, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4849,12 +4912,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64Collection, 75), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64Collection, 76), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[75]); + object (ValueBuffer valueBuffer) => valueBuffer[76]); enumU64Collection.SetPropertyIndexes( - index: 75, - originalValueIndex: 75, + index: 76, + originalValueIndex: 76, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4932,12 +4995,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8.SetAccessors( CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8, 76), + CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8, 77), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8), - object (ValueBuffer valueBuffer) => valueBuffer[76]); + object (ValueBuffer valueBuffer) => valueBuffer[77]); enumU8.SetPropertyIndexes( - index: 76, - originalValueIndex: 76, + index: 77, + originalValueIndex: 77, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4982,12 +5045,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8Array.SetAccessors( CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8Array, 77), + CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8Array, 78), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8Array), - object (ValueBuffer valueBuffer) => valueBuffer[77]); + object (ValueBuffer valueBuffer) => valueBuffer[78]); enumU8Array.SetPropertyIndexes( - index: 77, - originalValueIndex: 77, + index: 78, + originalValueIndex: 78, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5062,12 +5125,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsString.SetAccessors( CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsString, 78), + CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsString, 79), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[78]); + object (ValueBuffer valueBuffer) => valueBuffer[79]); enumU8AsString.SetPropertyIndexes( - index: 78, - originalValueIndex: 78, + index: 79, + originalValueIndex: 79, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5117,12 +5180,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsStringArray.SetAccessors( CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsStringArray, 79), + CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsStringArray, 80), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[79]); + object (ValueBuffer valueBuffer) => valueBuffer[80]); enumU8AsStringArray.SetPropertyIndexes( - index: 79, - originalValueIndex: 79, + index: 80, + originalValueIndex: 80, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5201,12 +5264,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8AsStringCollection, 80), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8AsStringCollection, 81), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[80]); + object (ValueBuffer valueBuffer) => valueBuffer[81]); enumU8AsStringCollection.SetPropertyIndexes( - index: 80, - originalValueIndex: 80, + index: 81, + originalValueIndex: 81, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5285,12 +5348,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8Collection, 81), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8Collection, 82), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[81]); + object (ValueBuffer valueBuffer) => valueBuffer[82]); enumU8Collection.SetPropertyIndexes( - index: 81, - originalValueIndex: 81, + index: 82, + originalValueIndex: 82, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5365,12 +5428,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @float.SetAccessors( float (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Float(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Float(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float (InternalEntityEntry entry) => entry.ReadOriginalValue(@float, 82), + float (InternalEntityEntry entry) => entry.ReadOriginalValue(@float, 83), float (InternalEntityEntry entry) => entry.GetCurrentValue(@float), - object (ValueBuffer valueBuffer) => valueBuffer[82]); + object (ValueBuffer valueBuffer) => valueBuffer[83]); @float.SetPropertyIndexes( - index: 82, - originalValueIndex: 82, + index: 83, + originalValueIndex: 83, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5406,12 +5469,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas floatArray.SetAccessors( float[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.FloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.FloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float[] (InternalEntityEntry entry) => entry.ReadOriginalValue(floatArray, 83), + float[] (InternalEntityEntry entry) => entry.ReadOriginalValue(floatArray, 84), float[] (InternalEntityEntry entry) => entry.GetCurrentValue(floatArray), - object (ValueBuffer valueBuffer) => valueBuffer[83]); + object (ValueBuffer valueBuffer) => valueBuffer[84]); floatArray.SetPropertyIndexes( - index: 83, - originalValueIndex: 83, + index: 84, + originalValueIndex: 84, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5470,12 +5533,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guid.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Guid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Guid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guid, 84), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guid, 85), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guid), - object (ValueBuffer valueBuffer) => valueBuffer[84]); + object (ValueBuffer valueBuffer) => valueBuffer[85]); guid.SetPropertyIndexes( - index: 84, - originalValueIndex: 84, + index: 85, + originalValueIndex: 85, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5513,12 +5576,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidArray.SetAccessors( Guid[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid[] (InternalEntityEntry entry) => entry.ReadOriginalValue(guidArray, 85), + Guid[] (InternalEntityEntry entry) => entry.ReadOriginalValue(guidArray, 86), Guid[] (InternalEntityEntry entry) => entry.GetCurrentValue(guidArray), - object (ValueBuffer valueBuffer) => valueBuffer[85]); + object (ValueBuffer valueBuffer) => valueBuffer[86]); guidArray.SetPropertyIndexes( - index: 85, - originalValueIndex: 85, + index: 86, + originalValueIndex: 86, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5579,12 +5642,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidToBytesConverterProperty.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToBytesConverterProperty, 86), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToBytesConverterProperty, 87), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guidToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[86]); + object (ValueBuffer valueBuffer) => valueBuffer[87]); guidToBytesConverterProperty.SetPropertyIndexes( - index: 86, - originalValueIndex: 86, + index: 87, + originalValueIndex: 87, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5633,12 +5696,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidToStringConverterProperty.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToStringConverterProperty, 87), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToStringConverterProperty, 88), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guidToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[87]); + object (ValueBuffer valueBuffer) => valueBuffer[88]); guidToStringConverterProperty.SetPropertyIndexes( - index: 87, - originalValueIndex: 87, + index: 88, + originalValueIndex: 88, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5688,12 +5751,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddress.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddress, 88), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddress, 89), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddress), - object (ValueBuffer valueBuffer) => valueBuffer[88]); + object (ValueBuffer valueBuffer) => valueBuffer[89]); iPAddress.SetPropertyIndexes( - index: 88, - originalValueIndex: 88, + index: 89, + originalValueIndex: 89, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5742,12 +5805,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressArray.SetAccessors( IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressArray, 89), + IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressArray, 90), IPAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[89]); + object (ValueBuffer valueBuffer) => valueBuffer[90]); iPAddressArray.SetPropertyIndexes( - index: 89, - originalValueIndex: 89, + index: 90, + originalValueIndex: 90, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5809,6 +5872,90 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas IPAddress (string v) => IPAddress.Parse(v))))); iPAddressArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var iPAddressReadOnlyCollection = runtimeEntityType.AddProperty( + "IPAddressReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("IPAddressReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_ipAddressReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + iPAddressReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance) == null); + iPAddressReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) = ((List)(value))); + iPAddressReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) = ((List)(value))); + iPAddressReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(iPAddressReadOnlyCollection, 91), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(iPAddressReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[91]); + iPAddressReadOnlyCollection.SetPropertyIndexes( + index: 91, + originalValueIndex: 91, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + iPAddressReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v)), + keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( + new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v))))), + storeTypePostfix: StoreTypePostfix.None, + jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( + new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v)))), + elementMapping: SqlServerStringTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v), + keyComparer: new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(45)", + size: 45, + unicode: true, + dbType: System.Data.DbType.String), + converter: new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v)), + jsonValueReaderWriter: new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v))))); + iPAddressReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var iPAddressToBytesConverterProperty = runtimeEntityType.AddProperty( "IPAddressToBytesConverterProperty", typeof(IPAddress), @@ -5827,12 +5974,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressToBytesConverterProperty.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToBytesConverterProperty, 90), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToBytesConverterProperty, 92), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[90]); + object (ValueBuffer valueBuffer) => valueBuffer[92]); iPAddressToBytesConverterProperty.SetPropertyIndexes( - index: 90, - originalValueIndex: 90, + index: 92, + originalValueIndex: 92, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5880,12 +6027,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressToStringConverterProperty.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToStringConverterProperty, 91), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToStringConverterProperty, 93), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[91]); + object (ValueBuffer valueBuffer) => valueBuffer[93]); iPAddressToStringConverterProperty.SetPropertyIndexes( - index: 91, - originalValueIndex: 91, + index: 93, + originalValueIndex: 93, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5935,12 +6082,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int16.SetAccessors( short (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short (InternalEntityEntry entry) => entry.ReadOriginalValue(int16, 92), + short (InternalEntityEntry entry) => entry.ReadOriginalValue(int16, 94), short (InternalEntityEntry entry) => entry.GetCurrentValue(int16), - object (ValueBuffer valueBuffer) => valueBuffer[92]); + object (ValueBuffer valueBuffer) => valueBuffer[94]); int16.SetPropertyIndexes( - index: 92, - originalValueIndex: 92, + index: 94, + originalValueIndex: 94, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5976,12 +6123,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int16Array.SetAccessors( short[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int16Array, 93), + short[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int16Array, 95), short[] (InternalEntityEntry entry) => entry.GetCurrentValue(int16Array), - object (ValueBuffer valueBuffer) => valueBuffer[93]); + object (ValueBuffer valueBuffer) => valueBuffer[95]); int16Array.SetPropertyIndexes( - index: 93, - originalValueIndex: 93, + index: 95, + originalValueIndex: 95, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6040,12 +6187,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int32.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(int32, 94), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(int32, 96), int (InternalEntityEntry entry) => entry.GetCurrentValue(int32), - object (ValueBuffer valueBuffer) => valueBuffer[94]); + object (ValueBuffer valueBuffer) => valueBuffer[96]); int32.SetPropertyIndexes( - index: 94, - originalValueIndex: 94, + index: 96, + originalValueIndex: 96, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6081,12 +6228,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int32Array.SetAccessors( int[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32Array, 95), + int[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32Array, 97), int[] (InternalEntityEntry entry) => entry.GetCurrentValue(int32Array), - object (ValueBuffer valueBuffer) => valueBuffer[95]); + object (ValueBuffer valueBuffer) => valueBuffer[97]); int32Array.SetPropertyIndexes( - index: 95, - originalValueIndex: 95, + index: 97, + originalValueIndex: 97, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6127,6 +6274,69 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v))); int32Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var int32ReadOnlyCollection = runtimeEntityType.AddProperty( + "Int32ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_int32ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + int32ReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance) == null); + int32ReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) = ((List)(value))); + int32ReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) = ((List)(value))); + int32ReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(int32ReadOnlyCollection, 98), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(int32ReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[98]); + int32ReadOnlyCollection.SetPropertyIndexes( + index: 98, + originalValueIndex: 98, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + int32ReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, int>(new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v)), + keyComparer: new ListOfValueTypesComparer, int>(new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, int>( + JsonInt32ReaderWriter.Instance)), + storeTypePostfix: StoreTypePostfix.None, + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, int>( + JsonInt32ReaderWriter.Instance), + elementMapping: IntTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + keyComparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + providerValueComparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v))); + int32ReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var int64 = runtimeEntityType.AddProperty( "Int64", typeof(long), @@ -6145,12 +6355,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int64.SetAccessors( long (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long (InternalEntityEntry entry) => entry.ReadOriginalValue(int64, 96), + long (InternalEntityEntry entry) => entry.ReadOriginalValue(int64, 99), long (InternalEntityEntry entry) => entry.GetCurrentValue(int64), - object (ValueBuffer valueBuffer) => valueBuffer[96]); + object (ValueBuffer valueBuffer) => valueBuffer[99]); int64.SetPropertyIndexes( - index: 96, - originalValueIndex: 96, + index: 99, + originalValueIndex: 99, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6186,12 +6396,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int64Array.SetAccessors( long[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int64Array, 97), + long[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int64Array, 100), long[] (InternalEntityEntry entry) => entry.GetCurrentValue(int64Array), - object (ValueBuffer valueBuffer) => valueBuffer[97]); + object (ValueBuffer valueBuffer) => valueBuffer[100]); int64Array.SetPropertyIndexes( - index: 97, - originalValueIndex: 97, + index: 100, + originalValueIndex: 100, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6249,12 +6459,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int8.SetAccessors( sbyte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte (InternalEntityEntry entry) => entry.ReadOriginalValue(int8, 98), + sbyte (InternalEntityEntry entry) => entry.ReadOriginalValue(int8, 101), sbyte (InternalEntityEntry entry) => entry.GetCurrentValue(int8), - object (ValueBuffer valueBuffer) => valueBuffer[98]); + object (ValueBuffer valueBuffer) => valueBuffer[101]); int8.SetPropertyIndexes( - index: 98, - originalValueIndex: 98, + index: 101, + originalValueIndex: 101, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6299,12 +6509,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int8Array.SetAccessors( sbyte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8Array, 99), + sbyte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8Array, 102), sbyte[] (InternalEntityEntry entry) => entry.GetCurrentValue(int8Array), - object (ValueBuffer valueBuffer) => valueBuffer[99]); + object (ValueBuffer valueBuffer) => valueBuffer[102]); int8Array.SetPropertyIndexes( - index: 99, - originalValueIndex: 99, + index: 102, + originalValueIndex: 102, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6379,12 +6589,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas intNumberToBytesConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToBytesConverterProperty, 100), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToBytesConverterProperty, 103), int (InternalEntityEntry entry) => entry.GetCurrentValue(intNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[100]); + object (ValueBuffer valueBuffer) => valueBuffer[103]); intNumberToBytesConverterProperty.SetPropertyIndexes( - index: 100, - originalValueIndex: 100, + index: 103, + originalValueIndex: 103, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6433,12 +6643,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas intNumberToStringConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToStringConverterProperty, 101), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToStringConverterProperty, 104), int (InternalEntityEntry entry) => entry.GetCurrentValue(intNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[101]); + object (ValueBuffer valueBuffer) => valueBuffer[104]); intNumberToStringConverterProperty.SetPropertyIndexes( - index: 101, - originalValueIndex: 101, + index: 104, + originalValueIndex: 104, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6490,12 +6700,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullIntToNullStringConverterProperty.SetAccessors( int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullIntToNullStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullIntToNullStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullIntToNullStringConverterProperty, 102), + int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullIntToNullStringConverterProperty, 105), int? (InternalEntityEntry entry) => entry.GetCurrentValue(nullIntToNullStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[102]); + object (ValueBuffer valueBuffer) => valueBuffer[105]); nullIntToNullStringConverterProperty.SetPropertyIndexes( - index: 102, - originalValueIndex: 102, + index: 105, + originalValueIndex: 105, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6547,12 +6757,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBool.SetAccessors( bool? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBool(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBool(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBool, 103), + bool? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBool, 106), bool? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBool), - object (ValueBuffer valueBuffer) => valueBuffer[103]); + object (ValueBuffer valueBuffer) => valueBuffer[106]); nullableBool.SetPropertyIndexes( - index: 103, - originalValueIndex: 103, + index: 106, + originalValueIndex: 106, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6590,12 +6800,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBoolArray.SetAccessors( bool? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBoolArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBoolArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBoolArray, 104), + bool? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBoolArray, 107), bool? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBoolArray), - object (ValueBuffer valueBuffer) => valueBuffer[104]); + object (ValueBuffer valueBuffer) => valueBuffer[107]); nullableBoolArray.SetPropertyIndexes( - index: 104, - originalValueIndex: 104, + index: 107, + originalValueIndex: 107, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6654,12 +6864,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBytes.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytes, 105), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytes, 108), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBytes), - object (ValueBuffer valueBuffer) => valueBuffer[105]); + object (ValueBuffer valueBuffer) => valueBuffer[108]); nullableBytes.SetPropertyIndexes( - index: 105, - originalValueIndex: 105, + index: 108, + originalValueIndex: 108, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6698,12 +6908,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBytesArray.SetAccessors( byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytesArray, 106), + byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytesArray, 109), byte[][] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBytesArray), - object (ValueBuffer valueBuffer) => valueBuffer[106]); + object (ValueBuffer valueBuffer) => valueBuffer[109]); nullableBytesArray.SetPropertyIndexes( - index: 106, - originalValueIndex: 106, + index: 109, + originalValueIndex: 109, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6765,12 +6975,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableChar.SetAccessors( char? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableChar(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableChar(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableChar, 107), + char? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableChar, 110), char? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableChar), - object (ValueBuffer valueBuffer) => valueBuffer[107]); + object (ValueBuffer valueBuffer) => valueBuffer[110]); nullableChar.SetPropertyIndexes( - index: 107, - originalValueIndex: 107, + index: 110, + originalValueIndex: 110, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6821,12 +7031,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableCharArray.SetAccessors( char? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableCharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableCharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableCharArray, 108), + char? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableCharArray, 111), char? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableCharArray), - object (ValueBuffer valueBuffer) => valueBuffer[108]); + object (ValueBuffer valueBuffer) => valueBuffer[111]); nullableCharArray.SetPropertyIndexes( - index: 108, - originalValueIndex: 108, + index: 111, + originalValueIndex: 111, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6906,12 +7116,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateOnly.SetAccessors( DateOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnly, 109), + DateOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnly, 112), DateOnly? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateOnly), - object (ValueBuffer valueBuffer) => valueBuffer[109]); + object (ValueBuffer valueBuffer) => valueBuffer[112]); nullableDateOnly.SetPropertyIndexes( - index: 109, - originalValueIndex: 109, + index: 112, + originalValueIndex: 112, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6949,12 +7159,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateOnlyArray.SetAccessors( DateOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnlyArray, 110), + DateOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnlyArray, 113), DateOnly? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[110]); + object (ValueBuffer valueBuffer) => valueBuffer[113]); nullableDateOnlyArray.SetPropertyIndexes( - index: 110, - originalValueIndex: 110, + index: 113, + originalValueIndex: 113, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7013,12 +7223,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateTime.SetAccessors( DateTime? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTime, 111), + DateTime? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTime, 114), DateTime? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateTime), - object (ValueBuffer valueBuffer) => valueBuffer[111]); + object (ValueBuffer valueBuffer) => valueBuffer[114]); nullableDateTime.SetPropertyIndexes( - index: 111, - originalValueIndex: 111, + index: 114, + originalValueIndex: 114, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7056,12 +7266,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateTimeArray.SetAccessors( DateTime? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTimeArray, 112), + DateTime? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTimeArray, 115), DateTime? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateTimeArray), - object (ValueBuffer valueBuffer) => valueBuffer[112]); + object (ValueBuffer valueBuffer) => valueBuffer[115]); nullableDateTimeArray.SetPropertyIndexes( - index: 112, - originalValueIndex: 112, + index: 115, + originalValueIndex: 115, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7120,12 +7330,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDecimal.SetAccessors( decimal? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimal, 113), + decimal? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimal, 116), decimal? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDecimal), - object (ValueBuffer valueBuffer) => valueBuffer[113]); + object (ValueBuffer valueBuffer) => valueBuffer[116]); nullableDecimal.SetPropertyIndexes( - index: 113, - originalValueIndex: 113, + index: 116, + originalValueIndex: 116, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7163,12 +7373,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDecimalArray.SetAccessors( decimal? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimalArray, 114), + decimal? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimalArray, 117), decimal? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDecimalArray), - object (ValueBuffer valueBuffer) => valueBuffer[114]); + object (ValueBuffer valueBuffer) => valueBuffer[117]); nullableDecimalArray.SetPropertyIndexes( - index: 114, - originalValueIndex: 114, + index: 117, + originalValueIndex: 117, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7227,12 +7437,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDouble.SetAccessors( double? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDouble(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDouble(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDouble, 115), + double? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDouble, 118), double? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDouble), - object (ValueBuffer valueBuffer) => valueBuffer[115]); + object (ValueBuffer valueBuffer) => valueBuffer[118]); nullableDouble.SetPropertyIndexes( - index: 115, - originalValueIndex: 115, + index: 118, + originalValueIndex: 118, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7270,12 +7480,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDoubleArray.SetAccessors( double? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDoubleArray, 116), + double? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDoubleArray, 119), double? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDoubleArray), - object (ValueBuffer valueBuffer) => valueBuffer[116]); + object (ValueBuffer valueBuffer) => valueBuffer[119]); nullableDoubleArray.SetPropertyIndexes( - index: 116, - originalValueIndex: 116, + index: 119, + originalValueIndex: 119, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7334,12 +7544,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16.SetAccessors( CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16, 117), + CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16, 120), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16), - object (ValueBuffer valueBuffer) => valueBuffer[117]); + object (ValueBuffer valueBuffer) => valueBuffer[120]); nullableEnum16.SetPropertyIndexes( - index: 117, - originalValueIndex: 117, + index: 120, + originalValueIndex: 120, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7385,12 +7595,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16Array.SetAccessors( CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16Array, 118), + CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16Array, 121), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16Array), - object (ValueBuffer valueBuffer) => valueBuffer[118]); + object (ValueBuffer valueBuffer) => valueBuffer[121]); nullableEnum16Array.SetPropertyIndexes( - index: 118, - originalValueIndex: 118, + index: 121, + originalValueIndex: 121, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7465,12 +7675,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsString.SetAccessors( CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsString, 119), + CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsString, 122), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[119]); + object (ValueBuffer valueBuffer) => valueBuffer[122]); nullableEnum16AsString.SetPropertyIndexes( - index: 119, - originalValueIndex: 119, + index: 122, + originalValueIndex: 122, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7516,12 +7726,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsStringArray.SetAccessors( CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsStringArray, 120), + CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsStringArray, 123), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[120]); + object (ValueBuffer valueBuffer) => valueBuffer[123]); nullableEnum16AsStringArray.SetPropertyIndexes( - index: 120, - originalValueIndex: 120, + index: 123, + originalValueIndex: 123, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7595,12 +7805,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16AsStringCollection, 121), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16AsStringCollection, 124), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[121]); + object (ValueBuffer valueBuffer) => valueBuffer[124]); nullableEnum16AsStringCollection.SetPropertyIndexes( - index: 121, - originalValueIndex: 121, + index: 124, + originalValueIndex: 124, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7674,12 +7884,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16Collection, 122), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16Collection, 125), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[122]); + object (ValueBuffer valueBuffer) => valueBuffer[125]); nullableEnum16Collection.SetPropertyIndexes( - index: 122, - originalValueIndex: 122, + index: 125, + originalValueIndex: 125, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7754,12 +7964,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32.SetAccessors( CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32, 123), + CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32, 126), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32), - object (ValueBuffer valueBuffer) => valueBuffer[123]); + object (ValueBuffer valueBuffer) => valueBuffer[126]); nullableEnum32.SetPropertyIndexes( - index: 123, - originalValueIndex: 123, + index: 126, + originalValueIndex: 126, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7805,12 +8015,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32Array.SetAccessors( CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32Array, 124), + CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32Array, 127), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32Array), - object (ValueBuffer valueBuffer) => valueBuffer[124]); + object (ValueBuffer valueBuffer) => valueBuffer[127]); nullableEnum32Array.SetPropertyIndexes( - index: 124, - originalValueIndex: 124, + index: 127, + originalValueIndex: 127, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7885,12 +8095,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsString.SetAccessors( CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsString, 125), + CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsString, 128), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[125]); + object (ValueBuffer valueBuffer) => valueBuffer[128]); nullableEnum32AsString.SetPropertyIndexes( - index: 125, - originalValueIndex: 125, + index: 128, + originalValueIndex: 128, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7936,12 +8146,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsStringArray.SetAccessors( CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsStringArray, 126), + CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsStringArray, 129), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[126]); - nullableEnum32AsStringArray.SetPropertyIndexes( - index: 126, - originalValueIndex: 126, + object (ValueBuffer valueBuffer) => valueBuffer[129]); + nullableEnum32AsStringArray.SetPropertyIndexes( + index: 129, + originalValueIndex: 129, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8015,12 +8225,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32AsStringCollection, 127), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32AsStringCollection, 130), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[127]); + object (ValueBuffer valueBuffer) => valueBuffer[130]); nullableEnum32AsStringCollection.SetPropertyIndexes( - index: 127, - originalValueIndex: 127, + index: 130, + originalValueIndex: 130, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8094,12 +8304,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32Collection, 128), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32Collection, 131), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[128]); + object (ValueBuffer valueBuffer) => valueBuffer[131]); nullableEnum32Collection.SetPropertyIndexes( - index: 128, - originalValueIndex: 128, + index: 131, + originalValueIndex: 131, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8174,12 +8384,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64.SetAccessors( CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64, 129), + CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64, 132), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64), - object (ValueBuffer valueBuffer) => valueBuffer[129]); + object (ValueBuffer valueBuffer) => valueBuffer[132]); nullableEnum64.SetPropertyIndexes( - index: 129, - originalValueIndex: 129, + index: 132, + originalValueIndex: 132, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8225,12 +8435,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64Array.SetAccessors( CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64Array, 130), + CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64Array, 133), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64Array), - object (ValueBuffer valueBuffer) => valueBuffer[130]); + object (ValueBuffer valueBuffer) => valueBuffer[133]); nullableEnum64Array.SetPropertyIndexes( - index: 130, - originalValueIndex: 130, + index: 133, + originalValueIndex: 133, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8305,12 +8515,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsString.SetAccessors( CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsString, 131), + CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsString, 134), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[131]); + object (ValueBuffer valueBuffer) => valueBuffer[134]); nullableEnum64AsString.SetPropertyIndexes( - index: 131, - originalValueIndex: 131, + index: 134, + originalValueIndex: 134, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8356,12 +8566,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsStringArray.SetAccessors( CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsStringArray, 132), + CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsStringArray, 135), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[132]); + object (ValueBuffer valueBuffer) => valueBuffer[135]); nullableEnum64AsStringArray.SetPropertyIndexes( - index: 132, - originalValueIndex: 132, + index: 135, + originalValueIndex: 135, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8435,12 +8645,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64AsStringCollection, 133), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64AsStringCollection, 136), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[133]); + object (ValueBuffer valueBuffer) => valueBuffer[136]); nullableEnum64AsStringCollection.SetPropertyIndexes( - index: 133, - originalValueIndex: 133, + index: 136, + originalValueIndex: 136, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8514,12 +8724,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64Collection, 134), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64Collection, 137), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[134]); + object (ValueBuffer valueBuffer) => valueBuffer[137]); nullableEnum64Collection.SetPropertyIndexes( - index: 134, - originalValueIndex: 134, + index: 137, + originalValueIndex: 137, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8594,12 +8804,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8.SetAccessors( CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8, 135), + CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8, 138), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8), - object (ValueBuffer valueBuffer) => valueBuffer[135]); + object (ValueBuffer valueBuffer) => valueBuffer[138]); nullableEnum8.SetPropertyIndexes( - index: 135, - originalValueIndex: 135, + index: 138, + originalValueIndex: 138, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8645,12 +8855,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8Array.SetAccessors( CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8Array, 136), + CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8Array, 139), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8Array), - object (ValueBuffer valueBuffer) => valueBuffer[136]); + object (ValueBuffer valueBuffer) => valueBuffer[139]); nullableEnum8Array.SetPropertyIndexes( - index: 136, - originalValueIndex: 136, + index: 139, + originalValueIndex: 139, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8725,12 +8935,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsString.SetAccessors( CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsString, 137), + CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsString, 140), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[137]); + object (ValueBuffer valueBuffer) => valueBuffer[140]); nullableEnum8AsString.SetPropertyIndexes( - index: 137, - originalValueIndex: 137, + index: 140, + originalValueIndex: 140, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8776,12 +8986,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsStringArray.SetAccessors( CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsStringArray, 138), + CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsStringArray, 141), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[138]); + object (ValueBuffer valueBuffer) => valueBuffer[141]); nullableEnum8AsStringArray.SetPropertyIndexes( - index: 138, - originalValueIndex: 138, + index: 141, + originalValueIndex: 141, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8855,12 +9065,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8AsStringCollection, 139), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8AsStringCollection, 142), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[139]); + object (ValueBuffer valueBuffer) => valueBuffer[142]); nullableEnum8AsStringCollection.SetPropertyIndexes( - index: 139, - originalValueIndex: 139, + index: 142, + originalValueIndex: 142, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8934,12 +9144,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8Collection, 140), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8Collection, 143), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[140]); + object (ValueBuffer valueBuffer) => valueBuffer[143]); nullableEnum8Collection.SetPropertyIndexes( - index: 140, - originalValueIndex: 140, + index: 143, + originalValueIndex: 143, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9014,12 +9224,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16.SetAccessors( CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16, 141), + CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16, 144), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16), - object (ValueBuffer valueBuffer) => valueBuffer[141]); + object (ValueBuffer valueBuffer) => valueBuffer[144]); nullableEnumU16.SetPropertyIndexes( - index: 141, - originalValueIndex: 141, + index: 144, + originalValueIndex: 144, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9065,12 +9275,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16Array.SetAccessors( CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16Array, 142), + CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16Array, 145), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16Array), - object (ValueBuffer valueBuffer) => valueBuffer[142]); + object (ValueBuffer valueBuffer) => valueBuffer[145]); nullableEnumU16Array.SetPropertyIndexes( - index: 142, - originalValueIndex: 142, + index: 145, + originalValueIndex: 145, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9145,12 +9355,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsString.SetAccessors( CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsString, 143), + CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsString, 146), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[143]); + object (ValueBuffer valueBuffer) => valueBuffer[146]); nullableEnumU16AsString.SetPropertyIndexes( - index: 143, - originalValueIndex: 143, + index: 146, + originalValueIndex: 146, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9196,12 +9406,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsStringArray.SetAccessors( CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsStringArray, 144), + CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsStringArray, 147), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[144]); + object (ValueBuffer valueBuffer) => valueBuffer[147]); nullableEnumU16AsStringArray.SetPropertyIndexes( - index: 144, - originalValueIndex: 144, + index: 147, + originalValueIndex: 147, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9275,12 +9485,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16AsStringCollection, 145), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16AsStringCollection, 148), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[145]); + object (ValueBuffer valueBuffer) => valueBuffer[148]); nullableEnumU16AsStringCollection.SetPropertyIndexes( - index: 145, - originalValueIndex: 145, + index: 148, + originalValueIndex: 148, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9354,12 +9564,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16Collection, 146), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16Collection, 149), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[146]); + object (ValueBuffer valueBuffer) => valueBuffer[149]); nullableEnumU16Collection.SetPropertyIndexes( - index: 146, - originalValueIndex: 146, + index: 149, + originalValueIndex: 149, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9434,12 +9644,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32.SetAccessors( CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32, 147), + CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32, 150), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32), - object (ValueBuffer valueBuffer) => valueBuffer[147]); + object (ValueBuffer valueBuffer) => valueBuffer[150]); nullableEnumU32.SetPropertyIndexes( - index: 147, - originalValueIndex: 147, + index: 150, + originalValueIndex: 150, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9485,12 +9695,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32Array.SetAccessors( CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32Array, 148), + CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32Array, 151), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32Array), - object (ValueBuffer valueBuffer) => valueBuffer[148]); + object (ValueBuffer valueBuffer) => valueBuffer[151]); nullableEnumU32Array.SetPropertyIndexes( - index: 148, - originalValueIndex: 148, + index: 151, + originalValueIndex: 151, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9565,12 +9775,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsString.SetAccessors( CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsString, 149), + CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsString, 152), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[149]); + object (ValueBuffer valueBuffer) => valueBuffer[152]); nullableEnumU32AsString.SetPropertyIndexes( - index: 149, - originalValueIndex: 149, + index: 152, + originalValueIndex: 152, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9616,12 +9826,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsStringArray.SetAccessors( CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsStringArray, 150), + CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsStringArray, 153), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[150]); + object (ValueBuffer valueBuffer) => valueBuffer[153]); nullableEnumU32AsStringArray.SetPropertyIndexes( - index: 150, - originalValueIndex: 150, + index: 153, + originalValueIndex: 153, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9695,12 +9905,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32AsStringCollection, 151), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32AsStringCollection, 154), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[151]); + object (ValueBuffer valueBuffer) => valueBuffer[154]); nullableEnumU32AsStringCollection.SetPropertyIndexes( - index: 151, - originalValueIndex: 151, + index: 154, + originalValueIndex: 154, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9774,12 +9984,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32Collection, 152), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32Collection, 155), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[152]); + object (ValueBuffer valueBuffer) => valueBuffer[155]); nullableEnumU32Collection.SetPropertyIndexes( - index: 152, - originalValueIndex: 152, + index: 155, + originalValueIndex: 155, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9854,12 +10064,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64.SetAccessors( CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64, 153), + CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64, 156), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64), - object (ValueBuffer valueBuffer) => valueBuffer[153]); + object (ValueBuffer valueBuffer) => valueBuffer[156]); nullableEnumU64.SetPropertyIndexes( - index: 153, - originalValueIndex: 153, + index: 156, + originalValueIndex: 156, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9909,12 +10119,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64Array.SetAccessors( CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64Array, 154), + CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64Array, 157), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64Array), - object (ValueBuffer valueBuffer) => valueBuffer[154]); + object (ValueBuffer valueBuffer) => valueBuffer[157]); nullableEnumU64Array.SetPropertyIndexes( - index: 154, - originalValueIndex: 154, + index: 157, + originalValueIndex: 157, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9993,12 +10203,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsString.SetAccessors( CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsString, 155), + CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsString, 158), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[155]); + object (ValueBuffer valueBuffer) => valueBuffer[158]); nullableEnumU64AsString.SetPropertyIndexes( - index: 155, - originalValueIndex: 155, + index: 158, + originalValueIndex: 158, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10048,12 +10258,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsStringArray.SetAccessors( CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsStringArray, 156), + CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsStringArray, 159), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[156]); + object (ValueBuffer valueBuffer) => valueBuffer[159]); nullableEnumU64AsStringArray.SetPropertyIndexes( - index: 156, - originalValueIndex: 156, + index: 159, + originalValueIndex: 159, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10131,12 +10341,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64AsStringCollection, 157), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64AsStringCollection, 160), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[157]); + object (ValueBuffer valueBuffer) => valueBuffer[160]); nullableEnumU64AsStringCollection.SetPropertyIndexes( - index: 157, - originalValueIndex: 157, + index: 160, + originalValueIndex: 160, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10214,12 +10424,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64Collection, 158), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64Collection, 161), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[158]); + object (ValueBuffer valueBuffer) => valueBuffer[161]); nullableEnumU64Collection.SetPropertyIndexes( - index: 158, - originalValueIndex: 158, + index: 161, + originalValueIndex: 161, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10298,12 +10508,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8.SetAccessors( CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8, 159), + CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8, 162), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8), - object (ValueBuffer valueBuffer) => valueBuffer[159]); + object (ValueBuffer valueBuffer) => valueBuffer[162]); nullableEnumU8.SetPropertyIndexes( - index: 159, - originalValueIndex: 159, + index: 162, + originalValueIndex: 162, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10349,12 +10559,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8Array.SetAccessors( CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8Array, 160), + CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8Array, 163), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8Array), - object (ValueBuffer valueBuffer) => valueBuffer[160]); + object (ValueBuffer valueBuffer) => valueBuffer[163]); nullableEnumU8Array.SetPropertyIndexes( - index: 160, - originalValueIndex: 160, + index: 163, + originalValueIndex: 163, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10429,12 +10639,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsString.SetAccessors( CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsString, 161), + CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsString, 164), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[161]); + object (ValueBuffer valueBuffer) => valueBuffer[164]); nullableEnumU8AsString.SetPropertyIndexes( - index: 161, - originalValueIndex: 161, + index: 164, + originalValueIndex: 164, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10480,12 +10690,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsStringArray.SetAccessors( CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsStringArray, 162), + CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsStringArray, 165), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[162]); + object (ValueBuffer valueBuffer) => valueBuffer[165]); nullableEnumU8AsStringArray.SetPropertyIndexes( - index: 162, - originalValueIndex: 162, + index: 165, + originalValueIndex: 165, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10559,12 +10769,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8AsStringCollection, 163), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8AsStringCollection, 166), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[163]); + object (ValueBuffer valueBuffer) => valueBuffer[166]); nullableEnumU8AsStringCollection.SetPropertyIndexes( - index: 163, - originalValueIndex: 163, + index: 166, + originalValueIndex: 166, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10638,12 +10848,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8Collection, 164), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8Collection, 167), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[164]); + object (ValueBuffer valueBuffer) => valueBuffer[167]); nullableEnumU8Collection.SetPropertyIndexes( - index: 164, - originalValueIndex: 164, + index: 167, + originalValueIndex: 167, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10718,12 +10928,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableFloat.SetAccessors( float? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloat(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloat(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloat, 165), + float? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloat, 168), float? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableFloat), - object (ValueBuffer valueBuffer) => valueBuffer[165]); + object (ValueBuffer valueBuffer) => valueBuffer[168]); nullableFloat.SetPropertyIndexes( - index: 165, - originalValueIndex: 165, + index: 168, + originalValueIndex: 168, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10761,12 +10971,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableFloatArray.SetAccessors( float? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloatArray, 166), + float? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloatArray, 169), float? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableFloatArray), - object (ValueBuffer valueBuffer) => valueBuffer[166]); + object (ValueBuffer valueBuffer) => valueBuffer[169]); nullableFloatArray.SetPropertyIndexes( - index: 166, - originalValueIndex: 166, + index: 169, + originalValueIndex: 169, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10825,12 +11035,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableGuid.SetAccessors( Guid? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuid, 167), + Guid? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuid, 170), Guid? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableGuid), - object (ValueBuffer valueBuffer) => valueBuffer[167]); + object (ValueBuffer valueBuffer) => valueBuffer[170]); nullableGuid.SetPropertyIndexes( - index: 167, - originalValueIndex: 167, + index: 170, + originalValueIndex: 170, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10870,12 +11080,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableGuidArray.SetAccessors( Guid? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuidArray, 168), + Guid? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuidArray, 171), Guid? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableGuidArray), - object (ValueBuffer valueBuffer) => valueBuffer[168]); + object (ValueBuffer valueBuffer) => valueBuffer[171]); nullableGuidArray.SetPropertyIndexes( - index: 168, - originalValueIndex: 168, + index: 171, + originalValueIndex: 171, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10936,12 +11146,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableIPAddress.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddress, 169), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddress, 172), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(nullableIPAddress), - object (ValueBuffer valueBuffer) => valueBuffer[169]); + object (ValueBuffer valueBuffer) => valueBuffer[172]); nullableIPAddress.SetPropertyIndexes( - index: 169, - originalValueIndex: 169, + index: 172, + originalValueIndex: 172, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10990,12 +11200,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableIPAddressArray.SetAccessors( IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddressArray, 170), + IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddressArray, 173), IPAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableIPAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[170]); + object (ValueBuffer valueBuffer) => valueBuffer[173]); nullableIPAddressArray.SetPropertyIndexes( - index: 170, - originalValueIndex: 170, + index: 173, + originalValueIndex: 173, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11075,12 +11285,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt16.SetAccessors( short? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16, 171), + short? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16, 174), short? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt16), - object (ValueBuffer valueBuffer) => valueBuffer[171]); + object (ValueBuffer valueBuffer) => valueBuffer[174]); nullableInt16.SetPropertyIndexes( - index: 171, - originalValueIndex: 171, + index: 174, + originalValueIndex: 174, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11118,12 +11328,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt16Array.SetAccessors( short? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16Array, 172), + short? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16Array, 175), short? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[172]); + object (ValueBuffer valueBuffer) => valueBuffer[175]); nullableInt16Array.SetPropertyIndexes( - index: 172, - originalValueIndex: 172, + index: 175, + originalValueIndex: 175, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11182,12 +11392,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt32.SetAccessors( int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32, 173), + int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32, 176), int? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt32), - object (ValueBuffer valueBuffer) => valueBuffer[173]); + object (ValueBuffer valueBuffer) => valueBuffer[176]); nullableInt32.SetPropertyIndexes( - index: 173, - originalValueIndex: 173, + index: 176, + originalValueIndex: 176, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11225,12 +11435,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt32Array.SetAccessors( int? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32Array, 174), + int? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32Array, 177), int? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[174]); + object (ValueBuffer valueBuffer) => valueBuffer[177]); nullableInt32Array.SetPropertyIndexes( - index: 174, - originalValueIndex: 174, + index: 177, + originalValueIndex: 177, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11289,12 +11499,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt64.SetAccessors( long? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64, 175), + long? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64, 178), long? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt64), - object (ValueBuffer valueBuffer) => valueBuffer[175]); + object (ValueBuffer valueBuffer) => valueBuffer[178]); nullableInt64.SetPropertyIndexes( - index: 175, - originalValueIndex: 175, + index: 178, + originalValueIndex: 178, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11332,12 +11542,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt64Array.SetAccessors( long? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64Array, 176), + long? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64Array, 179), long? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[176]); + object (ValueBuffer valueBuffer) => valueBuffer[179]); nullableInt64Array.SetPropertyIndexes( - index: 176, - originalValueIndex: 176, + index: 179, + originalValueIndex: 179, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11396,12 +11606,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt8.SetAccessors( sbyte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8, 177), + sbyte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8, 180), sbyte? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt8), - object (ValueBuffer valueBuffer) => valueBuffer[177]); + object (ValueBuffer valueBuffer) => valueBuffer[180]); nullableInt8.SetPropertyIndexes( - index: 177, - originalValueIndex: 177, + index: 180, + originalValueIndex: 180, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11447,12 +11657,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt8Array.SetAccessors( sbyte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8Array, 178), + sbyte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8Array, 181), sbyte? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[178]); + object (ValueBuffer valueBuffer) => valueBuffer[181]); nullableInt8Array.SetPropertyIndexes( - index: 178, - originalValueIndex: 178, + index: 181, + originalValueIndex: 181, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11527,12 +11737,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullablePhysicalAddress.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddress, 179), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddress, 182), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(nullablePhysicalAddress), - object (ValueBuffer valueBuffer) => valueBuffer[179]); + object (ValueBuffer valueBuffer) => valueBuffer[182]); nullablePhysicalAddress.SetPropertyIndexes( - index: 179, - originalValueIndex: 179, + index: 182, + originalValueIndex: 182, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11581,12 +11791,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullablePhysicalAddressArray.SetAccessors( PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddressArray, 180), + PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddressArray, 183), PhysicalAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullablePhysicalAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[180]); + object (ValueBuffer valueBuffer) => valueBuffer[183]); nullablePhysicalAddressArray.SetPropertyIndexes( - index: 180, - originalValueIndex: 180, + index: 183, + originalValueIndex: 183, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11666,12 +11876,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableString.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableString, 181), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableString, 184), string (InternalEntityEntry entry) => entry.GetCurrentValue(nullableString), - object (ValueBuffer valueBuffer) => valueBuffer[181]); + object (ValueBuffer valueBuffer) => valueBuffer[184]); nullableString.SetPropertyIndexes( - index: 181, - originalValueIndex: 181, + index: 184, + originalValueIndex: 184, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11712,12 +11922,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableStringArray.SetAccessors( string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringArray, 182), + string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringArray, 185), string[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[182]); + object (ValueBuffer valueBuffer) => valueBuffer[185]); nullableStringArray.SetPropertyIndexes( - index: 182, - originalValueIndex: 182, + index: 185, + originalValueIndex: 185, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11781,12 +11991,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeOnly.SetAccessors( TimeOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnly, 183), + TimeOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnly, 186), TimeOnly? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeOnly), - object (ValueBuffer valueBuffer) => valueBuffer[183]); + object (ValueBuffer valueBuffer) => valueBuffer[186]); nullableTimeOnly.SetPropertyIndexes( - index: 183, - originalValueIndex: 183, + index: 186, + originalValueIndex: 186, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11824,12 +12034,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeOnlyArray.SetAccessors( TimeOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnlyArray, 184), + TimeOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnlyArray, 187), TimeOnly? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[184]); + object (ValueBuffer valueBuffer) => valueBuffer[187]); nullableTimeOnlyArray.SetPropertyIndexes( - index: 184, - originalValueIndex: 184, + index: 187, + originalValueIndex: 187, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11888,12 +12098,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeSpan.SetAccessors( TimeSpan? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpan, 185), + TimeSpan? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpan, 188), TimeSpan? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeSpan), - object (ValueBuffer valueBuffer) => valueBuffer[185]); + object (ValueBuffer valueBuffer) => valueBuffer[188]); nullableTimeSpan.SetPropertyIndexes( - index: 185, - originalValueIndex: 185, + index: 188, + originalValueIndex: 188, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11931,12 +12141,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeSpanArray.SetAccessors( TimeSpan? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpanArray, 186), + TimeSpan? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpanArray, 189), TimeSpan? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeSpanArray), - object (ValueBuffer valueBuffer) => valueBuffer[186]); + object (ValueBuffer valueBuffer) => valueBuffer[189]); nullableTimeSpanArray.SetPropertyIndexes( - index: 186, - originalValueIndex: 186, + index: 189, + originalValueIndex: 189, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11995,12 +12205,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt16.SetAccessors( ushort? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16, 187), + ushort? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16, 190), ushort? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt16), - object (ValueBuffer valueBuffer) => valueBuffer[187]); + object (ValueBuffer valueBuffer) => valueBuffer[190]); nullableUInt16.SetPropertyIndexes( - index: 187, - originalValueIndex: 187, + index: 190, + originalValueIndex: 190, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12046,12 +12256,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt16Array.SetAccessors( ushort? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16Array, 188), + ushort? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16Array, 191), ushort? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[188]); + object (ValueBuffer valueBuffer) => valueBuffer[191]); nullableUInt16Array.SetPropertyIndexes( - index: 188, - originalValueIndex: 188, + index: 191, + originalValueIndex: 191, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12126,12 +12336,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt32.SetAccessors( uint? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32, 189), + uint? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32, 192), uint? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt32), - object (ValueBuffer valueBuffer) => valueBuffer[189]); + object (ValueBuffer valueBuffer) => valueBuffer[192]); nullableUInt32.SetPropertyIndexes( - index: 189, - originalValueIndex: 189, + index: 192, + originalValueIndex: 192, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12177,12 +12387,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt32Array.SetAccessors( uint? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32Array, 190), + uint? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32Array, 193), uint? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[190]); + object (ValueBuffer valueBuffer) => valueBuffer[193]); nullableUInt32Array.SetPropertyIndexes( - index: 190, - originalValueIndex: 190, + index: 193, + originalValueIndex: 193, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12257,12 +12467,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt64.SetAccessors( ulong? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64, 191), + ulong? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64, 194), ulong? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt64), - object (ValueBuffer valueBuffer) => valueBuffer[191]); + object (ValueBuffer valueBuffer) => valueBuffer[194]); nullableUInt64.SetPropertyIndexes( - index: 191, - originalValueIndex: 191, + index: 194, + originalValueIndex: 194, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12312,12 +12522,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt64Array.SetAccessors( ulong? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64Array, 192), + ulong? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64Array, 195), ulong? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[192]); + object (ValueBuffer valueBuffer) => valueBuffer[195]); nullableUInt64Array.SetPropertyIndexes( - index: 192, - originalValueIndex: 192, + index: 195, + originalValueIndex: 195, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12396,12 +12606,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt8.SetAccessors( byte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8, 193), + byte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8, 196), byte? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt8), - object (ValueBuffer valueBuffer) => valueBuffer[193]); + object (ValueBuffer valueBuffer) => valueBuffer[196]); nullableUInt8.SetPropertyIndexes( - index: 193, - originalValueIndex: 193, + index: 196, + originalValueIndex: 196, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12439,12 +12649,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt8Array.SetAccessors( byte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8Array, 194), + byte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8Array, 197), byte? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[194]); + object (ValueBuffer valueBuffer) => valueBuffer[197]); nullableUInt8Array.SetPropertyIndexes( - index: 194, - originalValueIndex: 194, + index: 197, + originalValueIndex: 197, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12503,12 +12713,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUri.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUri, 195), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUri, 198), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUri), - object (ValueBuffer valueBuffer) => valueBuffer[195]); + object (ValueBuffer valueBuffer) => valueBuffer[198]); nullableUri.SetPropertyIndexes( - index: 195, - originalValueIndex: 195, + index: 198, + originalValueIndex: 198, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12557,12 +12767,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUriArray.SetAccessors( Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUriArray, 196), + Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUriArray, 199), Uri[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUriArray), - object (ValueBuffer valueBuffer) => valueBuffer[196]); + object (ValueBuffer valueBuffer) => valueBuffer[199]); nullableUriArray.SetPropertyIndexes( - index: 196, - originalValueIndex: 196, + index: 199, + originalValueIndex: 199, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12641,12 +12851,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddress.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddress, 197), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddress, 200), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddress), - object (ValueBuffer valueBuffer) => valueBuffer[197]); + object (ValueBuffer valueBuffer) => valueBuffer[200]); physicalAddress.SetPropertyIndexes( - index: 197, - originalValueIndex: 197, + index: 200, + originalValueIndex: 200, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12695,12 +12905,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressArray.SetAccessors( PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressArray, 198), + PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressArray, 201), PhysicalAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[198]); + object (ValueBuffer valueBuffer) => valueBuffer[201]); physicalAddressArray.SetPropertyIndexes( - index: 198, - originalValueIndex: 198, + index: 201, + originalValueIndex: 201, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12780,12 +12990,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressToBytesConverterProperty.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToBytesConverterProperty, 199), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToBytesConverterProperty, 202), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[199]); + object (ValueBuffer valueBuffer) => valueBuffer[202]); physicalAddressToBytesConverterProperty.SetPropertyIndexes( - index: 199, - originalValueIndex: 199, + index: 202, + originalValueIndex: 202, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12833,12 +13043,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressToStringConverterProperty.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToStringConverterProperty, 200), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToStringConverterProperty, 203), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[200]); + object (ValueBuffer valueBuffer) => valueBuffer[203]); physicalAddressToStringConverterProperty.SetPropertyIndexes( - index: 200, - originalValueIndex: 200, + index: 203, + originalValueIndex: 203, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12887,12 +13097,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @string.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.String(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.String(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(@string, 201), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(@string, 204), string (InternalEntityEntry entry) => entry.GetCurrentValue(@string), - object (ValueBuffer valueBuffer) => valueBuffer[201]); + object (ValueBuffer valueBuffer) => valueBuffer[204]); @string.SetPropertyIndexes( - index: 201, - originalValueIndex: 201, + index: 204, + originalValueIndex: 204, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12916,38 +13126,106 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None); @string.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); - var stringArray = runtimeEntityType.AddProperty( - "StringArray", - typeof(string[]), - propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringArray", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), - fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); - stringArray.SetGetter( - string[] (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors.StringArray(entity), - bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors.StringArray(entity) == null, - string[] (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors.StringArray(instance), - bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors.StringArray(instance) == null); - stringArray.SetSetter( - (CompiledModelTestBase.ManyTypes entity, string[] value) => ManyTypesUnsafeAccessors.StringArray(entity) = value); - stringArray.SetMaterializationSetter( - (CompiledModelTestBase.ManyTypes entity, string[] value) => ManyTypesUnsafeAccessors.StringArray(entity) = value); - stringArray.SetAccessors( - string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringArray, 202), - string[] (InternalEntityEntry entry) => entry.GetCurrentValue(stringArray), - object (ValueBuffer valueBuffer) => valueBuffer[202]); - stringArray.SetPropertyIndexes( - index: 202, - originalValueIndex: 202, + var stringArray = runtimeEntityType.AddProperty( + "StringArray", + typeof(string[]), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringArray", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + stringArray.SetGetter( + string[] (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors.StringArray(entity), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors.StringArray(entity) == null, + string[] (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors.StringArray(instance), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors.StringArray(instance) == null); + stringArray.SetSetter( + (CompiledModelTestBase.ManyTypes entity, string[] value) => ManyTypesUnsafeAccessors.StringArray(entity) = value); + stringArray.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, string[] value) => ManyTypesUnsafeAccessors.StringArray(entity) = value); + stringArray.SetAccessors( + string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), + string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), + string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringArray, 205), + string[] (InternalEntityEntry entry) => entry.GetCurrentValue(stringArray), + object (ValueBuffer valueBuffer) => valueBuffer[205]); + stringArray.SetPropertyIndexes( + index: 205, + originalValueIndex: 205, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + stringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v)), + keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( + JsonStringReaderWriter.Instance)), + storeTypePostfix: StoreTypePostfix.None, + jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( + JsonStringReaderWriter.Instance), + elementMapping: SqlServerStringTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + keyComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + storeTypePostfix: StoreTypePostfix.None)); + stringArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + + var stringReadOnlyCollection = runtimeEntityType.AddProperty( + "StringReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_stringReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + stringReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance) == null); + stringReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) = ((List)(value))); + stringReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) = ((List)(value))); + stringReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(stringReadOnlyCollection, 206), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(stringReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[206]); + stringReadOnlyCollection.SetPropertyIndexes( + index: 206, + originalValueIndex: 206, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( + stringReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( bool (string v1, string v2) => v1 == v2, int (string v) => ((object)v).GetHashCode(), string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( + keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( bool (string v1, string v2) => v1 == v2, int (string v) => ((object)v).GetHashCode(), string (string v) => v)), @@ -12959,10 +13237,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( + converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), storeTypePostfix: StoreTypePostfix.None, - jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( + jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( comparer: new ValueComparer( @@ -12982,7 +13260,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas unicode: true, dbType: System.Data.DbType.String), storeTypePostfix: StoreTypePostfix.None)); - stringArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + stringReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var stringToBoolConverterProperty = runtimeEntityType.AddProperty( "StringToBoolConverterProperty", @@ -13002,12 +13280,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToBoolConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBoolConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBoolConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBoolConverterProperty, 203), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBoolConverterProperty, 207), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToBoolConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[203]); + object (ValueBuffer valueBuffer) => valueBuffer[207]); stringToBoolConverterProperty.SetPropertyIndexes( - index: 203, - originalValueIndex: 203, + index: 207, + originalValueIndex: 207, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13052,12 +13330,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToBytesConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBytesConverterProperty, 204), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBytesConverterProperty, 208), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[204]); + object (ValueBuffer valueBuffer) => valueBuffer[208]); stringToBytesConverterProperty.SetPropertyIndexes( - index: 204, - originalValueIndex: 204, + index: 208, + originalValueIndex: 208, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13105,12 +13383,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToCharConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToCharConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToCharConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToCharConverterProperty, 205), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToCharConverterProperty, 209), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToCharConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[205]); + object (ValueBuffer valueBuffer) => valueBuffer[209]); stringToCharConverterProperty.SetPropertyIndexes( - index: 205, - originalValueIndex: 205, + index: 209, + originalValueIndex: 209, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13160,12 +13438,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateOnlyConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateOnlyConverterProperty, 206), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateOnlyConverterProperty, 210), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateOnlyConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[206]); + object (ValueBuffer valueBuffer) => valueBuffer[210]); stringToDateOnlyConverterProperty.SetPropertyIndexes( - index: 206, - originalValueIndex: 206, + index: 210, + originalValueIndex: 210, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13212,12 +13490,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateTimeConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeConverterProperty, 207), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeConverterProperty, 211), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateTimeConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[207]); + object (ValueBuffer valueBuffer) => valueBuffer[211]); stringToDateTimeConverterProperty.SetPropertyIndexes( - index: 207, - originalValueIndex: 207, + index: 211, + originalValueIndex: 211, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13264,12 +13542,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateTimeOffsetConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeOffsetConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeOffsetConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeOffsetConverterProperty, 208), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeOffsetConverterProperty, 212), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateTimeOffsetConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[208]); + object (ValueBuffer valueBuffer) => valueBuffer[212]); stringToDateTimeOffsetConverterProperty.SetPropertyIndexes( - index: 208, - originalValueIndex: 208, + index: 212, + originalValueIndex: 212, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13316,12 +13594,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDecimalNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDecimalNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDecimalNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDecimalNumberConverterProperty, 209), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDecimalNumberConverterProperty, 213), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDecimalNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[209]); + object (ValueBuffer valueBuffer) => valueBuffer[213]); stringToDecimalNumberConverterProperty.SetPropertyIndexes( - index: 209, - originalValueIndex: 209, + index: 213, + originalValueIndex: 213, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13368,12 +13646,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDoubleNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDoubleNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDoubleNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDoubleNumberConverterProperty, 210), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDoubleNumberConverterProperty, 214), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDoubleNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[210]); + object (ValueBuffer valueBuffer) => valueBuffer[214]); stringToDoubleNumberConverterProperty.SetPropertyIndexes( - index: 210, - originalValueIndex: 210, + index: 214, + originalValueIndex: 214, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13420,12 +13698,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToEnumConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToEnumConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToEnumConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToEnumConverterProperty, 211), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToEnumConverterProperty, 215), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToEnumConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[211]); + object (ValueBuffer valueBuffer) => valueBuffer[215]); stringToEnumConverterProperty.SetPropertyIndexes( - index: 211, - originalValueIndex: 211, + index: 215, + originalValueIndex: 215, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13469,12 +13747,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToGuidConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToGuidConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToGuidConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToGuidConverterProperty, 212), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToGuidConverterProperty, 216), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToGuidConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[212]); + object (ValueBuffer valueBuffer) => valueBuffer[216]); stringToGuidConverterProperty.SetPropertyIndexes( - index: 212, - originalValueIndex: 212, + index: 216, + originalValueIndex: 216, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13516,12 +13794,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToIntNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToIntNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToIntNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToIntNumberConverterProperty, 213), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToIntNumberConverterProperty, 217), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToIntNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[213]); + object (ValueBuffer valueBuffer) => valueBuffer[217]); stringToIntNumberConverterProperty.SetPropertyIndexes( - index: 213, - originalValueIndex: 213, + index: 217, + originalValueIndex: 217, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13568,12 +13846,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToTimeOnlyConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeOnlyConverterProperty, 214), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeOnlyConverterProperty, 218), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToTimeOnlyConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[214]); + object (ValueBuffer valueBuffer) => valueBuffer[218]); stringToTimeOnlyConverterProperty.SetPropertyIndexes( - index: 214, - originalValueIndex: 214, + index: 218, + originalValueIndex: 218, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13620,12 +13898,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToTimeSpanConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeSpanConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeSpanConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeSpanConverterProperty, 215), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeSpanConverterProperty, 219), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToTimeSpanConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[215]); + object (ValueBuffer valueBuffer) => valueBuffer[219]); stringToTimeSpanConverterProperty.SetPropertyIndexes( - index: 215, - originalValueIndex: 215, + index: 219, + originalValueIndex: 219, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13672,12 +13950,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToUriConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToUriConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToUriConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToUriConverterProperty, 216), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToUriConverterProperty, 220), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToUriConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[216]); + object (ValueBuffer valueBuffer) => valueBuffer[220]); stringToUriConverterProperty.SetPropertyIndexes( - index: 216, - originalValueIndex: 216, + index: 220, + originalValueIndex: 220, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13727,12 +14005,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnly.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnly, 217), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnly, 221), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnly), - object (ValueBuffer valueBuffer) => valueBuffer[217]); + object (ValueBuffer valueBuffer) => valueBuffer[221]); timeOnly.SetPropertyIndexes( - index: 217, - originalValueIndex: 217, + index: 221, + originalValueIndex: 221, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13768,12 +14046,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyArray.SetAccessors( TimeOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyArray, 218), + TimeOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyArray, 222), TimeOnly[] (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[218]); + object (ValueBuffer valueBuffer) => valueBuffer[222]); timeOnlyArray.SetPropertyIndexes( - index: 218, - originalValueIndex: 218, + index: 222, + originalValueIndex: 222, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13832,12 +14110,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyToStringConverterProperty.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToStringConverterProperty, 219), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToStringConverterProperty, 223), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[219]); + object (ValueBuffer valueBuffer) => valueBuffer[223]); timeOnlyToStringConverterProperty.SetPropertyIndexes( - index: 219, - originalValueIndex: 219, + index: 223, + originalValueIndex: 223, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13888,12 +14166,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyToTicksConverterProperty.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToTicksConverterProperty, 220), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToTicksConverterProperty, 224), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[220]); + object (ValueBuffer valueBuffer) => valueBuffer[224]); timeOnlyToTicksConverterProperty.SetPropertyIndexes( - index: 220, - originalValueIndex: 220, + index: 224, + originalValueIndex: 224, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13939,12 +14217,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpan.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpan, 221), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpan, 225), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpan), - object (ValueBuffer valueBuffer) => valueBuffer[221]); + object (ValueBuffer valueBuffer) => valueBuffer[225]); timeSpan.SetPropertyIndexes( - index: 221, - originalValueIndex: 221, + index: 225, + originalValueIndex: 225, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13980,12 +14258,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanArray.SetAccessors( TimeSpan[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanArray, 222), + TimeSpan[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanArray, 226), TimeSpan[] (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanArray), - object (ValueBuffer valueBuffer) => valueBuffer[222]); + object (ValueBuffer valueBuffer) => valueBuffer[226]); timeSpanArray.SetPropertyIndexes( - index: 222, - originalValueIndex: 222, + index: 226, + originalValueIndex: 226, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14044,12 +14322,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanToStringConverterProperty.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToStringConverterProperty, 223), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToStringConverterProperty, 227), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[223]); + object (ValueBuffer valueBuffer) => valueBuffer[227]); timeSpanToStringConverterProperty.SetPropertyIndexes( - index: 223, - originalValueIndex: 223, + index: 227, + originalValueIndex: 227, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14100,12 +14378,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanToTicksConverterProperty.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToTicksConverterProperty, 224), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToTicksConverterProperty, 228), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[224]); + object (ValueBuffer valueBuffer) => valueBuffer[228]); timeSpanToTicksConverterProperty.SetPropertyIndexes( - index: 224, - originalValueIndex: 224, + index: 228, + originalValueIndex: 228, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14150,12 +14428,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt16.SetAccessors( ushort (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16, 225), + ushort (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16, 229), ushort (InternalEntityEntry entry) => entry.GetCurrentValue(uInt16), - object (ValueBuffer valueBuffer) => valueBuffer[225]); + object (ValueBuffer valueBuffer) => valueBuffer[229]); uInt16.SetPropertyIndexes( - index: 225, - originalValueIndex: 225, + index: 229, + originalValueIndex: 229, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14200,12 +14478,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt16Array.SetAccessors( ushort[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16Array, 226), + ushort[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16Array, 230), ushort[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[226]); + object (ValueBuffer valueBuffer) => valueBuffer[230]); uInt16Array.SetPropertyIndexes( - index: 226, - originalValueIndex: 226, + index: 230, + originalValueIndex: 230, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14279,12 +14557,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt32.SetAccessors( uint (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32, 227), + uint (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32, 231), uint (InternalEntityEntry entry) => entry.GetCurrentValue(uInt32), - object (ValueBuffer valueBuffer) => valueBuffer[227]); + object (ValueBuffer valueBuffer) => valueBuffer[231]); uInt32.SetPropertyIndexes( - index: 227, - originalValueIndex: 227, + index: 231, + originalValueIndex: 231, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14329,12 +14607,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt32Array.SetAccessors( uint[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32Array, 228), + uint[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32Array, 232), uint[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[228]); + object (ValueBuffer valueBuffer) => valueBuffer[232]); uInt32Array.SetPropertyIndexes( - index: 228, - originalValueIndex: 228, + index: 232, + originalValueIndex: 232, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14408,12 +14686,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt64.SetAccessors( ulong (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64, 229), + ulong (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64, 233), ulong (InternalEntityEntry entry) => entry.GetCurrentValue(uInt64), - object (ValueBuffer valueBuffer) => valueBuffer[229]); + object (ValueBuffer valueBuffer) => valueBuffer[233]); uInt64.SetPropertyIndexes( - index: 229, - originalValueIndex: 229, + index: 233, + originalValueIndex: 233, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14462,12 +14740,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt64Array.SetAccessors( ulong[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64Array, 230), + ulong[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64Array, 234), ulong[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[230]); + object (ValueBuffer valueBuffer) => valueBuffer[234]); uInt64Array.SetPropertyIndexes( - index: 230, - originalValueIndex: 230, + index: 234, + originalValueIndex: 234, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14546,12 +14824,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt8.SetAccessors( byte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8, 231), + byte (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8, 235), byte (InternalEntityEntry entry) => entry.GetCurrentValue(uInt8), - object (ValueBuffer valueBuffer) => valueBuffer[231]); + object (ValueBuffer valueBuffer) => valueBuffer[235]); uInt8.SetPropertyIndexes( - index: 231, - originalValueIndex: 231, + index: 235, + originalValueIndex: 235, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14587,12 +14865,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt8Array.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8Array, 232), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8Array, 236), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[232]); + object (ValueBuffer valueBuffer) => valueBuffer[236]); uInt8Array.SetPropertyIndexes( - index: 232, - originalValueIndex: 232, + index: 236, + originalValueIndex: 236, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14614,6 +14892,69 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None); uInt8Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( + "UInt8ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_uInt8ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + uInt8ReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance) == null); + uInt8ReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) = ((List)(value))); + uInt8ReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) = ((List)(value))); + uInt8ReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(uInt8ReadOnlyCollection, 237), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(uInt8ReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[237]); + uInt8ReadOnlyCollection.SetPropertyIndexes( + index: 237, + originalValueIndex: 237, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + uInt8ReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v)), + keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( + JsonByteReaderWriter.Instance)), + storeTypePostfix: StoreTypePostfix.None, + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( + JsonByteReaderWriter.Instance), + elementMapping: SqlServerByteTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + keyComparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + providerValueComparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v))); + uInt8ReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var uri = runtimeEntityType.AddProperty( "Uri", typeof(Uri), @@ -14631,12 +14972,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uri.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Uri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Uri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uri, 233), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uri, 238), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(uri), - object (ValueBuffer valueBuffer) => valueBuffer[233]); + object (ValueBuffer valueBuffer) => valueBuffer[238]); uri.SetPropertyIndexes( - index: 233, - originalValueIndex: 233, + index: 238, + originalValueIndex: 238, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14685,12 +15026,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uriArray.SetAccessors( Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uriArray, 234), + Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uriArray, 239), Uri[] (InternalEntityEntry entry) => entry.GetCurrentValue(uriArray), - object (ValueBuffer valueBuffer) => valueBuffer[234]); + object (ValueBuffer valueBuffer) => valueBuffer[239]); uriArray.SetPropertyIndexes( - index: 234, - originalValueIndex: 234, + index: 239, + originalValueIndex: 239, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14770,12 +15111,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uriToStringConverterProperty.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uriToStringConverterProperty, 235), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uriToStringConverterProperty, 240), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(uriToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[235]); + object (ValueBuffer valueBuffer) => valueBuffer[240]); uriToStringConverterProperty.SetPropertyIndexes( - index: 235, - originalValueIndex: 235, + index: 240, + originalValueIndex: 240, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14819,6 +15160,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var id = runtimeEntityType.FindProperty("Id"); var @bool = runtimeEntityType.FindProperty("Bool"); var boolArray = runtimeEntityType.FindProperty("BoolArray"); + var boolReadOnlyCollection = runtimeEntityType.FindProperty("BoolReadOnlyCollection"); var boolToStringConverterProperty = runtimeEntityType.FindProperty("BoolToStringConverterProperty"); var boolToTwoValuesConverterProperty = runtimeEntityType.FindProperty("BoolToTwoValuesConverterProperty"); var boolToZeroOneConverterProperty = runtimeEntityType.FindProperty("BoolToZeroOneConverterProperty"); @@ -14906,12 +15248,14 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var guidToStringConverterProperty = runtimeEntityType.FindProperty("GuidToStringConverterProperty"); var iPAddress = runtimeEntityType.FindProperty("IPAddress"); var iPAddressArray = runtimeEntityType.FindProperty("IPAddressArray"); + var iPAddressReadOnlyCollection = runtimeEntityType.FindProperty("IPAddressReadOnlyCollection"); var iPAddressToBytesConverterProperty = runtimeEntityType.FindProperty("IPAddressToBytesConverterProperty"); var iPAddressToStringConverterProperty = runtimeEntityType.FindProperty("IPAddressToStringConverterProperty"); var int16 = runtimeEntityType.FindProperty("Int16"); var int16Array = runtimeEntityType.FindProperty("Int16Array"); var int32 = runtimeEntityType.FindProperty("Int32"); var int32Array = runtimeEntityType.FindProperty("Int32Array"); + var int32ReadOnlyCollection = runtimeEntityType.FindProperty("Int32ReadOnlyCollection"); var int64 = runtimeEntityType.FindProperty("Int64"); var int64Array = runtimeEntityType.FindProperty("Int64Array"); var int8 = runtimeEntityType.FindProperty("Int8"); @@ -15019,6 +15363,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var physicalAddressToStringConverterProperty = runtimeEntityType.FindProperty("PhysicalAddressToStringConverterProperty"); var @string = runtimeEntityType.FindProperty("String"); var stringArray = runtimeEntityType.FindProperty("StringArray"); + var stringReadOnlyCollection = runtimeEntityType.FindProperty("StringReadOnlyCollection"); var stringToBoolConverterProperty = runtimeEntityType.FindProperty("StringToBoolConverterProperty"); var stringToBytesConverterProperty = runtimeEntityType.FindProperty("StringToBytesConverterProperty"); var stringToCharConverterProperty = runtimeEntityType.FindProperty("StringToCharConverterProperty"); @@ -15049,6 +15394,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var uInt64Array = runtimeEntityType.FindProperty("UInt64Array"); var uInt8 = runtimeEntityType.FindProperty("UInt8"); var uInt8Array = runtimeEntityType.FindProperty("UInt8Array"); + var uInt8ReadOnlyCollection = runtimeEntityType.FindProperty("UInt8ReadOnlyCollection"); var uri = runtimeEntityType.FindProperty("Uri"); var uriArray = runtimeEntityType.FindProperty("UriArray"); var uriToStringConverterProperty = runtimeEntityType.FindProperty("UriToStringConverterProperty"); @@ -15059,21 +15405,23 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) ISnapshot (InternalEntityEntry source) => { var entity = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg = ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), ((ValueComparer)(((IProperty)@bool).GetValueComparer())).Snapshot(source.GetCurrentValue(@bool)), (((IEnumerable)(source.GetCurrentValue(boolArray))) == null ? null : ((bool[])(((ValueComparer>)(((IProperty)boolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(boolArray))))))), ((ValueComparer)(((IProperty)boolToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToStringConverterProperty)), ((ValueComparer)(((IProperty)boolToTwoValuesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToTwoValuesConverterProperty)), ((ValueComparer)(((IProperty)boolToZeroOneConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToZeroOneConverterProperty)), (source.GetCurrentValue(bytes) == null ? null : ((ValueComparer)(((IProperty)bytes).GetValueComparer())).Snapshot(source.GetCurrentValue(bytes))), (((object)(source.GetCurrentValue(bytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)bytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(bytesArray))))))), (source.GetCurrentValue(bytesToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)bytesToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(bytesToStringConverterProperty))), ((ValueComparer)(((IProperty)castingConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(castingConverterProperty)), ((ValueComparer)(((IProperty)@char).GetValueComparer())).Snapshot(source.GetCurrentValue(@char)), (((IEnumerable)(source.GetCurrentValue(charArray))) == null ? null : ((char[])(((ValueComparer>)(((IProperty)charArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(charArray))))))), ((ValueComparer)(((IProperty)charToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(charToStringConverterProperty)), ((ValueComparer)(((IProperty)dateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnly)), (((IEnumerable)(source.GetCurrentValue(dateOnlyArray))) == null ? null : ((DateOnly[])(((ValueComparer>)(((IProperty)dateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateOnlyArray))))))), ((ValueComparer)(((IProperty)dateOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTime)), (((IEnumerable)(source.GetCurrentValue(dateTimeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)dateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateTimeArray))))))), ((ValueComparer)(((IProperty)dateTimeOffsetToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBytesConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToTicksConverterProperty)), ((ValueComparer)(((IProperty)@decimal).GetValueComparer())).Snapshot(source.GetCurrentValue(@decimal)), (((IEnumerable)(source.GetCurrentValue(decimalArray))) == null ? null : ((decimal[])(((ValueComparer>)(((IProperty)decimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(decimalArray))))))), ((ValueComparer)(((IProperty)decimalNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)decimalNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)@double).GetValueComparer())).Snapshot(source.GetCurrentValue(@double)), (((IEnumerable)(source.GetCurrentValue(doubleArray))) == null ? null : ((double[])(((ValueComparer>)(((IProperty)doubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(doubleArray)))))))))); + var liftedArg = ((ISnapshot)(new Snapshot, bool, bool, bool, byte[], byte[][], byte[], int, char, char[], char, DateOnly, DateOnly[], DateOnly, DateTime, DateTime[], DateTimeOffset, DateTimeOffset, DateTimeOffset, DateTime, DateTime, DateTime, decimal, decimal[], decimal, decimal, double>(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), ((ValueComparer)(((IProperty)@bool).GetValueComparer())).Snapshot(source.GetCurrentValue(@bool)), (((IEnumerable)(source.GetCurrentValue(boolArray))) == null ? null : ((bool[])(((ValueComparer>)(((IProperty)boolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(boolArray))))))), (((IEnumerable)(source.GetCurrentValue>(boolReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)boolReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(boolReadOnlyCollection))))))), ((ValueComparer)(((IProperty)boolToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToStringConverterProperty)), ((ValueComparer)(((IProperty)boolToTwoValuesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToTwoValuesConverterProperty)), ((ValueComparer)(((IProperty)boolToZeroOneConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToZeroOneConverterProperty)), (source.GetCurrentValue(bytes) == null ? null : ((ValueComparer)(((IProperty)bytes).GetValueComparer())).Snapshot(source.GetCurrentValue(bytes))), (((object)(source.GetCurrentValue(bytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)bytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(bytesArray))))))), (source.GetCurrentValue(bytesToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)bytesToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(bytesToStringConverterProperty))), ((ValueComparer)(((IProperty)castingConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(castingConverterProperty)), ((ValueComparer)(((IProperty)@char).GetValueComparer())).Snapshot(source.GetCurrentValue(@char)), (((IEnumerable)(source.GetCurrentValue(charArray))) == null ? null : ((char[])(((ValueComparer>)(((IProperty)charArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(charArray))))))), ((ValueComparer)(((IProperty)charToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(charToStringConverterProperty)), ((ValueComparer)(((IProperty)dateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnly)), (((IEnumerable)(source.GetCurrentValue(dateOnlyArray))) == null ? null : ((DateOnly[])(((ValueComparer>)(((IProperty)dateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateOnlyArray))))))), ((ValueComparer)(((IProperty)dateOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTime)), (((IEnumerable)(source.GetCurrentValue(dateTimeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)dateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateTimeArray))))))), ((ValueComparer)(((IProperty)dateTimeOffsetToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBytesConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToTicksConverterProperty)), ((ValueComparer)(((IProperty)@decimal).GetValueComparer())).Snapshot(source.GetCurrentValue(@decimal)), (((IEnumerable)(source.GetCurrentValue(decimalArray))) == null ? null : ((decimal[])(((ValueComparer>)(((IProperty)decimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(decimalArray))))))), ((ValueComparer)(((IProperty)decimalNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)decimalNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)@double).GetValueComparer())).Snapshot(source.GetCurrentValue(@double))))); var entity0 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg0 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], List, List, CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], List, List, CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], List, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32, CompiledModelTestBase.EnumU16, CompiledModelTestBase.EnumU16[]>(((ValueComparer)(((IProperty)doubleNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)doubleNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)enum16).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16)), (((IEnumerable)(source.GetCurrentValue(enum16Array))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16Array))))))), ((ValueComparer)(((IProperty)enum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16AsString)), (((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16Collection))))))), ((ValueComparer)(((IProperty)enum32).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32)), (((IEnumerable)(source.GetCurrentValue(enum32Array))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32Array))))))), ((ValueComparer)(((IProperty)enum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32AsString)), (((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32Collection))))))), ((ValueComparer)(((IProperty)enum64).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64)), (((IEnumerable)(source.GetCurrentValue(enum64Array))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64Array))))))), ((ValueComparer)(((IProperty)enum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64AsString)), (((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64Collection))))))), ((ValueComparer)(((IProperty)enum8).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8)), (((IEnumerable)(source.GetCurrentValue(enum8Array))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8Array))))))), ((ValueComparer)(((IProperty)enum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8AsString)), (((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8Collection))))))), ((ValueComparer)(((IProperty)enumToNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToNumberConverterProperty)), ((ValueComparer)(((IProperty)enumToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToStringConverterProperty)), ((ValueComparer)(((IProperty)enumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16)), (((IEnumerable)(source.GetCurrentValue(enumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16Array)))))))))); + var liftedArg0 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], List, List, CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], List, List, CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], List, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32, CompiledModelTestBase.EnumU16>((((IEnumerable)(source.GetCurrentValue(doubleArray))) == null ? null : ((double[])(((ValueComparer>)(((IProperty)doubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(doubleArray))))))), ((ValueComparer)(((IProperty)doubleNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)doubleNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)enum16).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16)), (((IEnumerable)(source.GetCurrentValue(enum16Array))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16Array))))))), ((ValueComparer)(((IProperty)enum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16AsString)), (((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16Collection))))))), ((ValueComparer)(((IProperty)enum32).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32)), (((IEnumerable)(source.GetCurrentValue(enum32Array))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32Array))))))), ((ValueComparer)(((IProperty)enum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32AsString)), (((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32Collection))))))), ((ValueComparer)(((IProperty)enum64).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64)), (((IEnumerable)(source.GetCurrentValue(enum64Array))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64Array))))))), ((ValueComparer)(((IProperty)enum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64AsString)), (((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64Collection))))))), ((ValueComparer)(((IProperty)enum8).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8)), (((IEnumerable)(source.GetCurrentValue(enum8Array))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8Array))))))), ((ValueComparer)(((IProperty)enum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8AsString)), (((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8Collection))))))), ((ValueComparer)(((IProperty)enumToNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToNumberConverterProperty)), ((ValueComparer)(((IProperty)enumToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToStringConverterProperty)), ((ValueComparer)(((IProperty)enumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16))))); var entity1 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg1 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], List, List, CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], List, List, CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], List, List, float, float[], Guid, Guid[], Guid, Guid, IPAddress, IPAddress[]>(((ValueComparer)(((IProperty)enumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16AsString)), (((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16Collection))))))), ((ValueComparer)(((IProperty)enumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32)), (((IEnumerable)(source.GetCurrentValue(enumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32Array))))))), ((ValueComparer)(((IProperty)enumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32AsString)), (((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32Collection))))))), ((ValueComparer)(((IProperty)enumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64)), (((IEnumerable)(source.GetCurrentValue(enumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64Array))))))), ((ValueComparer)(((IProperty)enumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64AsString)), (((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64Collection))))))), ((ValueComparer)(((IProperty)enumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8)), (((IEnumerable)(source.GetCurrentValue(enumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8Array))))))), ((ValueComparer)(((IProperty)enumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8AsString)), (((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8Collection))))))), ((ValueComparer)(((IProperty)@float).GetValueComparer())).Snapshot(source.GetCurrentValue(@float)), (((IEnumerable)(source.GetCurrentValue(floatArray))) == null ? null : ((float[])(((ValueComparer>)(((IProperty)floatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(floatArray))))))), ((ValueComparer)(((IProperty)guid).GetValueComparer())).Snapshot(source.GetCurrentValue(guid)), (((IEnumerable)(source.GetCurrentValue(guidArray))) == null ? null : ((Guid[])(((ValueComparer>)(((IProperty)guidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(guidArray))))))), ((ValueComparer)(((IProperty)guidToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToBytesConverterProperty)), ((ValueComparer)(((IProperty)guidToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToStringConverterProperty)), (source.GetCurrentValue(iPAddress) == null ? null : ((ValueComparer)(((IProperty)iPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddress))), (((object)(source.GetCurrentValue(iPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)iPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(iPAddressArray)))))))))); + var liftedArg1 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], List, List, CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], List, List, CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], List, List, float, float[], Guid, Guid[], Guid, Guid, IPAddress>((((IEnumerable)(source.GetCurrentValue(enumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16Array))))))), ((ValueComparer)(((IProperty)enumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16AsString)), (((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16Collection))))))), ((ValueComparer)(((IProperty)enumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32)), (((IEnumerable)(source.GetCurrentValue(enumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32Array))))))), ((ValueComparer)(((IProperty)enumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32AsString)), (((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32Collection))))))), ((ValueComparer)(((IProperty)enumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64)), (((IEnumerable)(source.GetCurrentValue(enumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64Array))))))), ((ValueComparer)(((IProperty)enumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64AsString)), (((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64Collection))))))), ((ValueComparer)(((IProperty)enumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8)), (((IEnumerable)(source.GetCurrentValue(enumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8Array))))))), ((ValueComparer)(((IProperty)enumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8AsString)), (((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8Collection))))))), ((ValueComparer)(((IProperty)@float).GetValueComparer())).Snapshot(source.GetCurrentValue(@float)), (((IEnumerable)(source.GetCurrentValue(floatArray))) == null ? null : ((float[])(((ValueComparer>)(((IProperty)floatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(floatArray))))))), ((ValueComparer)(((IProperty)guid).GetValueComparer())).Snapshot(source.GetCurrentValue(guid)), (((IEnumerable)(source.GetCurrentValue(guidArray))) == null ? null : ((Guid[])(((ValueComparer>)(((IProperty)guidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(guidArray))))))), ((ValueComparer)(((IProperty)guidToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToBytesConverterProperty)), ((ValueComparer)(((IProperty)guidToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToStringConverterProperty)), (source.GetCurrentValue(iPAddress) == null ? null : ((ValueComparer)(((IProperty)iPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddress)))))); var entity2 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg2 = ((ISnapshot)(new Snapshot((source.GetCurrentValue(iPAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToBytesConverterProperty))), (source.GetCurrentValue(iPAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToStringConverterProperty))), ((ValueComparer)(((IProperty)int16).GetValueComparer())).Snapshot(source.GetCurrentValue(int16)), (((IEnumerable)(source.GetCurrentValue(int16Array))) == null ? null : ((short[])(((ValueComparer>)(((IProperty)int16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int16Array))))))), ((ValueComparer)(((IProperty)int32).GetValueComparer())).Snapshot(source.GetCurrentValue(int32)), (((IEnumerable)(source.GetCurrentValue(int32Array))) == null ? null : ((int[])(((ValueComparer>)(((IProperty)int32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int32Array))))))), ((ValueComparer)(((IProperty)int64).GetValueComparer())).Snapshot(source.GetCurrentValue(int64)), (((IEnumerable)(source.GetCurrentValue(int64Array))) == null ? null : ((long[])(((ValueComparer>)(((IProperty)int64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int64Array))))))), ((ValueComparer)(((IProperty)int8).GetValueComparer())).Snapshot(source.GetCurrentValue(int8)), (((IEnumerable)(source.GetCurrentValue(int8Array))) == null ? null : ((sbyte[])(((ValueComparer>)(((IProperty)int8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int8Array))))))), ((ValueComparer)(((IProperty)intNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)intNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToStringConverterProperty)), (source.GetCurrentValue(nullIntToNullStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)nullIntToNullStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(nullIntToNullStringConverterProperty))), (source.GetCurrentValue(nullableBool) == null ? null : ((ValueComparer)(((IProperty)nullableBool).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBool))), (((IEnumerable)(source.GetCurrentValue(nullableBoolArray))) == null ? null : ((bool? [])(((ValueComparer>)(((IProperty)nullableBoolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableBoolArray))))))), (source.GetCurrentValue(nullableBytes) == null ? null : ((ValueComparer)(((IProperty)nullableBytes).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBytes))), (((object)(source.GetCurrentValue(nullableBytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)nullableBytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableBytesArray))))))), (source.GetCurrentValue(nullableChar) == null ? null : ((ValueComparer)(((IProperty)nullableChar).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableChar))), (((IEnumerable)(source.GetCurrentValue(nullableCharArray))) == null ? null : ((char? [])(((ValueComparer>)(((IProperty)nullableCharArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableCharArray))))))), (source.GetCurrentValue(nullableDateOnly) == null ? null : ((ValueComparer)(((IProperty)nullableDateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateOnly))), (((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))) == null ? null : ((DateOnly? [])(((ValueComparer>)(((IProperty)nullableDateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))))))), (source.GetCurrentValue(nullableDateTime) == null ? null : ((ValueComparer)(((IProperty)nullableDateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateTime))), (((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))) == null ? null : ((DateTime? [])(((ValueComparer>)(((IProperty)nullableDateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))))))), (source.GetCurrentValue(nullableDecimal) == null ? null : ((ValueComparer)(((IProperty)nullableDecimal).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDecimal))), (((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))) == null ? null : ((decimal? [])(((ValueComparer>)(((IProperty)nullableDecimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))))))), (source.GetCurrentValue(nullableDouble) == null ? null : ((ValueComparer)(((IProperty)nullableDouble).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDouble))), (((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))) == null ? null : ((double? [])(((ValueComparer>)(((IProperty)nullableDoubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))))))), (source.GetCurrentValue(nullableEnum16) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))))))), (source.GetCurrentValue(nullableEnum16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16AsString)))))); + var liftedArg2 = ((ISnapshot)(new Snapshot, IPAddress, IPAddress, short, short[], int, int[], IReadOnlyCollection, long, long[], sbyte, sbyte[], int, int, int?, bool?, bool? [], byte[], byte[][], char?, char? [], DateOnly?, DateOnly? [], DateTime?, DateTime? [], decimal?, decimal? [], double?, double? []>((((object)(source.GetCurrentValue(iPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)iPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(iPAddressArray))))))), (((object)(source.GetCurrentValue>(iPAddressReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer)(((IProperty)iPAddressReadOnlyCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(iPAddressReadOnlyCollection))))))), (source.GetCurrentValue(iPAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToBytesConverterProperty))), (source.GetCurrentValue(iPAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToStringConverterProperty))), ((ValueComparer)(((IProperty)int16).GetValueComparer())).Snapshot(source.GetCurrentValue(int16)), (((IEnumerable)(source.GetCurrentValue(int16Array))) == null ? null : ((short[])(((ValueComparer>)(((IProperty)int16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int16Array))))))), ((ValueComparer)(((IProperty)int32).GetValueComparer())).Snapshot(source.GetCurrentValue(int32)), (((IEnumerable)(source.GetCurrentValue(int32Array))) == null ? null : ((int[])(((ValueComparer>)(((IProperty)int32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int32Array))))))), (((IEnumerable)(source.GetCurrentValue>(int32ReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)int32ReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(int32ReadOnlyCollection))))))), ((ValueComparer)(((IProperty)int64).GetValueComparer())).Snapshot(source.GetCurrentValue(int64)), (((IEnumerable)(source.GetCurrentValue(int64Array))) == null ? null : ((long[])(((ValueComparer>)(((IProperty)int64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int64Array))))))), ((ValueComparer)(((IProperty)int8).GetValueComparer())).Snapshot(source.GetCurrentValue(int8)), (((IEnumerable)(source.GetCurrentValue(int8Array))) == null ? null : ((sbyte[])(((ValueComparer>)(((IProperty)int8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int8Array))))))), ((ValueComparer)(((IProperty)intNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)intNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToStringConverterProperty)), (source.GetCurrentValue(nullIntToNullStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)nullIntToNullStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(nullIntToNullStringConverterProperty))), (source.GetCurrentValue(nullableBool) == null ? null : ((ValueComparer)(((IProperty)nullableBool).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBool))), (((IEnumerable)(source.GetCurrentValue(nullableBoolArray))) == null ? null : ((bool? [])(((ValueComparer>)(((IProperty)nullableBoolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableBoolArray))))))), (source.GetCurrentValue(nullableBytes) == null ? null : ((ValueComparer)(((IProperty)nullableBytes).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBytes))), (((object)(source.GetCurrentValue(nullableBytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)nullableBytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableBytesArray))))))), (source.GetCurrentValue(nullableChar) == null ? null : ((ValueComparer)(((IProperty)nullableChar).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableChar))), (((IEnumerable)(source.GetCurrentValue(nullableCharArray))) == null ? null : ((char? [])(((ValueComparer>)(((IProperty)nullableCharArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableCharArray))))))), (source.GetCurrentValue(nullableDateOnly) == null ? null : ((ValueComparer)(((IProperty)nullableDateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateOnly))), (((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))) == null ? null : ((DateOnly? [])(((ValueComparer>)(((IProperty)nullableDateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))))))), (source.GetCurrentValue(nullableDateTime) == null ? null : ((ValueComparer)(((IProperty)nullableDateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateTime))), (((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))) == null ? null : ((DateTime? [])(((ValueComparer>)(((IProperty)nullableDateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))))))), (source.GetCurrentValue(nullableDecimal) == null ? null : ((ValueComparer)(((IProperty)nullableDecimal).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDecimal))), (((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))) == null ? null : ((decimal? [])(((ValueComparer>)(((IProperty)nullableDecimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))))))), (source.GetCurrentValue(nullableDouble) == null ? null : ((ValueComparer)(((IProperty)nullableDouble).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDouble))), (((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))) == null ? null : ((double? [])(((ValueComparer>)(((IProperty)nullableDoubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDoubleArray)))))))))); var entity3 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg3 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], List, List, CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], List, List, CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], List, List, CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], List, List, CompiledModelTestBase.EnumU32?, CompiledModelTestBase.EnumU32? [], CompiledModelTestBase.EnumU32?>((((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))))))), (source.GetCurrentValue(nullableEnum32) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))))))), (source.GetCurrentValue(nullableEnum32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))))))), (source.GetCurrentValue(nullableEnum64) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))))))), (source.GetCurrentValue(nullableEnum64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))))))), (source.GetCurrentValue(nullableEnum8) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))))))), (source.GetCurrentValue(nullableEnum8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))))))), (source.GetCurrentValue(nullableEnumU16) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))))))), (source.GetCurrentValue(nullableEnumU16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))))))), (source.GetCurrentValue(nullableEnumU32) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))))))), (source.GetCurrentValue(nullableEnumU32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32AsString)))))); + var liftedArg3 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], List, List, CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], List, List, CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], List, List, CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], List, List>((source.GetCurrentValue(nullableEnum16) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))))))), (source.GetCurrentValue(nullableEnum16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))))))), (source.GetCurrentValue(nullableEnum32) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))))))), (source.GetCurrentValue(nullableEnum32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))))))), (source.GetCurrentValue(nullableEnum64) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))))))), (source.GetCurrentValue(nullableEnum64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))))))), (source.GetCurrentValue(nullableEnum8) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))))))), (source.GetCurrentValue(nullableEnum8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))))))), (source.GetCurrentValue(nullableEnumU16) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))))))), (source.GetCurrentValue(nullableEnumU16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection)))))))))); var entity4 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg4 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], List, List, CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], List, List, float?, float? [], Guid?, Guid? [], IPAddress, IPAddress[], short?, short? [], int?, int? [], long?, long? [], sbyte?, sbyte? [], PhysicalAddress>((((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))))))), (source.GetCurrentValue(nullableEnumU64) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))))))), (source.GetCurrentValue(nullableEnumU64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))))))), (source.GetCurrentValue(nullableEnumU8) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))))))), (source.GetCurrentValue(nullableEnumU8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))))))), (source.GetCurrentValue(nullableFloat) == null ? null : ((ValueComparer)(((IProperty)nullableFloat).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableFloat))), (((IEnumerable)(source.GetCurrentValue(nullableFloatArray))) == null ? null : ((float? [])(((ValueComparer>)(((IProperty)nullableFloatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableFloatArray))))))), (source.GetCurrentValue(nullableGuid) == null ? null : ((ValueComparer)(((IProperty)nullableGuid).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableGuid))), (((IEnumerable)(source.GetCurrentValue(nullableGuidArray))) == null ? null : ((Guid? [])(((ValueComparer>)(((IProperty)nullableGuidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableGuidArray))))))), (source.GetCurrentValue(nullableIPAddress) == null ? null : ((ValueComparer)(((IProperty)nullableIPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableIPAddress))), (((object)(source.GetCurrentValue(nullableIPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)nullableIPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableIPAddressArray))))))), (source.GetCurrentValue(nullableInt16) == null ? null : ((ValueComparer)(((IProperty)nullableInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt16))), (((IEnumerable)(source.GetCurrentValue(nullableInt16Array))) == null ? null : ((short? [])(((ValueComparer>)(((IProperty)nullableInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt16Array))))))), (source.GetCurrentValue(nullableInt32) == null ? null : ((ValueComparer)(((IProperty)nullableInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt32))), (((IEnumerable)(source.GetCurrentValue(nullableInt32Array))) == null ? null : ((int? [])(((ValueComparer>)(((IProperty)nullableInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt32Array))))))), (source.GetCurrentValue(nullableInt64) == null ? null : ((ValueComparer)(((IProperty)nullableInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt64))), (((IEnumerable)(source.GetCurrentValue(nullableInt64Array))) == null ? null : ((long? [])(((ValueComparer>)(((IProperty)nullableInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt64Array))))))), (source.GetCurrentValue(nullableInt8) == null ? null : ((ValueComparer)(((IProperty)nullableInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt8))), (((IEnumerable)(source.GetCurrentValue(nullableInt8Array))) == null ? null : ((sbyte? [])(((ValueComparer>)(((IProperty)nullableInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt8Array))))))), (source.GetCurrentValue(nullablePhysicalAddress) == null ? null : ((ValueComparer)(((IProperty)nullablePhysicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullablePhysicalAddress)))))); + var liftedArg4 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], List, List, CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], List, List, float?, float? [], Guid?, Guid? [], IPAddress, IPAddress[], short?, short? [], int?, int? [], long?, long? []>((source.GetCurrentValue(nullableEnumU32) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))))))), (source.GetCurrentValue(nullableEnumU32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))))))), (source.GetCurrentValue(nullableEnumU64) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))))))), (source.GetCurrentValue(nullableEnumU64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))))))), (source.GetCurrentValue(nullableEnumU8) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))))))), (source.GetCurrentValue(nullableEnumU8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))))))), (source.GetCurrentValue(nullableFloat) == null ? null : ((ValueComparer)(((IProperty)nullableFloat).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableFloat))), (((IEnumerable)(source.GetCurrentValue(nullableFloatArray))) == null ? null : ((float? [])(((ValueComparer>)(((IProperty)nullableFloatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableFloatArray))))))), (source.GetCurrentValue(nullableGuid) == null ? null : ((ValueComparer)(((IProperty)nullableGuid).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableGuid))), (((IEnumerable)(source.GetCurrentValue(nullableGuidArray))) == null ? null : ((Guid? [])(((ValueComparer>)(((IProperty)nullableGuidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableGuidArray))))))), (source.GetCurrentValue(nullableIPAddress) == null ? null : ((ValueComparer)(((IProperty)nullableIPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableIPAddress))), (((object)(source.GetCurrentValue(nullableIPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)nullableIPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableIPAddressArray))))))), (source.GetCurrentValue(nullableInt16) == null ? null : ((ValueComparer)(((IProperty)nullableInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt16))), (((IEnumerable)(source.GetCurrentValue(nullableInt16Array))) == null ? null : ((short? [])(((ValueComparer>)(((IProperty)nullableInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt16Array))))))), (source.GetCurrentValue(nullableInt32) == null ? null : ((ValueComparer)(((IProperty)nullableInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt32))), (((IEnumerable)(source.GetCurrentValue(nullableInt32Array))) == null ? null : ((int? [])(((ValueComparer>)(((IProperty)nullableInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt32Array))))))), (source.GetCurrentValue(nullableInt64) == null ? null : ((ValueComparer)(((IProperty)nullableInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt64))), (((IEnumerable)(source.GetCurrentValue(nullableInt64Array))) == null ? null : ((long? [])(((ValueComparer>)(((IProperty)nullableInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt64Array)))))))))); var entity5 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg5 = ((ISnapshot)(new Snapshot((((object)(source.GetCurrentValue(nullablePhysicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)nullablePhysicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullablePhysicalAddressArray))))))), (source.GetCurrentValue(nullableString) == null ? null : ((ValueComparer)(((IProperty)nullableString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableString))), (((object)(source.GetCurrentValue(nullableStringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)nullableStringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringArray))))))), (source.GetCurrentValue(nullableTimeOnly) == null ? null : ((ValueComparer)(((IProperty)nullableTimeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeOnly))), (((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))) == null ? null : ((TimeOnly? [])(((ValueComparer>)(((IProperty)nullableTimeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))))))), (source.GetCurrentValue(nullableTimeSpan) == null ? null : ((ValueComparer)(((IProperty)nullableTimeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeSpan))), (((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))) == null ? null : ((TimeSpan? [])(((ValueComparer>)(((IProperty)nullableTimeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))))))), (source.GetCurrentValue(nullableUInt16) == null ? null : ((ValueComparer)(((IProperty)nullableUInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt16))), (((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))) == null ? null : ((ushort? [])(((ValueComparer>)(((IProperty)nullableUInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))))))), (source.GetCurrentValue(nullableUInt32) == null ? null : ((ValueComparer)(((IProperty)nullableUInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt32))), (((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))) == null ? null : ((uint? [])(((ValueComparer>)(((IProperty)nullableUInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))))))), (source.GetCurrentValue(nullableUInt64) == null ? null : ((ValueComparer)(((IProperty)nullableUInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt64))), (((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))) == null ? null : ((ulong? [])(((ValueComparer>)(((IProperty)nullableUInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))))))), (source.GetCurrentValue(nullableUInt8) == null ? null : ((ValueComparer)(((IProperty)nullableUInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt8))), (((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))) == null ? null : ((byte? [])(((ValueComparer>)(((IProperty)nullableUInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))))))), (source.GetCurrentValue(nullableUri) == null ? null : ((ValueComparer)(((IProperty)nullableUri).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUri))), (((object)(source.GetCurrentValue(nullableUriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)nullableUriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableUriArray))))))), (source.GetCurrentValue(physicalAddress) == null ? null : ((ValueComparer)(((IProperty)physicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddress))), (((object)(source.GetCurrentValue(physicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)physicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(physicalAddressArray))))))), (source.GetCurrentValue(physicalAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToBytesConverterProperty))), (source.GetCurrentValue(physicalAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToStringConverterProperty))), (source.GetCurrentValue(@string) == null ? null : ((ValueComparer)(((IProperty)@string).GetValueComparer())).Snapshot(source.GetCurrentValue(@string))), (((object)(source.GetCurrentValue(stringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)stringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringArray))))))), (source.GetCurrentValue(stringToBoolConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBoolConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBoolConverterProperty))), (source.GetCurrentValue(stringToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBytesConverterProperty))), (source.GetCurrentValue(stringToCharConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToCharConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToCharConverterProperty))), (source.GetCurrentValue(stringToDateOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateOnlyConverterProperty))), (source.GetCurrentValue(stringToDateTimeConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeConverterProperty))), (source.GetCurrentValue(stringToDateTimeOffsetConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeOffsetConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeOffsetConverterProperty))), (source.GetCurrentValue(stringToDecimalNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDecimalNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDecimalNumberConverterProperty)))))); + var liftedArg5 = ((ISnapshot)(new Snapshot, string, string, string>((source.GetCurrentValue(nullableInt8) == null ? null : ((ValueComparer)(((IProperty)nullableInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt8))), (((IEnumerable)(source.GetCurrentValue(nullableInt8Array))) == null ? null : ((sbyte? [])(((ValueComparer>)(((IProperty)nullableInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt8Array))))))), (source.GetCurrentValue(nullablePhysicalAddress) == null ? null : ((ValueComparer)(((IProperty)nullablePhysicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullablePhysicalAddress))), (((object)(source.GetCurrentValue(nullablePhysicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)nullablePhysicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullablePhysicalAddressArray))))))), (source.GetCurrentValue(nullableString) == null ? null : ((ValueComparer)(((IProperty)nullableString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableString))), (((object)(source.GetCurrentValue(nullableStringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)nullableStringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringArray))))))), (source.GetCurrentValue(nullableTimeOnly) == null ? null : ((ValueComparer)(((IProperty)nullableTimeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeOnly))), (((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))) == null ? null : ((TimeOnly? [])(((ValueComparer>)(((IProperty)nullableTimeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))))))), (source.GetCurrentValue(nullableTimeSpan) == null ? null : ((ValueComparer)(((IProperty)nullableTimeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeSpan))), (((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))) == null ? null : ((TimeSpan? [])(((ValueComparer>)(((IProperty)nullableTimeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))))))), (source.GetCurrentValue(nullableUInt16) == null ? null : ((ValueComparer)(((IProperty)nullableUInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt16))), (((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))) == null ? null : ((ushort? [])(((ValueComparer>)(((IProperty)nullableUInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))))))), (source.GetCurrentValue(nullableUInt32) == null ? null : ((ValueComparer)(((IProperty)nullableUInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt32))), (((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))) == null ? null : ((uint? [])(((ValueComparer>)(((IProperty)nullableUInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))))))), (source.GetCurrentValue(nullableUInt64) == null ? null : ((ValueComparer)(((IProperty)nullableUInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt64))), (((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))) == null ? null : ((ulong? [])(((ValueComparer>)(((IProperty)nullableUInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))))))), (source.GetCurrentValue(nullableUInt8) == null ? null : ((ValueComparer)(((IProperty)nullableUInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt8))), (((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))) == null ? null : ((byte? [])(((ValueComparer>)(((IProperty)nullableUInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))))))), (source.GetCurrentValue(nullableUri) == null ? null : ((ValueComparer)(((IProperty)nullableUri).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUri))), (((object)(source.GetCurrentValue(nullableUriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)nullableUriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableUriArray))))))), (source.GetCurrentValue(physicalAddress) == null ? null : ((ValueComparer)(((IProperty)physicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddress))), (((object)(source.GetCurrentValue(physicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)physicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(physicalAddressArray))))))), (source.GetCurrentValue(physicalAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToBytesConverterProperty))), (source.GetCurrentValue(physicalAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToStringConverterProperty))), (source.GetCurrentValue(@string) == null ? null : ((ValueComparer)(((IProperty)@string).GetValueComparer())).Snapshot(source.GetCurrentValue(@string))), (((object)(source.GetCurrentValue(stringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)stringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringArray))))))), (((object)(source.GetCurrentValue>(stringReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer)(((IProperty)stringReadOnlyCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(stringReadOnlyCollection))))))), (source.GetCurrentValue(stringToBoolConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBoolConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBoolConverterProperty))), (source.GetCurrentValue(stringToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBytesConverterProperty))), (source.GetCurrentValue(stringToCharConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToCharConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToCharConverterProperty)))))); var entity6 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - return ((ISnapshot)(new MultiSnapshot(new ISnapshot[] { liftedArg, liftedArg0, liftedArg1, liftedArg2, liftedArg3, liftedArg4, liftedArg5, ((ISnapshot)(new Snapshot((source.GetCurrentValue(stringToDoubleNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDoubleNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDoubleNumberConverterProperty))), (source.GetCurrentValue(stringToEnumConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToEnumConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToEnumConverterProperty))), (source.GetCurrentValue(stringToGuidConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToGuidConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToGuidConverterProperty))), (source.GetCurrentValue(stringToIntNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToIntNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToIntNumberConverterProperty))), (source.GetCurrentValue(stringToTimeOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeOnlyConverterProperty))), (source.GetCurrentValue(stringToTimeSpanConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeSpanConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeSpanConverterProperty))), (source.GetCurrentValue(stringToUriConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToUriConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToUriConverterProperty))), ((ValueComparer)(((IProperty)timeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnly)), (((IEnumerable)(source.GetCurrentValue(timeOnlyArray))) == null ? null : ((TimeOnly[])(((ValueComparer>)(((IProperty)timeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeOnlyArray))))))), ((ValueComparer)(((IProperty)timeOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)timeOnlyToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToTicksConverterProperty)), ((ValueComparer)(((IProperty)timeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpan)), (((IEnumerable)(source.GetCurrentValue(timeSpanArray))) == null ? null : ((TimeSpan[])(((ValueComparer>)(((IProperty)timeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeSpanArray))))))), ((ValueComparer)(((IProperty)timeSpanToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToStringConverterProperty)), ((ValueComparer)(((IProperty)timeSpanToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToTicksConverterProperty)), ((ValueComparer)(((IProperty)uInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt16)), (((IEnumerable)(source.GetCurrentValue(uInt16Array))) == null ? null : ((ushort[])(((ValueComparer>)(((IProperty)uInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt16Array))))))), ((ValueComparer)(((IProperty)uInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt32)), (((IEnumerable)(source.GetCurrentValue(uInt32Array))) == null ? null : ((uint[])(((ValueComparer>)(((IProperty)uInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt32Array))))))), ((ValueComparer)(((IProperty)uInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt64)), (((IEnumerable)(source.GetCurrentValue(uInt64Array))) == null ? null : ((ulong[])(((ValueComparer>)(((IProperty)uInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt64Array))))))), ((ValueComparer)(((IProperty)uInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8)), (source.GetCurrentValue(uInt8Array) == null ? null : ((ValueComparer)(((IProperty)uInt8Array).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8Array))), (source.GetCurrentValue(uri) == null ? null : ((ValueComparer)(((IProperty)uri).GetValueComparer())).Snapshot(source.GetCurrentValue(uri))), (((object)(source.GetCurrentValue(uriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)uriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(uriArray))))))), (source.GetCurrentValue(uriToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)uriToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(uriToStringConverterProperty)))))) }))); + var liftedArg6 = ((ISnapshot)(new Snapshot, Uri, Uri[]>((source.GetCurrentValue(stringToDateOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateOnlyConverterProperty))), (source.GetCurrentValue(stringToDateTimeConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeConverterProperty))), (source.GetCurrentValue(stringToDateTimeOffsetConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeOffsetConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeOffsetConverterProperty))), (source.GetCurrentValue(stringToDecimalNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDecimalNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDecimalNumberConverterProperty))), (source.GetCurrentValue(stringToDoubleNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDoubleNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDoubleNumberConverterProperty))), (source.GetCurrentValue(stringToEnumConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToEnumConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToEnumConverterProperty))), (source.GetCurrentValue(stringToGuidConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToGuidConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToGuidConverterProperty))), (source.GetCurrentValue(stringToIntNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToIntNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToIntNumberConverterProperty))), (source.GetCurrentValue(stringToTimeOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeOnlyConverterProperty))), (source.GetCurrentValue(stringToTimeSpanConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeSpanConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeSpanConverterProperty))), (source.GetCurrentValue(stringToUriConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToUriConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToUriConverterProperty))), ((ValueComparer)(((IProperty)timeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnly)), (((IEnumerable)(source.GetCurrentValue(timeOnlyArray))) == null ? null : ((TimeOnly[])(((ValueComparer>)(((IProperty)timeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeOnlyArray))))))), ((ValueComparer)(((IProperty)timeOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)timeOnlyToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToTicksConverterProperty)), ((ValueComparer)(((IProperty)timeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpan)), (((IEnumerable)(source.GetCurrentValue(timeSpanArray))) == null ? null : ((TimeSpan[])(((ValueComparer>)(((IProperty)timeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeSpanArray))))))), ((ValueComparer)(((IProperty)timeSpanToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToStringConverterProperty)), ((ValueComparer)(((IProperty)timeSpanToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToTicksConverterProperty)), ((ValueComparer)(((IProperty)uInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt16)), (((IEnumerable)(source.GetCurrentValue(uInt16Array))) == null ? null : ((ushort[])(((ValueComparer>)(((IProperty)uInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt16Array))))))), ((ValueComparer)(((IProperty)uInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt32)), (((IEnumerable)(source.GetCurrentValue(uInt32Array))) == null ? null : ((uint[])(((ValueComparer>)(((IProperty)uInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt32Array))))))), ((ValueComparer)(((IProperty)uInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt64)), (((IEnumerable)(source.GetCurrentValue(uInt64Array))) == null ? null : ((ulong[])(((ValueComparer>)(((IProperty)uInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt64Array))))))), ((ValueComparer)(((IProperty)uInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8)), (source.GetCurrentValue(uInt8Array) == null ? null : ((ValueComparer)(((IProperty)uInt8Array).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8Array))), (((IEnumerable)(source.GetCurrentValue>(uInt8ReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)uInt8ReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(uInt8ReadOnlyCollection))))))), (source.GetCurrentValue(uri) == null ? null : ((ValueComparer)(((IProperty)uri).GetValueComparer())).Snapshot(source.GetCurrentValue(uri))), (((object)(source.GetCurrentValue(uriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)uriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(uriArray)))))))))); + var entity7 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); + return ((ISnapshot)(new MultiSnapshot(new ISnapshot[] { liftedArg, liftedArg0, liftedArg1, liftedArg2, liftedArg3, liftedArg4, liftedArg5, liftedArg6, ((ISnapshot)(new Snapshot((source.GetCurrentValue(uriToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)uriToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(uriToStringConverterProperty)))))) }))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( ISnapshot () => ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(default(CompiledModelTestBase.ManyTypesId)))))); @@ -15086,14 +15434,14 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); + var entity8 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))))); }); runtimeEntityType.Counts = new PropertyCounts( - propertyCount: 236, + propertyCount: 241, navigationCount: 0, complexPropertyCount: 0, - originalValueCount: 236, + originalValueCount: 241, shadowCount: 0, relationshipCount: 1, storeGeneratedCount: 1); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs index 8212477912e..48de8dc1ceb 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs @@ -22,6 +22,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref bool[] BoolArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_boolReadOnlyCollection")] + public static extern ref List _boolReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref bool BoolToStringConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -283,6 +286,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref IPAddress[] IPAddressArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_ipAddressReadOnlyCollection")] + public static extern ref List _ipAddressReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref IPAddress IPAddressToBytesConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -301,6 +307,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref int[] Int32Array(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_int32ReadOnlyCollection")] + public static extern ref List _int32ReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref long Int64(CompiledModelTestBase.ManyTypes @this); @@ -622,6 +631,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref string[] StringArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_stringReadOnlyCollection")] + public static extern ref List _stringReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref string StringToBoolConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -712,6 +724,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref byte[] UInt8Array(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_uInt8ReadOnlyCollection")] + public static extern ref List _uInt8ReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref Uri Uri(CompiledModelTestBase.ManyTypes @this); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index aecb144873f..35f1e9a00fb 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -875,7 +875,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>(((ValueComparer)(((IProperty)principalDerivedId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedId)), ((ValueComparer)(((IProperty)principalDerivedAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedAlternateId)), ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), (source.GetCurrentValue(details) == null ? null : ((ValueComparer)(((IProperty)details).GetValueComparer())).Snapshot(source.GetCurrentValue(details))), ((ValueComparer)(((IProperty)number).GetValueComparer())).Snapshot(source.GetCurrentValue(number)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -889,7 +889,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalDerivedId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedId)), ((ValueComparer)(((IProperty)principalDerivedAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedAlternateId)), ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index 58454e04fd9..74919604598 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -886,7 +886,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>(((ValueComparer)(((IProperty)principalBaseId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalBaseId)), ((ValueComparer)(((IProperty)principalBaseAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalBaseAlternateId)), (source.GetCurrentValue(details) == null ? null : ((ValueComparer)(((IProperty)details).GetValueComparer())).Snapshot(source.GetCurrentValue(details))), ((ValueComparer)(((IProperty)number).GetValueComparer())).Snapshot(source.GetCurrentValue(number)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -900,7 +900,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalBaseId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalBaseId)), ((ValueComparer)(((IProperty)principalBaseAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalBaseAlternateId))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index 59869dd8c15..596ffa47ed6 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -999,7 +999,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); + var entity8 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), ((ValueComparer)(((IProperty)enum1).GetValueComparer())).Snapshot(source.GetCurrentValue(enum1)), (source.GetCurrentValue(enum2) == null ? null : ((ValueComparer)(((IProperty)enum2).GetValueComparer())).Snapshot(source.GetCurrentValue(enum2))), ((ValueComparer)(((IProperty)flagsEnum1).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum1)), ((ValueComparer)(((IProperty)flagsEnum2).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum2)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -1013,8 +1013,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); - return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity7), (object)(null)))); + var entity8 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); + return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity8), (object)(null)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 14, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index 762b316cf9a..76042ca6e3b 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -397,7 +397,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((Dictionary)(source.Entity)); + var entity8 = ((Dictionary)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)derivedsId).GetValueComparer())).Snapshot(source.GetCurrentValue(derivedsId)), ((ValueComparer)(((IProperty)derivedsAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(derivedsAlternateId)), ((ValueComparer)(((IProperty)principalsId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalsId)), ((ValueComparer)(((IProperty)principalsAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalsAlternateId)), (source.GetCurrentValue(rowid) == null ? null : ((ValueComparer)(((IProperty)rowid).GetValueComparer())).Snapshot(source.GetCurrentValue(rowid)))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -411,7 +411,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((Dictionary)(source.Entity)); + var entity8 = ((Dictionary)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)derivedsId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(derivedsId)), ((ValueComparer)(((IProperty)derivedsAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(derivedsAlternateId)), ((ValueComparer)(((IProperty)principalsId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalsId)), ((ValueComparer)(((IProperty)principalsAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalsAlternateId))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalDerivedEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalDerivedEntityType.cs index 5de696ad512..0b92a68d493 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalDerivedEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalDerivedEntityType.cs @@ -120,7 +120,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); + var entity8 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), ((ValueComparer)(((IProperty)enum1).GetValueComparer())).Snapshot(source.GetCurrentValue(enum1)), (source.GetCurrentValue(enum2) == null ? null : ((ValueComparer)(((IProperty)enum2).GetValueComparer())).Snapshot(source.GetCurrentValue(enum2))), ((ValueComparer)(((IProperty)flagsEnum1).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum1)), ((ValueComparer)(((IProperty)flagsEnum2).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum2)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -134,8 +134,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); - return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity7), (object)(null), PrincipalDerivedUnsafeAccessors>.Dependent(entity7), SnapshotFactoryFactory.SnapshotCollection(PrincipalDerivedUnsafeAccessors>.ManyOwned(entity7)), (object)(null)))); + var entity8 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); + return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity8), (object)(null), PrincipalDerivedUnsafeAccessors>.Dependent(entity8), SnapshotFactoryFactory.SnapshotCollection(PrincipalDerivedUnsafeAccessors>.ManyOwned(entity8)), (object)(null)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 14, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DbContextModelBuilder.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DbContextModelBuilder.cs index 2197085c217..77a88d2d54b 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DbContextModelBuilder.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DbContextModelBuilder.cs @@ -193,6 +193,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Bool", boolColumnBase); var boolArrayColumnBase = new ColumnBase("BoolArray", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolArray", boolArrayColumnBase); + var boolReadOnlyCollectionColumnBase = new ColumnBase("BoolReadOnlyCollection", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolReadOnlyCollection", boolReadOnlyCollectionColumnBase); var boolToStringConverterPropertyColumnBase = new ColumnBase("BoolToStringConverterProperty", "nvarchar(1)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolToStringConverterProperty", boolToStringConverterPropertyColumnBase); var boolToTwoValuesConverterPropertyColumnBase = new ColumnBase("BoolToTwoValuesConverterProperty", "tinyint", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -367,6 +369,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddress", iPAddressColumnBase); var iPAddressArrayColumnBase = new ColumnBase("IPAddressArray", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressArray", iPAddressArrayColumnBase); + var iPAddressReadOnlyCollectionColumnBase = new ColumnBase("IPAddressReadOnlyCollection", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressReadOnlyCollection", iPAddressReadOnlyCollectionColumnBase); var iPAddressToBytesConverterPropertyColumnBase = new ColumnBase("IPAddressToBytesConverterProperty", "varbinary(16)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressToBytesConverterProperty", iPAddressToBytesConverterPropertyColumnBase); var iPAddressToStringConverterPropertyColumnBase = new ColumnBase("IPAddressToStringConverterProperty", "nvarchar(45)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -381,6 +385,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32", int32ColumnBase); var int32ArrayColumnBase = new ColumnBase("Int32Array", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32Array", int32ArrayColumnBase); + var int32ReadOnlyCollectionColumnBase = new ColumnBase("Int32ReadOnlyCollection", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32ReadOnlyCollection", int32ReadOnlyCollectionColumnBase); var int64ColumnBase = new ColumnBase("Int64", "bigint", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int64", int64ColumnBase); var int64ArrayColumnBase = new ColumnBase("Int64Array", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -715,6 +721,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("String", stringColumnBase); var stringArrayColumnBase = new ColumnBase("StringArray", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringArray", stringArrayColumnBase); + var stringReadOnlyCollectionColumnBase = new ColumnBase("StringReadOnlyCollection", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringReadOnlyCollection", stringReadOnlyCollectionColumnBase); var stringToBoolConverterPropertyColumnBase = new ColumnBase("StringToBoolConverterProperty", "bit", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringToBoolConverterProperty", stringToBoolConverterPropertyColumnBase); var stringToBytesConverterPropertyColumnBase = new ColumnBase("StringToBytesConverterProperty", "varbinary(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase) @@ -778,6 +786,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8", uInt8ColumnBase); var uInt8ArrayColumnBase = new ColumnBase("UInt8Array", "varbinary(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8Array", uInt8ArrayColumnBase); + var uInt8ReadOnlyCollectionColumnBase = new ColumnBase("UInt8ReadOnlyCollection", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8ReadOnlyCollection", uInt8ReadOnlyCollectionColumnBase); var uriColumnBase = new ColumnBase("Uri", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Uri", uriColumnBase); var uriArrayColumnBase = new ColumnBase("UriArray", "nvarchar(max)", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -791,6 +801,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)idColumnBase0, manyTypes.FindProperty("Id")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolColumnBase, manyTypes.FindProperty("Bool")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolArrayColumnBase, manyTypes.FindProperty("BoolArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)boolReadOnlyCollectionColumnBase, manyTypes.FindProperty("BoolReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToStringConverterPropertyColumnBase, manyTypes.FindProperty("BoolToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToTwoValuesConverterPropertyColumnBase, manyTypes.FindProperty("BoolToTwoValuesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToZeroOneConverterPropertyColumnBase, manyTypes.FindProperty("BoolToZeroOneConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -878,12 +889,14 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)guidToStringConverterPropertyColumnBase, manyTypes.FindProperty("GuidToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressColumnBase, manyTypes.FindProperty("IPAddress")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressArrayColumnBase, manyTypes.FindProperty("IPAddressArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)iPAddressReadOnlyCollectionColumnBase, manyTypes.FindProperty("IPAddressReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressToBytesConverterPropertyColumnBase, manyTypes.FindProperty("IPAddressToBytesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressToStringConverterPropertyColumnBase, manyTypes.FindProperty("IPAddressToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int16ColumnBase, manyTypes.FindProperty("Int16")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int16ArrayColumnBase, manyTypes.FindProperty("Int16Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int32ColumnBase, manyTypes.FindProperty("Int32")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int32ArrayColumnBase, manyTypes.FindProperty("Int32Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)int32ReadOnlyCollectionColumnBase, manyTypes.FindProperty("Int32ReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int64ColumnBase, manyTypes.FindProperty("Int64")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int64ArrayColumnBase, manyTypes.FindProperty("Int64Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int8ColumnBase, manyTypes.FindProperty("Int8")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -991,6 +1004,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)physicalAddressToStringConverterPropertyColumnBase, manyTypes.FindProperty("PhysicalAddressToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringColumnBase, manyTypes.FindProperty("String")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringArrayColumnBase, manyTypes.FindProperty("StringArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)stringReadOnlyCollectionColumnBase, manyTypes.FindProperty("StringReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToBoolConverterPropertyColumnBase, manyTypes.FindProperty("StringToBoolConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToBytesConverterPropertyColumnBase, manyTypes.FindProperty("StringToBytesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToCharConverterPropertyColumnBase, manyTypes.FindProperty("StringToCharConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -1021,6 +1035,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)uInt64ArrayColumnBase, manyTypes.FindProperty("UInt64Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uInt8ColumnBase, manyTypes.FindProperty("UInt8")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uInt8ArrayColumnBase, manyTypes.FindProperty("UInt8Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)uInt8ReadOnlyCollectionColumnBase, manyTypes.FindProperty("UInt8ReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriColumnBase, manyTypes.FindProperty("Uri")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriArrayColumnBase, manyTypes.FindProperty("UriArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriToStringConverterPropertyColumnBase, manyTypes.FindProperty("UriToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -1037,6 +1052,9 @@ private IRelationalModel CreateRelationalModel() var boolArrayColumn = new Column("BoolArray", "nvarchar(max)", manyTypesTable); manyTypesTable.Columns.Add("BoolArray", boolArrayColumn); boolArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolArrayColumn); + var boolReadOnlyCollectionColumn = new Column("BoolReadOnlyCollection", "nvarchar(max)", manyTypesTable); + manyTypesTable.Columns.Add("BoolReadOnlyCollection", boolReadOnlyCollectionColumn); + boolReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolReadOnlyCollectionColumn); var boolToStringConverterPropertyColumn = new Column("BoolToStringConverterProperty", "nvarchar(1)", manyTypesTable); manyTypesTable.Columns.Add("BoolToStringConverterProperty", boolToStringConverterPropertyColumn); boolToStringConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolToStringConverterPropertyColumn); @@ -1298,6 +1316,9 @@ private IRelationalModel CreateRelationalModel() var iPAddressArrayColumn = new Column("IPAddressArray", "nvarchar(max)", manyTypesTable); manyTypesTable.Columns.Add("IPAddressArray", iPAddressArrayColumn); iPAddressArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressArrayColumn); + var iPAddressReadOnlyCollectionColumn = new Column("IPAddressReadOnlyCollection", "nvarchar(max)", manyTypesTable); + manyTypesTable.Columns.Add("IPAddressReadOnlyCollection", iPAddressReadOnlyCollectionColumn); + iPAddressReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressReadOnlyCollectionColumn); var iPAddressToBytesConverterPropertyColumn = new Column("IPAddressToBytesConverterProperty", "varbinary(16)", manyTypesTable); manyTypesTable.Columns.Add("IPAddressToBytesConverterProperty", iPAddressToBytesConverterPropertyColumn); iPAddressToBytesConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressToBytesConverterPropertyColumn); @@ -1316,6 +1337,9 @@ private IRelationalModel CreateRelationalModel() var int32ArrayColumn = new Column("Int32Array", "nvarchar(max)", manyTypesTable); manyTypesTable.Columns.Add("Int32Array", int32ArrayColumn); int32ArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(int32ArrayColumn); + var int32ReadOnlyCollectionColumn = new Column("Int32ReadOnlyCollection", "nvarchar(max)", manyTypesTable); + manyTypesTable.Columns.Add("Int32ReadOnlyCollection", int32ReadOnlyCollectionColumn); + int32ReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(int32ReadOnlyCollectionColumn); var int64Column = new Column("Int64", "bigint", manyTypesTable); manyTypesTable.Columns.Add("Int64", int64Column); int64Column.Accessors = ColumnAccessorsFactory.CreateGeneric(int64Column); @@ -1757,6 +1781,9 @@ private IRelationalModel CreateRelationalModel() var stringArrayColumn = new Column("StringArray", "nvarchar(max)", manyTypesTable); manyTypesTable.Columns.Add("StringArray", stringArrayColumn); stringArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringArrayColumn); + var stringReadOnlyCollectionColumn = new Column("StringReadOnlyCollection", "nvarchar(max)", manyTypesTable); + manyTypesTable.Columns.Add("StringReadOnlyCollection", stringReadOnlyCollectionColumn); + stringReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringReadOnlyCollectionColumn); var stringToBoolConverterPropertyColumn = new Column("StringToBoolConverterProperty", "bit", manyTypesTable); manyTypesTable.Columns.Add("StringToBoolConverterProperty", stringToBoolConverterPropertyColumn); stringToBoolConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringToBoolConverterPropertyColumn); @@ -1850,6 +1877,9 @@ private IRelationalModel CreateRelationalModel() var uInt8ArrayColumn = new Column("UInt8Array", "varbinary(max)", manyTypesTable); manyTypesTable.Columns.Add("UInt8Array", uInt8ArrayColumn); uInt8ArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uInt8ArrayColumn); + var uInt8ReadOnlyCollectionColumn = new Column("UInt8ReadOnlyCollection", "nvarchar(max)", manyTypesTable); + manyTypesTable.Columns.Add("UInt8ReadOnlyCollection", uInt8ReadOnlyCollectionColumn); + uInt8ReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uInt8ReadOnlyCollectionColumn); var uriColumn = new Column("Uri", "nvarchar(max)", manyTypesTable); manyTypesTable.Columns.Add("Uri", uriColumn); uriColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uriColumn); @@ -1866,6 +1896,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(idColumn0, manyTypes.FindProperty("Id")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolColumn, manyTypes.FindProperty("Bool")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolArrayColumn, manyTypes.FindProperty("BoolArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(boolReadOnlyCollectionColumn, manyTypes.FindProperty("BoolReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToStringConverterPropertyColumn, manyTypes.FindProperty("BoolToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToTwoValuesConverterPropertyColumn, manyTypes.FindProperty("BoolToTwoValuesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToZeroOneConverterPropertyColumn, manyTypes.FindProperty("BoolToZeroOneConverterProperty")!, manyTypesTableMapping); @@ -1953,12 +1984,14 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(guidToStringConverterPropertyColumn, manyTypes.FindProperty("GuidToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressColumn, manyTypes.FindProperty("IPAddress")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressArrayColumn, manyTypes.FindProperty("IPAddressArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(iPAddressReadOnlyCollectionColumn, manyTypes.FindProperty("IPAddressReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressToBytesConverterPropertyColumn, manyTypes.FindProperty("IPAddressToBytesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressToStringConverterPropertyColumn, manyTypes.FindProperty("IPAddressToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int16Column, manyTypes.FindProperty("Int16")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int16ArrayColumn, manyTypes.FindProperty("Int16Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int32Column, manyTypes.FindProperty("Int32")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int32ArrayColumn, manyTypes.FindProperty("Int32Array")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(int32ReadOnlyCollectionColumn, manyTypes.FindProperty("Int32ReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int64Column, manyTypes.FindProperty("Int64")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int64ArrayColumn, manyTypes.FindProperty("Int64Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int8Column, manyTypes.FindProperty("Int8")!, manyTypesTableMapping); @@ -2066,6 +2099,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(physicalAddressToStringConverterPropertyColumn, manyTypes.FindProperty("PhysicalAddressToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringColumn, manyTypes.FindProperty("String")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringArrayColumn, manyTypes.FindProperty("StringArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(stringReadOnlyCollectionColumn, manyTypes.FindProperty("StringReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToBoolConverterPropertyColumn, manyTypes.FindProperty("StringToBoolConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToBytesConverterPropertyColumn, manyTypes.FindProperty("StringToBytesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToCharConverterPropertyColumn, manyTypes.FindProperty("StringToCharConverterProperty")!, manyTypesTableMapping); @@ -2096,6 +2130,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(uInt64ArrayColumn, manyTypes.FindProperty("UInt64Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uInt8Column, manyTypes.FindProperty("UInt8")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uInt8ArrayColumn, manyTypes.FindProperty("UInt8Array")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(uInt8ReadOnlyCollectionColumn, manyTypes.FindProperty("UInt8ReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriColumn, manyTypes.FindProperty("Uri")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriArrayColumn, manyTypes.FindProperty("UriArray")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriToStringConverterPropertyColumn, manyTypes.FindProperty("UriToStringConverterProperty")!, manyTypesTableMapping); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs index ebd7aee13f6..0da710b64b0 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs @@ -131,7 +131,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); + var entity8 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), ((ValueComparer)(((IProperty)enumDiscriminator).GetValueComparer())).Snapshot(source.GetCurrentValue(enumDiscriminator)), (source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), (source.GetCurrentValue(data) == null ? null : ((ValueComparer)(((IProperty)data).GetValueComparer())).Snapshot(source.GetCurrentValue(data))), ((ValueComparer)(((IProperty)money).GetValueComparer())).Snapshot(source.GetCurrentValue(money))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -145,8 +145,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); - return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), DependentBaseUnsafeAccessors.Principal(entity7)))); + var entity8 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); + return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), DependentBaseUnsafeAccessors.Principal(entity8)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 6, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs index 7363b3af85d..e36b79214b3 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs @@ -34,7 +34,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes", typeof(CompiledModelTestBase.ManyTypes), baseEntityType, - propertyCount: 236, + propertyCount: 241, keyCount: 1); var id = runtimeEntityType.AddProperty( @@ -196,6 +196,69 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bool (bool v) => v))); boolArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var boolReadOnlyCollection = runtimeEntityType.AddProperty( + "BoolReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_boolReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + boolReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance) == null); + boolReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) = ((List)(value))); + boolReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) = ((List)(value))); + boolReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(boolReadOnlyCollection, 3), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(boolReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[3]); + boolReadOnlyCollection.SetPropertyIndexes( + index: 3, + originalValueIndex: 3, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + boolReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, bool>(new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v)), + keyComparer: new ListOfValueTypesComparer, bool>(new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, bool>( + JsonBoolReaderWriter.Instance)), + storeTypePostfix: StoreTypePostfix.None, + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, bool>( + JsonBoolReaderWriter.Instance), + elementMapping: SqlServerBoolTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + keyComparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + providerValueComparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v))); + boolReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var boolToStringConverterProperty = runtimeEntityType.AddProperty( "BoolToStringConverterProperty", typeof(bool), @@ -213,12 +276,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToStringConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToStringConverterProperty, 3), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToStringConverterProperty, 4), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[3]); + object (ValueBuffer valueBuffer) => valueBuffer[4]); boolToStringConverterProperty.SetPropertyIndexes( - index: 3, - originalValueIndex: 3, + index: 4, + originalValueIndex: 4, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -268,12 +331,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToTwoValuesConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToTwoValuesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToTwoValuesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToTwoValuesConverterProperty, 4), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToTwoValuesConverterProperty, 5), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToTwoValuesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[4]); + object (ValueBuffer valueBuffer) => valueBuffer[5]); boolToTwoValuesConverterProperty.SetPropertyIndexes( - index: 4, - originalValueIndex: 4, + index: 5, + originalValueIndex: 5, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -319,12 +382,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToZeroOneConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToZeroOneConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToZeroOneConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToZeroOneConverterProperty, 5), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToZeroOneConverterProperty, 6), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToZeroOneConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[5]); + object (ValueBuffer valueBuffer) => valueBuffer[6]); boolToZeroOneConverterProperty.SetPropertyIndexes( - index: 5, - originalValueIndex: 5, + index: 6, + originalValueIndex: 6, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -369,12 +432,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytes.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Bytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Bytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytes, 6), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytes, 7), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(bytes), - object (ValueBuffer valueBuffer) => valueBuffer[6]); + object (ValueBuffer valueBuffer) => valueBuffer[7]); bytes.SetPropertyIndexes( - index: 6, - originalValueIndex: 6, + index: 7, + originalValueIndex: 7, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -413,12 +476,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytesArray.SetAccessors( byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesArray, 7), + byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesArray, 8), byte[][] (InternalEntityEntry entry) => entry.GetCurrentValue(bytesArray), - object (ValueBuffer valueBuffer) => valueBuffer[7]); + object (ValueBuffer valueBuffer) => valueBuffer[8]); bytesArray.SetPropertyIndexes( - index: 7, - originalValueIndex: 7, + index: 8, + originalValueIndex: 8, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -481,12 +544,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytesToStringConverterProperty.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesToStringConverterProperty, 8), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesToStringConverterProperty, 9), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(bytesToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[8]); + object (ValueBuffer valueBuffer) => valueBuffer[9]); bytesToStringConverterProperty.SetPropertyIndexes( - index: 8, - originalValueIndex: 8, + index: 9, + originalValueIndex: 9, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -536,12 +599,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas castingConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CastingConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CastingConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(castingConverterProperty, 9), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(castingConverterProperty, 10), int (InternalEntityEntry entry) => entry.GetCurrentValue(castingConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[9]); + object (ValueBuffer valueBuffer) => valueBuffer[10]); castingConverterProperty.SetPropertyIndexes( - index: 9, - originalValueIndex: 9, + index: 10, + originalValueIndex: 10, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -586,12 +649,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @char.SetAccessors( char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Char(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Char(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char (InternalEntityEntry entry) => entry.ReadOriginalValue(@char, 10), + char (InternalEntityEntry entry) => entry.ReadOriginalValue(@char, 11), char (InternalEntityEntry entry) => entry.GetCurrentValue(@char), - object (ValueBuffer valueBuffer) => valueBuffer[10]); + object (ValueBuffer valueBuffer) => valueBuffer[11]); @char.SetPropertyIndexes( - index: 10, - originalValueIndex: 10, + index: 11, + originalValueIndex: 11, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -641,12 +704,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas charArray.SetAccessors( char[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char[] (InternalEntityEntry entry) => entry.ReadOriginalValue(charArray, 11), + char[] (InternalEntityEntry entry) => entry.ReadOriginalValue(charArray, 12), char[] (InternalEntityEntry entry) => entry.GetCurrentValue(charArray), - object (ValueBuffer valueBuffer) => valueBuffer[11]); + object (ValueBuffer valueBuffer) => valueBuffer[12]); charArray.SetPropertyIndexes( - index: 11, - originalValueIndex: 11, + index: 12, + originalValueIndex: 12, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -726,12 +789,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas charToStringConverterProperty.SetAccessors( char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char (InternalEntityEntry entry) => entry.ReadOriginalValue(charToStringConverterProperty, 12), + char (InternalEntityEntry entry) => entry.ReadOriginalValue(charToStringConverterProperty, 13), char (InternalEntityEntry entry) => entry.GetCurrentValue(charToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[12]); + object (ValueBuffer valueBuffer) => valueBuffer[13]); charToStringConverterProperty.SetPropertyIndexes( - index: 12, - originalValueIndex: 12, + index: 13, + originalValueIndex: 13, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -784,12 +847,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnly.SetAccessors( DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnly, 13), + DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnly, 14), DateOnly (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnly), - object (ValueBuffer valueBuffer) => valueBuffer[13]); + object (ValueBuffer valueBuffer) => valueBuffer[14]); dateOnly.SetPropertyIndexes( - index: 13, - originalValueIndex: 13, + index: 14, + originalValueIndex: 14, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -825,12 +888,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnlyArray.SetAccessors( DateOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyArray, 14), + DateOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyArray, 15), DateOnly[] (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[14]); + object (ValueBuffer valueBuffer) => valueBuffer[15]); dateOnlyArray.SetPropertyIndexes( - index: 14, - originalValueIndex: 14, + index: 15, + originalValueIndex: 15, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -889,12 +952,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnlyToStringConverterProperty.SetAccessors( DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyToStringConverterProperty, 15), + DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyToStringConverterProperty, 16), DateOnly (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnlyToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[15]); + object (ValueBuffer valueBuffer) => valueBuffer[16]); dateOnlyToStringConverterProperty.SetPropertyIndexes( - index: 15, - originalValueIndex: 15, + index: 16, + originalValueIndex: 16, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -945,12 +1008,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTime.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTime, 16), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTime, 17), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTime), - object (ValueBuffer valueBuffer) => valueBuffer[16]); + object (ValueBuffer valueBuffer) => valueBuffer[17]); dateTime.SetPropertyIndexes( - index: 16, - originalValueIndex: 16, + index: 17, + originalValueIndex: 17, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -986,12 +1049,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeArray.SetAccessors( DateTime[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeArray, 17), + DateTime[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeArray, 18), DateTime[] (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeArray), - object (ValueBuffer valueBuffer) => valueBuffer[17]); + object (ValueBuffer valueBuffer) => valueBuffer[18]); dateTimeArray.SetPropertyIndexes( - index: 17, - originalValueIndex: 17, + index: 18, + originalValueIndex: 18, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1050,12 +1113,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToBinaryConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBinaryConverterProperty, 18), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBinaryConverterProperty, 19), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[18]); + object (ValueBuffer valueBuffer) => valueBuffer[19]); dateTimeOffsetToBinaryConverterProperty.SetPropertyIndexes( - index: 18, - originalValueIndex: 18, + index: 19, + originalValueIndex: 19, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1101,12 +1164,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToBytesConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBytesConverterProperty, 19), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBytesConverterProperty, 20), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[19]); + object (ValueBuffer valueBuffer) => valueBuffer[20]); dateTimeOffsetToBytesConverterProperty.SetPropertyIndexes( - index: 19, - originalValueIndex: 19, + index: 20, + originalValueIndex: 20, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1155,12 +1218,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToStringConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToStringConverterProperty, 20), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToStringConverterProperty, 21), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[20]); + object (ValueBuffer valueBuffer) => valueBuffer[21]); dateTimeOffsetToStringConverterProperty.SetPropertyIndexes( - index: 20, - originalValueIndex: 20, + index: 21, + originalValueIndex: 21, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1211,12 +1274,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToBinaryConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToBinaryConverterProperty, 21), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToBinaryConverterProperty, 22), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToBinaryConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[21]); + object (ValueBuffer valueBuffer) => valueBuffer[22]); dateTimeToBinaryConverterProperty.SetPropertyIndexes( - index: 21, - originalValueIndex: 21, + index: 22, + originalValueIndex: 22, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1262,12 +1325,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToStringConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToStringConverterProperty, 22), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToStringConverterProperty, 23), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[22]); + object (ValueBuffer valueBuffer) => valueBuffer[23]); dateTimeToStringConverterProperty.SetPropertyIndexes( - index: 22, - originalValueIndex: 22, + index: 23, + originalValueIndex: 23, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1318,12 +1381,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToTicksConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToTicksConverterProperty, 23), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToTicksConverterProperty, 24), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[23]); + object (ValueBuffer valueBuffer) => valueBuffer[24]); dateTimeToTicksConverterProperty.SetPropertyIndexes( - index: 23, - originalValueIndex: 23, + index: 24, + originalValueIndex: 24, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1360,12 +1423,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @decimal.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Decimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Decimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(@decimal, 24), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(@decimal, 25), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(@decimal), - object (ValueBuffer valueBuffer) => valueBuffer[24]); + object (ValueBuffer valueBuffer) => valueBuffer[25]); @decimal.SetPropertyIndexes( - index: 24, - originalValueIndex: 24, + index: 25, + originalValueIndex: 25, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1401,12 +1464,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalArray.SetAccessors( decimal[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal[] (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalArray, 25), + decimal[] (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalArray, 26), decimal[] (InternalEntityEntry entry) => entry.GetCurrentValue(decimalArray), - object (ValueBuffer valueBuffer) => valueBuffer[25]); + object (ValueBuffer valueBuffer) => valueBuffer[26]); decimalArray.SetPropertyIndexes( - index: 25, - originalValueIndex: 25, + index: 26, + originalValueIndex: 26, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1465,12 +1528,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalNumberToBytesConverterProperty.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToBytesConverterProperty, 26), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToBytesConverterProperty, 27), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(decimalNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[26]); + object (ValueBuffer valueBuffer) => valueBuffer[27]); decimalNumberToBytesConverterProperty.SetPropertyIndexes( - index: 26, - originalValueIndex: 26, + index: 27, + originalValueIndex: 27, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1519,12 +1582,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalNumberToStringConverterProperty.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToStringConverterProperty, 27), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToStringConverterProperty, 28), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(decimalNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[27]); + object (ValueBuffer valueBuffer) => valueBuffer[28]); decimalNumberToStringConverterProperty.SetPropertyIndexes( - index: 27, - originalValueIndex: 27, + index: 28, + originalValueIndex: 28, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1575,12 +1638,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @double.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Double(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Double(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(@double, 28), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(@double, 29), double (InternalEntityEntry entry) => entry.GetCurrentValue(@double), - object (ValueBuffer valueBuffer) => valueBuffer[28]); + object (ValueBuffer valueBuffer) => valueBuffer[29]); @double.SetPropertyIndexes( - index: 28, - originalValueIndex: 28, + index: 29, + originalValueIndex: 29, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1616,12 +1679,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleArray.SetAccessors( double[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double[] (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleArray, 29), + double[] (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleArray, 30), double[] (InternalEntityEntry entry) => entry.GetCurrentValue(doubleArray), - object (ValueBuffer valueBuffer) => valueBuffer[29]); + object (ValueBuffer valueBuffer) => valueBuffer[30]); doubleArray.SetPropertyIndexes( - index: 29, - originalValueIndex: 29, + index: 30, + originalValueIndex: 30, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1680,12 +1743,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleNumberToBytesConverterProperty.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToBytesConverterProperty, 30), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToBytesConverterProperty, 31), double (InternalEntityEntry entry) => entry.GetCurrentValue(doubleNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[30]); + object (ValueBuffer valueBuffer) => valueBuffer[31]); doubleNumberToBytesConverterProperty.SetPropertyIndexes( - index: 30, - originalValueIndex: 30, + index: 31, + originalValueIndex: 31, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1734,12 +1797,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleNumberToStringConverterProperty.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToStringConverterProperty, 31), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToStringConverterProperty, 32), double (InternalEntityEntry entry) => entry.GetCurrentValue(doubleNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[31]); + object (ValueBuffer valueBuffer) => valueBuffer[32]); doubleNumberToStringConverterProperty.SetPropertyIndexes( - index: 31, - originalValueIndex: 31, + index: 32, + originalValueIndex: 32, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1789,12 +1852,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16.SetAccessors( CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16, 32), + CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16, 33), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.GetCurrentValue(enum16), - object (ValueBuffer valueBuffer) => valueBuffer[32]); + object (ValueBuffer valueBuffer) => valueBuffer[33]); enum16.SetPropertyIndexes( - index: 32, - originalValueIndex: 32, + index: 33, + originalValueIndex: 33, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1839,12 +1902,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16Array.SetAccessors( CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16Array, 33), + CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16Array, 34), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum16Array), - object (ValueBuffer valueBuffer) => valueBuffer[33]); + object (ValueBuffer valueBuffer) => valueBuffer[34]); enum16Array.SetPropertyIndexes( - index: 33, - originalValueIndex: 33, + index: 34, + originalValueIndex: 34, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1919,12 +1982,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsString.SetAccessors( CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsString, 34), + CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsString, 35), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.GetCurrentValue(enum16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[34]); + object (ValueBuffer valueBuffer) => valueBuffer[35]); enum16AsString.SetPropertyIndexes( - index: 34, - originalValueIndex: 34, + index: 35, + originalValueIndex: 35, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1974,12 +2037,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsStringArray.SetAccessors( CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsStringArray, 35), + CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsStringArray, 36), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[35]); + object (ValueBuffer valueBuffer) => valueBuffer[36]); enum16AsStringArray.SetPropertyIndexes( - index: 35, - originalValueIndex: 35, + index: 36, + originalValueIndex: 36, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2058,12 +2121,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16AsStringCollection, 36), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16AsStringCollection, 37), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[36]); + object (ValueBuffer valueBuffer) => valueBuffer[37]); enum16AsStringCollection.SetPropertyIndexes( - index: 36, - originalValueIndex: 36, + index: 37, + originalValueIndex: 37, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2142,12 +2205,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16Collection, 37), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16Collection, 38), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[37]); + object (ValueBuffer valueBuffer) => valueBuffer[38]); enum16Collection.SetPropertyIndexes( - index: 37, - originalValueIndex: 37, + index: 38, + originalValueIndex: 38, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2221,12 +2284,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32, 38), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32, 39), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enum32), - object (ValueBuffer valueBuffer) => valueBuffer[38]); + object (ValueBuffer valueBuffer) => valueBuffer[39]); enum32.SetPropertyIndexes( - index: 38, - originalValueIndex: 38, + index: 39, + originalValueIndex: 39, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2271,12 +2334,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32Array.SetAccessors( CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32Array, 39), + CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32Array, 40), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum32Array), - object (ValueBuffer valueBuffer) => valueBuffer[39]); + object (ValueBuffer valueBuffer) => valueBuffer[40]); enum32Array.SetPropertyIndexes( - index: 39, - originalValueIndex: 39, + index: 40, + originalValueIndex: 40, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2351,12 +2414,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsString.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsString, 40), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsString, 41), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enum32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[40]); + object (ValueBuffer valueBuffer) => valueBuffer[41]); enum32AsString.SetPropertyIndexes( - index: 40, - originalValueIndex: 40, + index: 41, + originalValueIndex: 41, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2406,12 +2469,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsStringArray.SetAccessors( CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsStringArray, 41), + CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsStringArray, 42), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[41]); + object (ValueBuffer valueBuffer) => valueBuffer[42]); enum32AsStringArray.SetPropertyIndexes( - index: 41, - originalValueIndex: 41, + index: 42, + originalValueIndex: 42, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2490,12 +2553,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32AsStringCollection, 42), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32AsStringCollection, 43), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[42]); + object (ValueBuffer valueBuffer) => valueBuffer[43]); enum32AsStringCollection.SetPropertyIndexes( - index: 42, - originalValueIndex: 42, + index: 43, + originalValueIndex: 43, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2574,12 +2637,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32Collection, 43), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32Collection, 44), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[43]); + object (ValueBuffer valueBuffer) => valueBuffer[44]); enum32Collection.SetPropertyIndexes( - index: 43, - originalValueIndex: 43, + index: 44, + originalValueIndex: 44, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2653,12 +2716,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64.SetAccessors( CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64, 44), + CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64, 45), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.GetCurrentValue(enum64), - object (ValueBuffer valueBuffer) => valueBuffer[44]); + object (ValueBuffer valueBuffer) => valueBuffer[45]); enum64.SetPropertyIndexes( - index: 44, - originalValueIndex: 44, + index: 45, + originalValueIndex: 45, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2703,12 +2766,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64Array.SetAccessors( CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64Array, 45), + CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64Array, 46), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum64Array), - object (ValueBuffer valueBuffer) => valueBuffer[45]); + object (ValueBuffer valueBuffer) => valueBuffer[46]); enum64Array.SetPropertyIndexes( - index: 45, - originalValueIndex: 45, + index: 46, + originalValueIndex: 46, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2783,12 +2846,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsString.SetAccessors( CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsString, 46), + CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsString, 47), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.GetCurrentValue(enum64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[46]); + object (ValueBuffer valueBuffer) => valueBuffer[47]); enum64AsString.SetPropertyIndexes( - index: 46, - originalValueIndex: 46, + index: 47, + originalValueIndex: 47, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2838,12 +2901,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsStringArray.SetAccessors( CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsStringArray, 47), + CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsStringArray, 48), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[47]); + object (ValueBuffer valueBuffer) => valueBuffer[48]); enum64AsStringArray.SetPropertyIndexes( - index: 47, - originalValueIndex: 47, + index: 48, + originalValueIndex: 48, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2922,12 +2985,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64AsStringCollection, 48), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64AsStringCollection, 49), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[48]); + object (ValueBuffer valueBuffer) => valueBuffer[49]); enum64AsStringCollection.SetPropertyIndexes( - index: 48, - originalValueIndex: 48, + index: 49, + originalValueIndex: 49, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3006,12 +3069,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64Collection, 49), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64Collection, 50), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[49]); + object (ValueBuffer valueBuffer) => valueBuffer[50]); enum64Collection.SetPropertyIndexes( - index: 49, - originalValueIndex: 49, + index: 50, + originalValueIndex: 50, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3085,12 +3148,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8.SetAccessors( CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8, 50), + CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8, 51), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.GetCurrentValue(enum8), - object (ValueBuffer valueBuffer) => valueBuffer[50]); + object (ValueBuffer valueBuffer) => valueBuffer[51]); enum8.SetPropertyIndexes( - index: 50, - originalValueIndex: 50, + index: 51, + originalValueIndex: 51, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3135,12 +3198,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8Array.SetAccessors( CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8Array, 51), + CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8Array, 52), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum8Array), - object (ValueBuffer valueBuffer) => valueBuffer[51]); + object (ValueBuffer valueBuffer) => valueBuffer[52]); enum8Array.SetPropertyIndexes( - index: 51, - originalValueIndex: 51, + index: 52, + originalValueIndex: 52, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3215,12 +3278,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsString.SetAccessors( CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsString, 52), + CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsString, 53), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.GetCurrentValue(enum8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[52]); + object (ValueBuffer valueBuffer) => valueBuffer[53]); enum8AsString.SetPropertyIndexes( - index: 52, - originalValueIndex: 52, + index: 53, + originalValueIndex: 53, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3270,12 +3333,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsStringArray.SetAccessors( CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsStringArray, 53), + CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsStringArray, 54), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[53]); + object (ValueBuffer valueBuffer) => valueBuffer[54]); enum8AsStringArray.SetPropertyIndexes( - index: 53, - originalValueIndex: 53, + index: 54, + originalValueIndex: 54, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3354,12 +3417,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8AsStringCollection, 54), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8AsStringCollection, 55), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[54]); + object (ValueBuffer valueBuffer) => valueBuffer[55]); enum8AsStringCollection.SetPropertyIndexes( - index: 54, - originalValueIndex: 54, + index: 55, + originalValueIndex: 55, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3438,12 +3501,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8Collection, 55), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8Collection, 56), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[55]); + object (ValueBuffer valueBuffer) => valueBuffer[56]); enum8Collection.SetPropertyIndexes( - index: 55, - originalValueIndex: 55, + index: 56, + originalValueIndex: 56, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3518,12 +3581,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumToNumberConverterProperty.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToNumberConverterProperty, 56), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToNumberConverterProperty, 57), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumToNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[56]); + object (ValueBuffer valueBuffer) => valueBuffer[57]); enumToNumberConverterProperty.SetPropertyIndexes( - index: 56, - originalValueIndex: 56, + index: 57, + originalValueIndex: 57, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3569,12 +3632,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumToStringConverterProperty.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToStringConverterProperty, 57), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToStringConverterProperty, 58), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[57]); + object (ValueBuffer valueBuffer) => valueBuffer[58]); enumToStringConverterProperty.SetPropertyIndexes( - index: 57, - originalValueIndex: 57, + index: 58, + originalValueIndex: 58, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3624,12 +3687,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16.SetAccessors( CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16, 58), + CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16, 59), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16), - object (ValueBuffer valueBuffer) => valueBuffer[58]); + object (ValueBuffer valueBuffer) => valueBuffer[59]); enumU16.SetPropertyIndexes( - index: 58, - originalValueIndex: 58, + index: 59, + originalValueIndex: 59, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3674,12 +3737,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16Array.SetAccessors( CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16Array, 59), + CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16Array, 60), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16Array), - object (ValueBuffer valueBuffer) => valueBuffer[59]); + object (ValueBuffer valueBuffer) => valueBuffer[60]); enumU16Array.SetPropertyIndexes( - index: 59, - originalValueIndex: 59, + index: 60, + originalValueIndex: 60, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3754,12 +3817,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsString.SetAccessors( CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsString, 60), + CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsString, 61), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[60]); + object (ValueBuffer valueBuffer) => valueBuffer[61]); enumU16AsString.SetPropertyIndexes( - index: 60, - originalValueIndex: 60, + index: 61, + originalValueIndex: 61, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3809,12 +3872,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsStringArray.SetAccessors( CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsStringArray, 61), + CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsStringArray, 62), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[61]); + object (ValueBuffer valueBuffer) => valueBuffer[62]); enumU16AsStringArray.SetPropertyIndexes( - index: 61, - originalValueIndex: 61, + index: 62, + originalValueIndex: 62, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3893,12 +3956,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16AsStringCollection, 62), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16AsStringCollection, 63), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[62]); + object (ValueBuffer valueBuffer) => valueBuffer[63]); enumU16AsStringCollection.SetPropertyIndexes( - index: 62, - originalValueIndex: 62, + index: 63, + originalValueIndex: 63, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3977,12 +4040,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16Collection, 63), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16Collection, 64), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[63]); + object (ValueBuffer valueBuffer) => valueBuffer[64]); enumU16Collection.SetPropertyIndexes( - index: 63, - originalValueIndex: 63, + index: 64, + originalValueIndex: 64, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4056,12 +4119,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32.SetAccessors( CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32, 64), + CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32, 65), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32), - object (ValueBuffer valueBuffer) => valueBuffer[64]); + object (ValueBuffer valueBuffer) => valueBuffer[65]); enumU32.SetPropertyIndexes( - index: 64, - originalValueIndex: 64, + index: 65, + originalValueIndex: 65, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4106,12 +4169,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32Array.SetAccessors( CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32Array, 65), + CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32Array, 66), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32Array), - object (ValueBuffer valueBuffer) => valueBuffer[65]); + object (ValueBuffer valueBuffer) => valueBuffer[66]); enumU32Array.SetPropertyIndexes( - index: 65, - originalValueIndex: 65, + index: 66, + originalValueIndex: 66, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4186,12 +4249,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsString.SetAccessors( CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsString, 66), + CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsString, 67), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[66]); + object (ValueBuffer valueBuffer) => valueBuffer[67]); enumU32AsString.SetPropertyIndexes( - index: 66, - originalValueIndex: 66, + index: 67, + originalValueIndex: 67, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4241,12 +4304,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsStringArray.SetAccessors( CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsStringArray, 67), + CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsStringArray, 68), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[67]); + object (ValueBuffer valueBuffer) => valueBuffer[68]); enumU32AsStringArray.SetPropertyIndexes( - index: 67, - originalValueIndex: 67, + index: 68, + originalValueIndex: 68, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4325,12 +4388,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32AsStringCollection, 68), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32AsStringCollection, 69), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[68]); + object (ValueBuffer valueBuffer) => valueBuffer[69]); enumU32AsStringCollection.SetPropertyIndexes( - index: 68, - originalValueIndex: 68, + index: 69, + originalValueIndex: 69, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4409,12 +4472,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32Collection, 69), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32Collection, 70), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[69]); + object (ValueBuffer valueBuffer) => valueBuffer[70]); enumU32Collection.SetPropertyIndexes( - index: 69, - originalValueIndex: 69, + index: 70, + originalValueIndex: 70, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4488,12 +4551,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64.SetAccessors( CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64, 70), + CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64, 71), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64), - object (ValueBuffer valueBuffer) => valueBuffer[70]); + object (ValueBuffer valueBuffer) => valueBuffer[71]); enumU64.SetPropertyIndexes( - index: 70, - originalValueIndex: 70, + index: 71, + originalValueIndex: 71, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4542,12 +4605,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64Array.SetAccessors( CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64Array, 71), + CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64Array, 72), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64Array), - object (ValueBuffer valueBuffer) => valueBuffer[71]); + object (ValueBuffer valueBuffer) => valueBuffer[72]); enumU64Array.SetPropertyIndexes( - index: 71, - originalValueIndex: 71, + index: 72, + originalValueIndex: 72, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4626,12 +4689,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsString.SetAccessors( CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsString, 72), + CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsString, 73), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[72]); + object (ValueBuffer valueBuffer) => valueBuffer[73]); enumU64AsString.SetPropertyIndexes( - index: 72, - originalValueIndex: 72, + index: 73, + originalValueIndex: 73, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4681,12 +4744,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsStringArray.SetAccessors( CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsStringArray, 73), + CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsStringArray, 74), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[73]); + object (ValueBuffer valueBuffer) => valueBuffer[74]); enumU64AsStringArray.SetPropertyIndexes( - index: 73, - originalValueIndex: 73, + index: 74, + originalValueIndex: 74, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4765,12 +4828,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64AsStringCollection, 74), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64AsStringCollection, 75), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[74]); + object (ValueBuffer valueBuffer) => valueBuffer[75]); enumU64AsStringCollection.SetPropertyIndexes( - index: 74, - originalValueIndex: 74, + index: 75, + originalValueIndex: 75, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4849,12 +4912,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64Collection, 75), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64Collection, 76), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[75]); + object (ValueBuffer valueBuffer) => valueBuffer[76]); enumU64Collection.SetPropertyIndexes( - index: 75, - originalValueIndex: 75, + index: 76, + originalValueIndex: 76, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4932,12 +4995,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8.SetAccessors( CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8, 76), + CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8, 77), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8), - object (ValueBuffer valueBuffer) => valueBuffer[76]); + object (ValueBuffer valueBuffer) => valueBuffer[77]); enumU8.SetPropertyIndexes( - index: 76, - originalValueIndex: 76, + index: 77, + originalValueIndex: 77, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4982,12 +5045,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8Array.SetAccessors( CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8Array, 77), + CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8Array, 78), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8Array), - object (ValueBuffer valueBuffer) => valueBuffer[77]); + object (ValueBuffer valueBuffer) => valueBuffer[78]); enumU8Array.SetPropertyIndexes( - index: 77, - originalValueIndex: 77, + index: 78, + originalValueIndex: 78, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5062,12 +5125,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsString.SetAccessors( CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsString, 78), + CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsString, 79), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[78]); + object (ValueBuffer valueBuffer) => valueBuffer[79]); enumU8AsString.SetPropertyIndexes( - index: 78, - originalValueIndex: 78, + index: 79, + originalValueIndex: 79, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5117,12 +5180,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsStringArray.SetAccessors( CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsStringArray, 79), + CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsStringArray, 80), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[79]); + object (ValueBuffer valueBuffer) => valueBuffer[80]); enumU8AsStringArray.SetPropertyIndexes( - index: 79, - originalValueIndex: 79, + index: 80, + originalValueIndex: 80, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5201,12 +5264,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8AsStringCollection, 80), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8AsStringCollection, 81), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[80]); + object (ValueBuffer valueBuffer) => valueBuffer[81]); enumU8AsStringCollection.SetPropertyIndexes( - index: 80, - originalValueIndex: 80, + index: 81, + originalValueIndex: 81, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5285,12 +5348,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8Collection, 81), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8Collection, 82), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[81]); + object (ValueBuffer valueBuffer) => valueBuffer[82]); enumU8Collection.SetPropertyIndexes( - index: 81, - originalValueIndex: 81, + index: 82, + originalValueIndex: 82, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5365,12 +5428,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @float.SetAccessors( float (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Float(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Float(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float (InternalEntityEntry entry) => entry.ReadOriginalValue(@float, 82), + float (InternalEntityEntry entry) => entry.ReadOriginalValue(@float, 83), float (InternalEntityEntry entry) => entry.GetCurrentValue(@float), - object (ValueBuffer valueBuffer) => valueBuffer[82]); + object (ValueBuffer valueBuffer) => valueBuffer[83]); @float.SetPropertyIndexes( - index: 82, - originalValueIndex: 82, + index: 83, + originalValueIndex: 83, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5406,12 +5469,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas floatArray.SetAccessors( float[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.FloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.FloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float[] (InternalEntityEntry entry) => entry.ReadOriginalValue(floatArray, 83), + float[] (InternalEntityEntry entry) => entry.ReadOriginalValue(floatArray, 84), float[] (InternalEntityEntry entry) => entry.GetCurrentValue(floatArray), - object (ValueBuffer valueBuffer) => valueBuffer[83]); + object (ValueBuffer valueBuffer) => valueBuffer[84]); floatArray.SetPropertyIndexes( - index: 83, - originalValueIndex: 83, + index: 84, + originalValueIndex: 84, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5470,12 +5533,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guid.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Guid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Guid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guid, 84), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guid, 85), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guid), - object (ValueBuffer valueBuffer) => valueBuffer[84]); + object (ValueBuffer valueBuffer) => valueBuffer[85]); guid.SetPropertyIndexes( - index: 84, - originalValueIndex: 84, + index: 85, + originalValueIndex: 85, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5513,12 +5576,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidArray.SetAccessors( Guid[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid[] (InternalEntityEntry entry) => entry.ReadOriginalValue(guidArray, 85), + Guid[] (InternalEntityEntry entry) => entry.ReadOriginalValue(guidArray, 86), Guid[] (InternalEntityEntry entry) => entry.GetCurrentValue(guidArray), - object (ValueBuffer valueBuffer) => valueBuffer[85]); + object (ValueBuffer valueBuffer) => valueBuffer[86]); guidArray.SetPropertyIndexes( - index: 85, - originalValueIndex: 85, + index: 86, + originalValueIndex: 86, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5579,12 +5642,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidToBytesConverterProperty.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToBytesConverterProperty, 86), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToBytesConverterProperty, 87), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guidToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[86]); + object (ValueBuffer valueBuffer) => valueBuffer[87]); guidToBytesConverterProperty.SetPropertyIndexes( - index: 86, - originalValueIndex: 86, + index: 87, + originalValueIndex: 87, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5633,12 +5696,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidToStringConverterProperty.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToStringConverterProperty, 87), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToStringConverterProperty, 88), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guidToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[87]); + object (ValueBuffer valueBuffer) => valueBuffer[88]); guidToStringConverterProperty.SetPropertyIndexes( - index: 87, - originalValueIndex: 87, + index: 88, + originalValueIndex: 88, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5688,12 +5751,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddress.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddress, 88), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddress, 89), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddress), - object (ValueBuffer valueBuffer) => valueBuffer[88]); + object (ValueBuffer valueBuffer) => valueBuffer[89]); iPAddress.SetPropertyIndexes( - index: 88, - originalValueIndex: 88, + index: 89, + originalValueIndex: 89, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5742,12 +5805,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressArray.SetAccessors( IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressArray, 89), + IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressArray, 90), IPAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[89]); + object (ValueBuffer valueBuffer) => valueBuffer[90]); iPAddressArray.SetPropertyIndexes( - index: 89, - originalValueIndex: 89, + index: 90, + originalValueIndex: 90, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5809,6 +5872,90 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas IPAddress (string v) => IPAddress.Parse(v))))); iPAddressArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var iPAddressReadOnlyCollection = runtimeEntityType.AddProperty( + "IPAddressReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("IPAddressReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_ipAddressReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + iPAddressReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance) == null); + iPAddressReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) = ((List)(value))); + iPAddressReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) = ((List)(value))); + iPAddressReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(iPAddressReadOnlyCollection, 91), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(iPAddressReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[91]); + iPAddressReadOnlyCollection.SetPropertyIndexes( + index: 91, + originalValueIndex: 91, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + iPAddressReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v)), + keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( + new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v))))), + storeTypePostfix: StoreTypePostfix.None, + jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( + new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v)))), + elementMapping: SqlServerStringTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v), + keyComparer: new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(45)", + size: 45, + unicode: true, + dbType: System.Data.DbType.String), + converter: new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v)), + jsonValueReaderWriter: new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v))))); + iPAddressReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var iPAddressToBytesConverterProperty = runtimeEntityType.AddProperty( "IPAddressToBytesConverterProperty", typeof(IPAddress), @@ -5827,12 +5974,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressToBytesConverterProperty.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToBytesConverterProperty, 90), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToBytesConverterProperty, 92), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[90]); + object (ValueBuffer valueBuffer) => valueBuffer[92]); iPAddressToBytesConverterProperty.SetPropertyIndexes( - index: 90, - originalValueIndex: 90, + index: 92, + originalValueIndex: 92, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5880,12 +6027,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressToStringConverterProperty.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToStringConverterProperty, 91), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToStringConverterProperty, 93), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[91]); + object (ValueBuffer valueBuffer) => valueBuffer[93]); iPAddressToStringConverterProperty.SetPropertyIndexes( - index: 91, - originalValueIndex: 91, + index: 93, + originalValueIndex: 93, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5935,12 +6082,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int16.SetAccessors( short (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short (InternalEntityEntry entry) => entry.ReadOriginalValue(int16, 92), + short (InternalEntityEntry entry) => entry.ReadOriginalValue(int16, 94), short (InternalEntityEntry entry) => entry.GetCurrentValue(int16), - object (ValueBuffer valueBuffer) => valueBuffer[92]); + object (ValueBuffer valueBuffer) => valueBuffer[94]); int16.SetPropertyIndexes( - index: 92, - originalValueIndex: 92, + index: 94, + originalValueIndex: 94, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5976,12 +6123,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int16Array.SetAccessors( short[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int16Array, 93), + short[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int16Array, 95), short[] (InternalEntityEntry entry) => entry.GetCurrentValue(int16Array), - object (ValueBuffer valueBuffer) => valueBuffer[93]); + object (ValueBuffer valueBuffer) => valueBuffer[95]); int16Array.SetPropertyIndexes( - index: 93, - originalValueIndex: 93, + index: 95, + originalValueIndex: 95, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6040,12 +6187,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int32.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(int32, 94), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(int32, 96), int (InternalEntityEntry entry) => entry.GetCurrentValue(int32), - object (ValueBuffer valueBuffer) => valueBuffer[94]); + object (ValueBuffer valueBuffer) => valueBuffer[96]); int32.SetPropertyIndexes( - index: 94, - originalValueIndex: 94, + index: 96, + originalValueIndex: 96, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6081,12 +6228,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int32Array.SetAccessors( int[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32Array, 95), + int[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32Array, 97), int[] (InternalEntityEntry entry) => entry.GetCurrentValue(int32Array), - object (ValueBuffer valueBuffer) => valueBuffer[95]); + object (ValueBuffer valueBuffer) => valueBuffer[97]); int32Array.SetPropertyIndexes( - index: 95, - originalValueIndex: 95, + index: 97, + originalValueIndex: 97, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6127,6 +6274,69 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (int v) => v))); int32Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var int32ReadOnlyCollection = runtimeEntityType.AddProperty( + "Int32ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_int32ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + int32ReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance) == null); + int32ReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) = ((List)(value))); + int32ReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) = ((List)(value))); + int32ReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(int32ReadOnlyCollection, 98), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(int32ReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[98]); + int32ReadOnlyCollection.SetPropertyIndexes( + index: 98, + originalValueIndex: 98, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + int32ReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, int>(new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v)), + keyComparer: new ListOfValueTypesComparer, int>(new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, int>( + JsonInt32ReaderWriter.Instance)), + storeTypePostfix: StoreTypePostfix.None, + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, int>( + JsonInt32ReaderWriter.Instance), + elementMapping: IntTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + keyComparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + providerValueComparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v))); + int32ReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var int64 = runtimeEntityType.AddProperty( "Int64", typeof(long), @@ -6145,12 +6355,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int64.SetAccessors( long (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long (InternalEntityEntry entry) => entry.ReadOriginalValue(int64, 96), + long (InternalEntityEntry entry) => entry.ReadOriginalValue(int64, 99), long (InternalEntityEntry entry) => entry.GetCurrentValue(int64), - object (ValueBuffer valueBuffer) => valueBuffer[96]); + object (ValueBuffer valueBuffer) => valueBuffer[99]); int64.SetPropertyIndexes( - index: 96, - originalValueIndex: 96, + index: 99, + originalValueIndex: 99, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6186,12 +6396,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int64Array.SetAccessors( long[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int64Array, 97), + long[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int64Array, 100), long[] (InternalEntityEntry entry) => entry.GetCurrentValue(int64Array), - object (ValueBuffer valueBuffer) => valueBuffer[97]); + object (ValueBuffer valueBuffer) => valueBuffer[100]); int64Array.SetPropertyIndexes( - index: 97, - originalValueIndex: 97, + index: 100, + originalValueIndex: 100, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6249,12 +6459,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int8.SetAccessors( sbyte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte (InternalEntityEntry entry) => entry.ReadOriginalValue(int8, 98), + sbyte (InternalEntityEntry entry) => entry.ReadOriginalValue(int8, 101), sbyte (InternalEntityEntry entry) => entry.GetCurrentValue(int8), - object (ValueBuffer valueBuffer) => valueBuffer[98]); + object (ValueBuffer valueBuffer) => valueBuffer[101]); int8.SetPropertyIndexes( - index: 98, - originalValueIndex: 98, + index: 101, + originalValueIndex: 101, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6299,12 +6509,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int8Array.SetAccessors( sbyte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8Array, 99), + sbyte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8Array, 102), sbyte[] (InternalEntityEntry entry) => entry.GetCurrentValue(int8Array), - object (ValueBuffer valueBuffer) => valueBuffer[99]); + object (ValueBuffer valueBuffer) => valueBuffer[102]); int8Array.SetPropertyIndexes( - index: 99, - originalValueIndex: 99, + index: 102, + originalValueIndex: 102, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6379,12 +6589,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas intNumberToBytesConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToBytesConverterProperty, 100), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToBytesConverterProperty, 103), int (InternalEntityEntry entry) => entry.GetCurrentValue(intNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[100]); + object (ValueBuffer valueBuffer) => valueBuffer[103]); intNumberToBytesConverterProperty.SetPropertyIndexes( - index: 100, - originalValueIndex: 100, + index: 103, + originalValueIndex: 103, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6433,12 +6643,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas intNumberToStringConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToStringConverterProperty, 101), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToStringConverterProperty, 104), int (InternalEntityEntry entry) => entry.GetCurrentValue(intNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[101]); + object (ValueBuffer valueBuffer) => valueBuffer[104]); intNumberToStringConverterProperty.SetPropertyIndexes( - index: 101, - originalValueIndex: 101, + index: 104, + originalValueIndex: 104, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6490,12 +6700,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullIntToNullStringConverterProperty.SetAccessors( int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullIntToNullStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullIntToNullStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullIntToNullStringConverterProperty, 102), + int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullIntToNullStringConverterProperty, 105), int? (InternalEntityEntry entry) => entry.GetCurrentValue(nullIntToNullStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[102]); + object (ValueBuffer valueBuffer) => valueBuffer[105]); nullIntToNullStringConverterProperty.SetPropertyIndexes( - index: 102, - originalValueIndex: 102, + index: 105, + originalValueIndex: 105, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6547,12 +6757,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBool.SetAccessors( bool? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBool(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBool(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBool, 103), + bool? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBool, 106), bool? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBool), - object (ValueBuffer valueBuffer) => valueBuffer[103]); + object (ValueBuffer valueBuffer) => valueBuffer[106]); nullableBool.SetPropertyIndexes( - index: 103, - originalValueIndex: 103, + index: 106, + originalValueIndex: 106, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6590,12 +6800,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBoolArray.SetAccessors( bool? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBoolArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBoolArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBoolArray, 104), + bool? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBoolArray, 107), bool? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBoolArray), - object (ValueBuffer valueBuffer) => valueBuffer[104]); + object (ValueBuffer valueBuffer) => valueBuffer[107]); nullableBoolArray.SetPropertyIndexes( - index: 104, - originalValueIndex: 104, + index: 107, + originalValueIndex: 107, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6654,12 +6864,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBytes.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytes, 105), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytes, 108), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBytes), - object (ValueBuffer valueBuffer) => valueBuffer[105]); + object (ValueBuffer valueBuffer) => valueBuffer[108]); nullableBytes.SetPropertyIndexes( - index: 105, - originalValueIndex: 105, + index: 108, + originalValueIndex: 108, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6698,12 +6908,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBytesArray.SetAccessors( byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytesArray, 106), + byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytesArray, 109), byte[][] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBytesArray), - object (ValueBuffer valueBuffer) => valueBuffer[106]); + object (ValueBuffer valueBuffer) => valueBuffer[109]); nullableBytesArray.SetPropertyIndexes( - index: 106, - originalValueIndex: 106, + index: 109, + originalValueIndex: 109, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6765,12 +6975,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableChar.SetAccessors( char? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableChar(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableChar(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableChar, 107), + char? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableChar, 110), char? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableChar), - object (ValueBuffer valueBuffer) => valueBuffer[107]); + object (ValueBuffer valueBuffer) => valueBuffer[110]); nullableChar.SetPropertyIndexes( - index: 107, - originalValueIndex: 107, + index: 110, + originalValueIndex: 110, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6821,12 +7031,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableCharArray.SetAccessors( char? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableCharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableCharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableCharArray, 108), + char? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableCharArray, 111), char? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableCharArray), - object (ValueBuffer valueBuffer) => valueBuffer[108]); + object (ValueBuffer valueBuffer) => valueBuffer[111]); nullableCharArray.SetPropertyIndexes( - index: 108, - originalValueIndex: 108, + index: 111, + originalValueIndex: 111, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6906,12 +7116,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateOnly.SetAccessors( DateOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnly, 109), + DateOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnly, 112), DateOnly? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateOnly), - object (ValueBuffer valueBuffer) => valueBuffer[109]); + object (ValueBuffer valueBuffer) => valueBuffer[112]); nullableDateOnly.SetPropertyIndexes( - index: 109, - originalValueIndex: 109, + index: 112, + originalValueIndex: 112, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6949,12 +7159,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateOnlyArray.SetAccessors( DateOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnlyArray, 110), + DateOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnlyArray, 113), DateOnly? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[110]); + object (ValueBuffer valueBuffer) => valueBuffer[113]); nullableDateOnlyArray.SetPropertyIndexes( - index: 110, - originalValueIndex: 110, + index: 113, + originalValueIndex: 113, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7013,12 +7223,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateTime.SetAccessors( DateTime? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTime, 111), + DateTime? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTime, 114), DateTime? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateTime), - object (ValueBuffer valueBuffer) => valueBuffer[111]); + object (ValueBuffer valueBuffer) => valueBuffer[114]); nullableDateTime.SetPropertyIndexes( - index: 111, - originalValueIndex: 111, + index: 114, + originalValueIndex: 114, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7056,12 +7266,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateTimeArray.SetAccessors( DateTime? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTimeArray, 112), + DateTime? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTimeArray, 115), DateTime? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateTimeArray), - object (ValueBuffer valueBuffer) => valueBuffer[112]); + object (ValueBuffer valueBuffer) => valueBuffer[115]); nullableDateTimeArray.SetPropertyIndexes( - index: 112, - originalValueIndex: 112, + index: 115, + originalValueIndex: 115, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7120,12 +7330,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDecimal.SetAccessors( decimal? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimal, 113), + decimal? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimal, 116), decimal? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDecimal), - object (ValueBuffer valueBuffer) => valueBuffer[113]); + object (ValueBuffer valueBuffer) => valueBuffer[116]); nullableDecimal.SetPropertyIndexes( - index: 113, - originalValueIndex: 113, + index: 116, + originalValueIndex: 116, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7163,12 +7373,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDecimalArray.SetAccessors( decimal? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimalArray, 114), + decimal? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimalArray, 117), decimal? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDecimalArray), - object (ValueBuffer valueBuffer) => valueBuffer[114]); + object (ValueBuffer valueBuffer) => valueBuffer[117]); nullableDecimalArray.SetPropertyIndexes( - index: 114, - originalValueIndex: 114, + index: 117, + originalValueIndex: 117, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7227,12 +7437,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDouble.SetAccessors( double? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDouble(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDouble(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDouble, 115), + double? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDouble, 118), double? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDouble), - object (ValueBuffer valueBuffer) => valueBuffer[115]); + object (ValueBuffer valueBuffer) => valueBuffer[118]); nullableDouble.SetPropertyIndexes( - index: 115, - originalValueIndex: 115, + index: 118, + originalValueIndex: 118, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7270,12 +7480,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDoubleArray.SetAccessors( double? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDoubleArray, 116), + double? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDoubleArray, 119), double? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDoubleArray), - object (ValueBuffer valueBuffer) => valueBuffer[116]); + object (ValueBuffer valueBuffer) => valueBuffer[119]); nullableDoubleArray.SetPropertyIndexes( - index: 116, - originalValueIndex: 116, + index: 119, + originalValueIndex: 119, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7334,12 +7544,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16.SetAccessors( CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16, 117), + CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16, 120), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16), - object (ValueBuffer valueBuffer) => valueBuffer[117]); + object (ValueBuffer valueBuffer) => valueBuffer[120]); nullableEnum16.SetPropertyIndexes( - index: 117, - originalValueIndex: 117, + index: 120, + originalValueIndex: 120, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7385,12 +7595,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16Array.SetAccessors( CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16Array, 118), + CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16Array, 121), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16Array), - object (ValueBuffer valueBuffer) => valueBuffer[118]); + object (ValueBuffer valueBuffer) => valueBuffer[121]); nullableEnum16Array.SetPropertyIndexes( - index: 118, - originalValueIndex: 118, + index: 121, + originalValueIndex: 121, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7465,12 +7675,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsString.SetAccessors( CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsString, 119), + CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsString, 122), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[119]); + object (ValueBuffer valueBuffer) => valueBuffer[122]); nullableEnum16AsString.SetPropertyIndexes( - index: 119, - originalValueIndex: 119, + index: 122, + originalValueIndex: 122, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7516,12 +7726,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsStringArray.SetAccessors( CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsStringArray, 120), + CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsStringArray, 123), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[120]); + object (ValueBuffer valueBuffer) => valueBuffer[123]); nullableEnum16AsStringArray.SetPropertyIndexes( - index: 120, - originalValueIndex: 120, + index: 123, + originalValueIndex: 123, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7595,12 +7805,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16AsStringCollection, 121), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16AsStringCollection, 124), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[121]); + object (ValueBuffer valueBuffer) => valueBuffer[124]); nullableEnum16AsStringCollection.SetPropertyIndexes( - index: 121, - originalValueIndex: 121, + index: 124, + originalValueIndex: 124, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7674,12 +7884,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16Collection, 122), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16Collection, 125), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[122]); + object (ValueBuffer valueBuffer) => valueBuffer[125]); nullableEnum16Collection.SetPropertyIndexes( - index: 122, - originalValueIndex: 122, + index: 125, + originalValueIndex: 125, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7754,12 +7964,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32.SetAccessors( CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32, 123), + CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32, 126), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32), - object (ValueBuffer valueBuffer) => valueBuffer[123]); + object (ValueBuffer valueBuffer) => valueBuffer[126]); nullableEnum32.SetPropertyIndexes( - index: 123, - originalValueIndex: 123, + index: 126, + originalValueIndex: 126, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7805,12 +8015,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32Array.SetAccessors( CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32Array, 124), + CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32Array, 127), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32Array), - object (ValueBuffer valueBuffer) => valueBuffer[124]); + object (ValueBuffer valueBuffer) => valueBuffer[127]); nullableEnum32Array.SetPropertyIndexes( - index: 124, - originalValueIndex: 124, + index: 127, + originalValueIndex: 127, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7885,12 +8095,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsString.SetAccessors( CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsString, 125), + CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsString, 128), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[125]); + object (ValueBuffer valueBuffer) => valueBuffer[128]); nullableEnum32AsString.SetPropertyIndexes( - index: 125, - originalValueIndex: 125, + index: 128, + originalValueIndex: 128, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7936,12 +8146,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsStringArray.SetAccessors( CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsStringArray, 126), + CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsStringArray, 129), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[126]); - nullableEnum32AsStringArray.SetPropertyIndexes( - index: 126, - originalValueIndex: 126, + object (ValueBuffer valueBuffer) => valueBuffer[129]); + nullableEnum32AsStringArray.SetPropertyIndexes( + index: 129, + originalValueIndex: 129, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8015,12 +8225,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32AsStringCollection, 127), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32AsStringCollection, 130), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[127]); + object (ValueBuffer valueBuffer) => valueBuffer[130]); nullableEnum32AsStringCollection.SetPropertyIndexes( - index: 127, - originalValueIndex: 127, + index: 130, + originalValueIndex: 130, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8094,12 +8304,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32Collection, 128), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32Collection, 131), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[128]); + object (ValueBuffer valueBuffer) => valueBuffer[131]); nullableEnum32Collection.SetPropertyIndexes( - index: 128, - originalValueIndex: 128, + index: 131, + originalValueIndex: 131, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8174,12 +8384,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64.SetAccessors( CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64, 129), + CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64, 132), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64), - object (ValueBuffer valueBuffer) => valueBuffer[129]); + object (ValueBuffer valueBuffer) => valueBuffer[132]); nullableEnum64.SetPropertyIndexes( - index: 129, - originalValueIndex: 129, + index: 132, + originalValueIndex: 132, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8225,12 +8435,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64Array.SetAccessors( CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64Array, 130), + CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64Array, 133), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64Array), - object (ValueBuffer valueBuffer) => valueBuffer[130]); + object (ValueBuffer valueBuffer) => valueBuffer[133]); nullableEnum64Array.SetPropertyIndexes( - index: 130, - originalValueIndex: 130, + index: 133, + originalValueIndex: 133, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8305,12 +8515,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsString.SetAccessors( CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsString, 131), + CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsString, 134), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[131]); + object (ValueBuffer valueBuffer) => valueBuffer[134]); nullableEnum64AsString.SetPropertyIndexes( - index: 131, - originalValueIndex: 131, + index: 134, + originalValueIndex: 134, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8356,12 +8566,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsStringArray.SetAccessors( CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsStringArray, 132), + CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsStringArray, 135), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[132]); + object (ValueBuffer valueBuffer) => valueBuffer[135]); nullableEnum64AsStringArray.SetPropertyIndexes( - index: 132, - originalValueIndex: 132, + index: 135, + originalValueIndex: 135, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8435,12 +8645,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64AsStringCollection, 133), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64AsStringCollection, 136), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[133]); + object (ValueBuffer valueBuffer) => valueBuffer[136]); nullableEnum64AsStringCollection.SetPropertyIndexes( - index: 133, - originalValueIndex: 133, + index: 136, + originalValueIndex: 136, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8514,12 +8724,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64Collection, 134), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64Collection, 137), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[134]); + object (ValueBuffer valueBuffer) => valueBuffer[137]); nullableEnum64Collection.SetPropertyIndexes( - index: 134, - originalValueIndex: 134, + index: 137, + originalValueIndex: 137, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8594,12 +8804,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8.SetAccessors( CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8, 135), + CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8, 138), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8), - object (ValueBuffer valueBuffer) => valueBuffer[135]); + object (ValueBuffer valueBuffer) => valueBuffer[138]); nullableEnum8.SetPropertyIndexes( - index: 135, - originalValueIndex: 135, + index: 138, + originalValueIndex: 138, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8645,12 +8855,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8Array.SetAccessors( CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8Array, 136), + CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8Array, 139), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8Array), - object (ValueBuffer valueBuffer) => valueBuffer[136]); + object (ValueBuffer valueBuffer) => valueBuffer[139]); nullableEnum8Array.SetPropertyIndexes( - index: 136, - originalValueIndex: 136, + index: 139, + originalValueIndex: 139, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8725,12 +8935,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsString.SetAccessors( CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsString, 137), + CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsString, 140), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[137]); + object (ValueBuffer valueBuffer) => valueBuffer[140]); nullableEnum8AsString.SetPropertyIndexes( - index: 137, - originalValueIndex: 137, + index: 140, + originalValueIndex: 140, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8776,12 +8986,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsStringArray.SetAccessors( CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsStringArray, 138), + CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsStringArray, 141), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[138]); + object (ValueBuffer valueBuffer) => valueBuffer[141]); nullableEnum8AsStringArray.SetPropertyIndexes( - index: 138, - originalValueIndex: 138, + index: 141, + originalValueIndex: 141, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8855,12 +9065,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8AsStringCollection, 139), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8AsStringCollection, 142), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[139]); + object (ValueBuffer valueBuffer) => valueBuffer[142]); nullableEnum8AsStringCollection.SetPropertyIndexes( - index: 139, - originalValueIndex: 139, + index: 142, + originalValueIndex: 142, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8934,12 +9144,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8Collection, 140), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8Collection, 143), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[140]); + object (ValueBuffer valueBuffer) => valueBuffer[143]); nullableEnum8Collection.SetPropertyIndexes( - index: 140, - originalValueIndex: 140, + index: 143, + originalValueIndex: 143, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9014,12 +9224,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16.SetAccessors( CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16, 141), + CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16, 144), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16), - object (ValueBuffer valueBuffer) => valueBuffer[141]); + object (ValueBuffer valueBuffer) => valueBuffer[144]); nullableEnumU16.SetPropertyIndexes( - index: 141, - originalValueIndex: 141, + index: 144, + originalValueIndex: 144, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9065,12 +9275,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16Array.SetAccessors( CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16Array, 142), + CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16Array, 145), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16Array), - object (ValueBuffer valueBuffer) => valueBuffer[142]); + object (ValueBuffer valueBuffer) => valueBuffer[145]); nullableEnumU16Array.SetPropertyIndexes( - index: 142, - originalValueIndex: 142, + index: 145, + originalValueIndex: 145, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9145,12 +9355,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsString.SetAccessors( CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsString, 143), + CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsString, 146), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[143]); + object (ValueBuffer valueBuffer) => valueBuffer[146]); nullableEnumU16AsString.SetPropertyIndexes( - index: 143, - originalValueIndex: 143, + index: 146, + originalValueIndex: 146, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9196,12 +9406,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsStringArray.SetAccessors( CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsStringArray, 144), + CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsStringArray, 147), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[144]); + object (ValueBuffer valueBuffer) => valueBuffer[147]); nullableEnumU16AsStringArray.SetPropertyIndexes( - index: 144, - originalValueIndex: 144, + index: 147, + originalValueIndex: 147, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9275,12 +9485,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16AsStringCollection, 145), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16AsStringCollection, 148), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[145]); + object (ValueBuffer valueBuffer) => valueBuffer[148]); nullableEnumU16AsStringCollection.SetPropertyIndexes( - index: 145, - originalValueIndex: 145, + index: 148, + originalValueIndex: 148, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9354,12 +9564,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16Collection, 146), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16Collection, 149), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[146]); + object (ValueBuffer valueBuffer) => valueBuffer[149]); nullableEnumU16Collection.SetPropertyIndexes( - index: 146, - originalValueIndex: 146, + index: 149, + originalValueIndex: 149, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9434,12 +9644,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32.SetAccessors( CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32, 147), + CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32, 150), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32), - object (ValueBuffer valueBuffer) => valueBuffer[147]); + object (ValueBuffer valueBuffer) => valueBuffer[150]); nullableEnumU32.SetPropertyIndexes( - index: 147, - originalValueIndex: 147, + index: 150, + originalValueIndex: 150, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9485,12 +9695,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32Array.SetAccessors( CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32Array, 148), + CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32Array, 151), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32Array), - object (ValueBuffer valueBuffer) => valueBuffer[148]); + object (ValueBuffer valueBuffer) => valueBuffer[151]); nullableEnumU32Array.SetPropertyIndexes( - index: 148, - originalValueIndex: 148, + index: 151, + originalValueIndex: 151, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9565,12 +9775,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsString.SetAccessors( CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsString, 149), + CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsString, 152), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[149]); + object (ValueBuffer valueBuffer) => valueBuffer[152]); nullableEnumU32AsString.SetPropertyIndexes( - index: 149, - originalValueIndex: 149, + index: 152, + originalValueIndex: 152, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9616,12 +9826,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsStringArray.SetAccessors( CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsStringArray, 150), + CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsStringArray, 153), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[150]); + object (ValueBuffer valueBuffer) => valueBuffer[153]); nullableEnumU32AsStringArray.SetPropertyIndexes( - index: 150, - originalValueIndex: 150, + index: 153, + originalValueIndex: 153, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9695,12 +9905,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32AsStringCollection, 151), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32AsStringCollection, 154), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[151]); + object (ValueBuffer valueBuffer) => valueBuffer[154]); nullableEnumU32AsStringCollection.SetPropertyIndexes( - index: 151, - originalValueIndex: 151, + index: 154, + originalValueIndex: 154, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9774,12 +9984,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32Collection, 152), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32Collection, 155), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[152]); + object (ValueBuffer valueBuffer) => valueBuffer[155]); nullableEnumU32Collection.SetPropertyIndexes( - index: 152, - originalValueIndex: 152, + index: 155, + originalValueIndex: 155, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9854,12 +10064,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64.SetAccessors( CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64, 153), + CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64, 156), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64), - object (ValueBuffer valueBuffer) => valueBuffer[153]); + object (ValueBuffer valueBuffer) => valueBuffer[156]); nullableEnumU64.SetPropertyIndexes( - index: 153, - originalValueIndex: 153, + index: 156, + originalValueIndex: 156, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9909,12 +10119,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64Array.SetAccessors( CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64Array, 154), + CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64Array, 157), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64Array), - object (ValueBuffer valueBuffer) => valueBuffer[154]); + object (ValueBuffer valueBuffer) => valueBuffer[157]); nullableEnumU64Array.SetPropertyIndexes( - index: 154, - originalValueIndex: 154, + index: 157, + originalValueIndex: 157, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9993,12 +10203,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsString.SetAccessors( CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsString, 155), + CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsString, 158), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[155]); + object (ValueBuffer valueBuffer) => valueBuffer[158]); nullableEnumU64AsString.SetPropertyIndexes( - index: 155, - originalValueIndex: 155, + index: 158, + originalValueIndex: 158, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10048,12 +10258,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsStringArray.SetAccessors( CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsStringArray, 156), + CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsStringArray, 159), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[156]); + object (ValueBuffer valueBuffer) => valueBuffer[159]); nullableEnumU64AsStringArray.SetPropertyIndexes( - index: 156, - originalValueIndex: 156, + index: 159, + originalValueIndex: 159, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10131,12 +10341,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64AsStringCollection, 157), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64AsStringCollection, 160), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[157]); + object (ValueBuffer valueBuffer) => valueBuffer[160]); nullableEnumU64AsStringCollection.SetPropertyIndexes( - index: 157, - originalValueIndex: 157, + index: 160, + originalValueIndex: 160, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10214,12 +10424,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64Collection, 158), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64Collection, 161), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[158]); + object (ValueBuffer valueBuffer) => valueBuffer[161]); nullableEnumU64Collection.SetPropertyIndexes( - index: 158, - originalValueIndex: 158, + index: 161, + originalValueIndex: 161, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10298,12 +10508,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8.SetAccessors( CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8, 159), + CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8, 162), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8), - object (ValueBuffer valueBuffer) => valueBuffer[159]); + object (ValueBuffer valueBuffer) => valueBuffer[162]); nullableEnumU8.SetPropertyIndexes( - index: 159, - originalValueIndex: 159, + index: 162, + originalValueIndex: 162, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10349,12 +10559,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8Array.SetAccessors( CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8Array, 160), + CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8Array, 163), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8Array), - object (ValueBuffer valueBuffer) => valueBuffer[160]); + object (ValueBuffer valueBuffer) => valueBuffer[163]); nullableEnumU8Array.SetPropertyIndexes( - index: 160, - originalValueIndex: 160, + index: 163, + originalValueIndex: 163, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10429,12 +10639,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsString.SetAccessors( CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsString, 161), + CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsString, 164), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[161]); + object (ValueBuffer valueBuffer) => valueBuffer[164]); nullableEnumU8AsString.SetPropertyIndexes( - index: 161, - originalValueIndex: 161, + index: 164, + originalValueIndex: 164, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10480,12 +10690,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsStringArray.SetAccessors( CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsStringArray, 162), + CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsStringArray, 165), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[162]); + object (ValueBuffer valueBuffer) => valueBuffer[165]); nullableEnumU8AsStringArray.SetPropertyIndexes( - index: 162, - originalValueIndex: 162, + index: 165, + originalValueIndex: 165, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10559,12 +10769,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8AsStringCollection, 163), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8AsStringCollection, 166), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[163]); + object (ValueBuffer valueBuffer) => valueBuffer[166]); nullableEnumU8AsStringCollection.SetPropertyIndexes( - index: 163, - originalValueIndex: 163, + index: 166, + originalValueIndex: 166, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10638,12 +10848,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8Collection, 164), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8Collection, 167), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[164]); + object (ValueBuffer valueBuffer) => valueBuffer[167]); nullableEnumU8Collection.SetPropertyIndexes( - index: 164, - originalValueIndex: 164, + index: 167, + originalValueIndex: 167, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10718,12 +10928,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableFloat.SetAccessors( float? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloat(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloat(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloat, 165), + float? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloat, 168), float? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableFloat), - object (ValueBuffer valueBuffer) => valueBuffer[165]); + object (ValueBuffer valueBuffer) => valueBuffer[168]); nullableFloat.SetPropertyIndexes( - index: 165, - originalValueIndex: 165, + index: 168, + originalValueIndex: 168, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10761,12 +10971,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableFloatArray.SetAccessors( float? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloatArray, 166), + float? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloatArray, 169), float? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableFloatArray), - object (ValueBuffer valueBuffer) => valueBuffer[166]); + object (ValueBuffer valueBuffer) => valueBuffer[169]); nullableFloatArray.SetPropertyIndexes( - index: 166, - originalValueIndex: 166, + index: 169, + originalValueIndex: 169, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10825,12 +11035,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableGuid.SetAccessors( Guid? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuid, 167), + Guid? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuid, 170), Guid? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableGuid), - object (ValueBuffer valueBuffer) => valueBuffer[167]); + object (ValueBuffer valueBuffer) => valueBuffer[170]); nullableGuid.SetPropertyIndexes( - index: 167, - originalValueIndex: 167, + index: 170, + originalValueIndex: 170, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10870,12 +11080,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableGuidArray.SetAccessors( Guid? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuidArray, 168), + Guid? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuidArray, 171), Guid? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableGuidArray), - object (ValueBuffer valueBuffer) => valueBuffer[168]); + object (ValueBuffer valueBuffer) => valueBuffer[171]); nullableGuidArray.SetPropertyIndexes( - index: 168, - originalValueIndex: 168, + index: 171, + originalValueIndex: 171, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10936,12 +11146,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableIPAddress.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddress, 169), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddress, 172), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(nullableIPAddress), - object (ValueBuffer valueBuffer) => valueBuffer[169]); + object (ValueBuffer valueBuffer) => valueBuffer[172]); nullableIPAddress.SetPropertyIndexes( - index: 169, - originalValueIndex: 169, + index: 172, + originalValueIndex: 172, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10990,12 +11200,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableIPAddressArray.SetAccessors( IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddressArray, 170), + IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddressArray, 173), IPAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableIPAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[170]); + object (ValueBuffer valueBuffer) => valueBuffer[173]); nullableIPAddressArray.SetPropertyIndexes( - index: 170, - originalValueIndex: 170, + index: 173, + originalValueIndex: 173, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11075,12 +11285,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt16.SetAccessors( short? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16, 171), + short? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16, 174), short? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt16), - object (ValueBuffer valueBuffer) => valueBuffer[171]); + object (ValueBuffer valueBuffer) => valueBuffer[174]); nullableInt16.SetPropertyIndexes( - index: 171, - originalValueIndex: 171, + index: 174, + originalValueIndex: 174, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11118,12 +11328,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt16Array.SetAccessors( short? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16Array, 172), + short? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16Array, 175), short? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[172]); + object (ValueBuffer valueBuffer) => valueBuffer[175]); nullableInt16Array.SetPropertyIndexes( - index: 172, - originalValueIndex: 172, + index: 175, + originalValueIndex: 175, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11182,12 +11392,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt32.SetAccessors( int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32, 173), + int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32, 176), int? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt32), - object (ValueBuffer valueBuffer) => valueBuffer[173]); + object (ValueBuffer valueBuffer) => valueBuffer[176]); nullableInt32.SetPropertyIndexes( - index: 173, - originalValueIndex: 173, + index: 176, + originalValueIndex: 176, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11225,12 +11435,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt32Array.SetAccessors( int? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32Array, 174), + int? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32Array, 177), int? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[174]); + object (ValueBuffer valueBuffer) => valueBuffer[177]); nullableInt32Array.SetPropertyIndexes( - index: 174, - originalValueIndex: 174, + index: 177, + originalValueIndex: 177, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11289,12 +11499,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt64.SetAccessors( long? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64, 175), + long? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64, 178), long? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt64), - object (ValueBuffer valueBuffer) => valueBuffer[175]); + object (ValueBuffer valueBuffer) => valueBuffer[178]); nullableInt64.SetPropertyIndexes( - index: 175, - originalValueIndex: 175, + index: 178, + originalValueIndex: 178, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11332,12 +11542,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt64Array.SetAccessors( long? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64Array, 176), + long? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64Array, 179), long? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[176]); + object (ValueBuffer valueBuffer) => valueBuffer[179]); nullableInt64Array.SetPropertyIndexes( - index: 176, - originalValueIndex: 176, + index: 179, + originalValueIndex: 179, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11396,12 +11606,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt8.SetAccessors( sbyte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8, 177), + sbyte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8, 180), sbyte? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt8), - object (ValueBuffer valueBuffer) => valueBuffer[177]); + object (ValueBuffer valueBuffer) => valueBuffer[180]); nullableInt8.SetPropertyIndexes( - index: 177, - originalValueIndex: 177, + index: 180, + originalValueIndex: 180, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11447,12 +11657,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt8Array.SetAccessors( sbyte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8Array, 178), + sbyte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8Array, 181), sbyte? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[178]); + object (ValueBuffer valueBuffer) => valueBuffer[181]); nullableInt8Array.SetPropertyIndexes( - index: 178, - originalValueIndex: 178, + index: 181, + originalValueIndex: 181, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11527,12 +11737,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullablePhysicalAddress.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddress, 179), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddress, 182), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(nullablePhysicalAddress), - object (ValueBuffer valueBuffer) => valueBuffer[179]); + object (ValueBuffer valueBuffer) => valueBuffer[182]); nullablePhysicalAddress.SetPropertyIndexes( - index: 179, - originalValueIndex: 179, + index: 182, + originalValueIndex: 182, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11581,12 +11791,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullablePhysicalAddressArray.SetAccessors( PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddressArray, 180), + PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddressArray, 183), PhysicalAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullablePhysicalAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[180]); + object (ValueBuffer valueBuffer) => valueBuffer[183]); nullablePhysicalAddressArray.SetPropertyIndexes( - index: 180, - originalValueIndex: 180, + index: 183, + originalValueIndex: 183, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11666,12 +11876,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableString.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableString, 181), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableString, 184), string (InternalEntityEntry entry) => entry.GetCurrentValue(nullableString), - object (ValueBuffer valueBuffer) => valueBuffer[181]); + object (ValueBuffer valueBuffer) => valueBuffer[184]); nullableString.SetPropertyIndexes( - index: 181, - originalValueIndex: 181, + index: 184, + originalValueIndex: 184, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11712,12 +11922,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableStringArray.SetAccessors( string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringArray, 182), + string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringArray, 185), string[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[182]); + object (ValueBuffer valueBuffer) => valueBuffer[185]); nullableStringArray.SetPropertyIndexes( - index: 182, - originalValueIndex: 182, + index: 185, + originalValueIndex: 185, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11781,12 +11991,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeOnly.SetAccessors( TimeOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnly, 183), + TimeOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnly, 186), TimeOnly? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeOnly), - object (ValueBuffer valueBuffer) => valueBuffer[183]); + object (ValueBuffer valueBuffer) => valueBuffer[186]); nullableTimeOnly.SetPropertyIndexes( - index: 183, - originalValueIndex: 183, + index: 186, + originalValueIndex: 186, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11824,12 +12034,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeOnlyArray.SetAccessors( TimeOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnlyArray, 184), + TimeOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnlyArray, 187), TimeOnly? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[184]); + object (ValueBuffer valueBuffer) => valueBuffer[187]); nullableTimeOnlyArray.SetPropertyIndexes( - index: 184, - originalValueIndex: 184, + index: 187, + originalValueIndex: 187, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11888,12 +12098,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeSpan.SetAccessors( TimeSpan? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpan, 185), + TimeSpan? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpan, 188), TimeSpan? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeSpan), - object (ValueBuffer valueBuffer) => valueBuffer[185]); + object (ValueBuffer valueBuffer) => valueBuffer[188]); nullableTimeSpan.SetPropertyIndexes( - index: 185, - originalValueIndex: 185, + index: 188, + originalValueIndex: 188, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11931,12 +12141,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeSpanArray.SetAccessors( TimeSpan? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpanArray, 186), + TimeSpan? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpanArray, 189), TimeSpan? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeSpanArray), - object (ValueBuffer valueBuffer) => valueBuffer[186]); + object (ValueBuffer valueBuffer) => valueBuffer[189]); nullableTimeSpanArray.SetPropertyIndexes( - index: 186, - originalValueIndex: 186, + index: 189, + originalValueIndex: 189, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11995,12 +12205,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt16.SetAccessors( ushort? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16, 187), + ushort? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16, 190), ushort? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt16), - object (ValueBuffer valueBuffer) => valueBuffer[187]); + object (ValueBuffer valueBuffer) => valueBuffer[190]); nullableUInt16.SetPropertyIndexes( - index: 187, - originalValueIndex: 187, + index: 190, + originalValueIndex: 190, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12046,12 +12256,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt16Array.SetAccessors( ushort? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16Array, 188), + ushort? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16Array, 191), ushort? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[188]); + object (ValueBuffer valueBuffer) => valueBuffer[191]); nullableUInt16Array.SetPropertyIndexes( - index: 188, - originalValueIndex: 188, + index: 191, + originalValueIndex: 191, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12126,12 +12336,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt32.SetAccessors( uint? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32, 189), + uint? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32, 192), uint? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt32), - object (ValueBuffer valueBuffer) => valueBuffer[189]); + object (ValueBuffer valueBuffer) => valueBuffer[192]); nullableUInt32.SetPropertyIndexes( - index: 189, - originalValueIndex: 189, + index: 192, + originalValueIndex: 192, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12177,12 +12387,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt32Array.SetAccessors( uint? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32Array, 190), + uint? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32Array, 193), uint? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[190]); + object (ValueBuffer valueBuffer) => valueBuffer[193]); nullableUInt32Array.SetPropertyIndexes( - index: 190, - originalValueIndex: 190, + index: 193, + originalValueIndex: 193, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12257,12 +12467,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt64.SetAccessors( ulong? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64, 191), + ulong? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64, 194), ulong? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt64), - object (ValueBuffer valueBuffer) => valueBuffer[191]); + object (ValueBuffer valueBuffer) => valueBuffer[194]); nullableUInt64.SetPropertyIndexes( - index: 191, - originalValueIndex: 191, + index: 194, + originalValueIndex: 194, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12312,12 +12522,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt64Array.SetAccessors( ulong? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64Array, 192), + ulong? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64Array, 195), ulong? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[192]); + object (ValueBuffer valueBuffer) => valueBuffer[195]); nullableUInt64Array.SetPropertyIndexes( - index: 192, - originalValueIndex: 192, + index: 195, + originalValueIndex: 195, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12396,12 +12606,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt8.SetAccessors( byte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8, 193), + byte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8, 196), byte? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt8), - object (ValueBuffer valueBuffer) => valueBuffer[193]); + object (ValueBuffer valueBuffer) => valueBuffer[196]); nullableUInt8.SetPropertyIndexes( - index: 193, - originalValueIndex: 193, + index: 196, + originalValueIndex: 196, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12439,12 +12649,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt8Array.SetAccessors( byte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8Array, 194), + byte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8Array, 197), byte? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[194]); + object (ValueBuffer valueBuffer) => valueBuffer[197]); nullableUInt8Array.SetPropertyIndexes( - index: 194, - originalValueIndex: 194, + index: 197, + originalValueIndex: 197, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12503,12 +12713,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUri.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUri, 195), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUri, 198), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUri), - object (ValueBuffer valueBuffer) => valueBuffer[195]); + object (ValueBuffer valueBuffer) => valueBuffer[198]); nullableUri.SetPropertyIndexes( - index: 195, - originalValueIndex: 195, + index: 198, + originalValueIndex: 198, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12557,12 +12767,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUriArray.SetAccessors( Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUriArray, 196), + Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUriArray, 199), Uri[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUriArray), - object (ValueBuffer valueBuffer) => valueBuffer[196]); + object (ValueBuffer valueBuffer) => valueBuffer[199]); nullableUriArray.SetPropertyIndexes( - index: 196, - originalValueIndex: 196, + index: 199, + originalValueIndex: 199, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12641,12 +12851,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddress.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddress, 197), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddress, 200), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddress), - object (ValueBuffer valueBuffer) => valueBuffer[197]); + object (ValueBuffer valueBuffer) => valueBuffer[200]); physicalAddress.SetPropertyIndexes( - index: 197, - originalValueIndex: 197, + index: 200, + originalValueIndex: 200, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12695,12 +12905,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressArray.SetAccessors( PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressArray, 198), + PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressArray, 201), PhysicalAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[198]); + object (ValueBuffer valueBuffer) => valueBuffer[201]); physicalAddressArray.SetPropertyIndexes( - index: 198, - originalValueIndex: 198, + index: 201, + originalValueIndex: 201, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12780,12 +12990,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressToBytesConverterProperty.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToBytesConverterProperty, 199), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToBytesConverterProperty, 202), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[199]); + object (ValueBuffer valueBuffer) => valueBuffer[202]); physicalAddressToBytesConverterProperty.SetPropertyIndexes( - index: 199, - originalValueIndex: 199, + index: 202, + originalValueIndex: 202, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12833,12 +13043,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressToStringConverterProperty.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToStringConverterProperty, 200), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToStringConverterProperty, 203), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[200]); + object (ValueBuffer valueBuffer) => valueBuffer[203]); physicalAddressToStringConverterProperty.SetPropertyIndexes( - index: 200, - originalValueIndex: 200, + index: 203, + originalValueIndex: 203, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12887,12 +13097,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @string.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.String(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.String(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(@string, 201), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(@string, 204), string (InternalEntityEntry entry) => entry.GetCurrentValue(@string), - object (ValueBuffer valueBuffer) => valueBuffer[201]); + object (ValueBuffer valueBuffer) => valueBuffer[204]); @string.SetPropertyIndexes( - index: 201, - originalValueIndex: 201, + index: 204, + originalValueIndex: 204, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12916,38 +13126,106 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None); @string.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); - var stringArray = runtimeEntityType.AddProperty( - "StringArray", - typeof(string[]), - propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringArray", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), - fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); - stringArray.SetGetter( - string[] (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors.StringArray(entity), - bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors.StringArray(entity) == null, - string[] (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors.StringArray(instance), - bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors.StringArray(instance) == null); - stringArray.SetSetter( - (CompiledModelTestBase.ManyTypes entity, string[] value) => ManyTypesUnsafeAccessors.StringArray(entity) = value); - stringArray.SetMaterializationSetter( - (CompiledModelTestBase.ManyTypes entity, string[] value) => ManyTypesUnsafeAccessors.StringArray(entity) = value); - stringArray.SetAccessors( - string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringArray, 202), - string[] (InternalEntityEntry entry) => entry.GetCurrentValue(stringArray), - object (ValueBuffer valueBuffer) => valueBuffer[202]); - stringArray.SetPropertyIndexes( - index: 202, - originalValueIndex: 202, + var stringArray = runtimeEntityType.AddProperty( + "StringArray", + typeof(string[]), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringArray", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + stringArray.SetGetter( + string[] (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors.StringArray(entity), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors.StringArray(entity) == null, + string[] (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors.StringArray(instance), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors.StringArray(instance) == null); + stringArray.SetSetter( + (CompiledModelTestBase.ManyTypes entity, string[] value) => ManyTypesUnsafeAccessors.StringArray(entity) = value); + stringArray.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, string[] value) => ManyTypesUnsafeAccessors.StringArray(entity) = value); + stringArray.SetAccessors( + string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), + string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), + string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringArray, 205), + string[] (InternalEntityEntry entry) => entry.GetCurrentValue(stringArray), + object (ValueBuffer valueBuffer) => valueBuffer[205]); + stringArray.SetPropertyIndexes( + index: 205, + originalValueIndex: 205, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + stringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer(new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v)), + keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( + JsonStringReaderWriter.Instance)), + storeTypePostfix: StoreTypePostfix.None, + jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( + JsonStringReaderWriter.Instance), + elementMapping: SqlServerStringTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + keyComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + storeTypePostfix: StoreTypePostfix.None)); + stringArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + + var stringReadOnlyCollection = runtimeEntityType.AddProperty( + "StringReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_stringReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + stringReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance) == null); + stringReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) = ((List)(value))); + stringReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) = ((List)(value))); + stringReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(stringReadOnlyCollection, 206), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(stringReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[206]); + stringReadOnlyCollection.SetPropertyIndexes( + index: 206, + originalValueIndex: 206, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); - stringArray.TypeMapping = SqlServerStringTypeMapping.Default.Clone( - comparer: new ListOfReferenceTypesComparer(new ValueComparer( + stringReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( bool (string v1, string v2) => v1 == v2, int (string v) => ((object)v).GetHashCode(), string (string v) => v)), - keyComparer: new ListOfReferenceTypesComparer(new ValueComparer( + keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( bool (string v1, string v2) => v1 == v2, int (string v) => ((object)v).GetHashCode(), string (string v) => v)), @@ -12959,10 +13237,10 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypeName: "nvarchar(max)", unicode: true, dbType: System.Data.DbType.String), - converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter( + converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance)), storeTypePostfix: StoreTypePostfix.None, - jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter( + jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( JsonStringReaderWriter.Instance), elementMapping: SqlServerStringTypeMapping.Default.Clone( comparer: new ValueComparer( @@ -12982,7 +13260,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas unicode: true, dbType: System.Data.DbType.String), storeTypePostfix: StoreTypePostfix.None)); - stringArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + stringReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); var stringToBoolConverterProperty = runtimeEntityType.AddProperty( "StringToBoolConverterProperty", @@ -13002,12 +13280,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToBoolConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBoolConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBoolConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBoolConverterProperty, 203), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBoolConverterProperty, 207), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToBoolConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[203]); + object (ValueBuffer valueBuffer) => valueBuffer[207]); stringToBoolConverterProperty.SetPropertyIndexes( - index: 203, - originalValueIndex: 203, + index: 207, + originalValueIndex: 207, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13052,12 +13330,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToBytesConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBytesConverterProperty, 204), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBytesConverterProperty, 208), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[204]); + object (ValueBuffer valueBuffer) => valueBuffer[208]); stringToBytesConverterProperty.SetPropertyIndexes( - index: 204, - originalValueIndex: 204, + index: 208, + originalValueIndex: 208, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13105,12 +13383,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToCharConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToCharConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToCharConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToCharConverterProperty, 205), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToCharConverterProperty, 209), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToCharConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[205]); + object (ValueBuffer valueBuffer) => valueBuffer[209]); stringToCharConverterProperty.SetPropertyIndexes( - index: 205, - originalValueIndex: 205, + index: 209, + originalValueIndex: 209, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13160,12 +13438,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateOnlyConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateOnlyConverterProperty, 206), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateOnlyConverterProperty, 210), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateOnlyConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[206]); + object (ValueBuffer valueBuffer) => valueBuffer[210]); stringToDateOnlyConverterProperty.SetPropertyIndexes( - index: 206, - originalValueIndex: 206, + index: 210, + originalValueIndex: 210, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13212,12 +13490,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateTimeConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeConverterProperty, 207), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeConverterProperty, 211), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateTimeConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[207]); + object (ValueBuffer valueBuffer) => valueBuffer[211]); stringToDateTimeConverterProperty.SetPropertyIndexes( - index: 207, - originalValueIndex: 207, + index: 211, + originalValueIndex: 211, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13264,12 +13542,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateTimeOffsetConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeOffsetConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeOffsetConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeOffsetConverterProperty, 208), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeOffsetConverterProperty, 212), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateTimeOffsetConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[208]); + object (ValueBuffer valueBuffer) => valueBuffer[212]); stringToDateTimeOffsetConverterProperty.SetPropertyIndexes( - index: 208, - originalValueIndex: 208, + index: 212, + originalValueIndex: 212, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13316,12 +13594,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDecimalNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDecimalNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDecimalNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDecimalNumberConverterProperty, 209), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDecimalNumberConverterProperty, 213), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDecimalNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[209]); + object (ValueBuffer valueBuffer) => valueBuffer[213]); stringToDecimalNumberConverterProperty.SetPropertyIndexes( - index: 209, - originalValueIndex: 209, + index: 213, + originalValueIndex: 213, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13368,12 +13646,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDoubleNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDoubleNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDoubleNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDoubleNumberConverterProperty, 210), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDoubleNumberConverterProperty, 214), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDoubleNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[210]); + object (ValueBuffer valueBuffer) => valueBuffer[214]); stringToDoubleNumberConverterProperty.SetPropertyIndexes( - index: 210, - originalValueIndex: 210, + index: 214, + originalValueIndex: 214, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13420,12 +13698,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToEnumConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToEnumConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToEnumConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToEnumConverterProperty, 211), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToEnumConverterProperty, 215), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToEnumConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[211]); + object (ValueBuffer valueBuffer) => valueBuffer[215]); stringToEnumConverterProperty.SetPropertyIndexes( - index: 211, - originalValueIndex: 211, + index: 215, + originalValueIndex: 215, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13469,12 +13747,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToGuidConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToGuidConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToGuidConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToGuidConverterProperty, 212), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToGuidConverterProperty, 216), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToGuidConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[212]); + object (ValueBuffer valueBuffer) => valueBuffer[216]); stringToGuidConverterProperty.SetPropertyIndexes( - index: 212, - originalValueIndex: 212, + index: 216, + originalValueIndex: 216, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13516,12 +13794,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToIntNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToIntNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToIntNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToIntNumberConverterProperty, 213), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToIntNumberConverterProperty, 217), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToIntNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[213]); + object (ValueBuffer valueBuffer) => valueBuffer[217]); stringToIntNumberConverterProperty.SetPropertyIndexes( - index: 213, - originalValueIndex: 213, + index: 217, + originalValueIndex: 217, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13568,12 +13846,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToTimeOnlyConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeOnlyConverterProperty, 214), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeOnlyConverterProperty, 218), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToTimeOnlyConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[214]); + object (ValueBuffer valueBuffer) => valueBuffer[218]); stringToTimeOnlyConverterProperty.SetPropertyIndexes( - index: 214, - originalValueIndex: 214, + index: 218, + originalValueIndex: 218, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13620,12 +13898,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToTimeSpanConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeSpanConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeSpanConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeSpanConverterProperty, 215), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeSpanConverterProperty, 219), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToTimeSpanConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[215]); + object (ValueBuffer valueBuffer) => valueBuffer[219]); stringToTimeSpanConverterProperty.SetPropertyIndexes( - index: 215, - originalValueIndex: 215, + index: 219, + originalValueIndex: 219, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13672,12 +13950,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToUriConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToUriConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToUriConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToUriConverterProperty, 216), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToUriConverterProperty, 220), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToUriConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[216]); + object (ValueBuffer valueBuffer) => valueBuffer[220]); stringToUriConverterProperty.SetPropertyIndexes( - index: 216, - originalValueIndex: 216, + index: 220, + originalValueIndex: 220, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13727,12 +14005,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnly.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnly, 217), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnly, 221), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnly), - object (ValueBuffer valueBuffer) => valueBuffer[217]); + object (ValueBuffer valueBuffer) => valueBuffer[221]); timeOnly.SetPropertyIndexes( - index: 217, - originalValueIndex: 217, + index: 221, + originalValueIndex: 221, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13768,12 +14046,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyArray.SetAccessors( TimeOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyArray, 218), + TimeOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyArray, 222), TimeOnly[] (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[218]); + object (ValueBuffer valueBuffer) => valueBuffer[222]); timeOnlyArray.SetPropertyIndexes( - index: 218, - originalValueIndex: 218, + index: 222, + originalValueIndex: 222, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13832,12 +14110,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyToStringConverterProperty.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToStringConverterProperty, 219), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToStringConverterProperty, 223), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[219]); + object (ValueBuffer valueBuffer) => valueBuffer[223]); timeOnlyToStringConverterProperty.SetPropertyIndexes( - index: 219, - originalValueIndex: 219, + index: 223, + originalValueIndex: 223, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13888,12 +14166,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyToTicksConverterProperty.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToTicksConverterProperty, 220), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToTicksConverterProperty, 224), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[220]); + object (ValueBuffer valueBuffer) => valueBuffer[224]); timeOnlyToTicksConverterProperty.SetPropertyIndexes( - index: 220, - originalValueIndex: 220, + index: 224, + originalValueIndex: 224, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13939,12 +14217,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpan.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpan, 221), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpan, 225), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpan), - object (ValueBuffer valueBuffer) => valueBuffer[221]); + object (ValueBuffer valueBuffer) => valueBuffer[225]); timeSpan.SetPropertyIndexes( - index: 221, - originalValueIndex: 221, + index: 225, + originalValueIndex: 225, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13980,12 +14258,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanArray.SetAccessors( TimeSpan[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanArray, 222), + TimeSpan[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanArray, 226), TimeSpan[] (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanArray), - object (ValueBuffer valueBuffer) => valueBuffer[222]); + object (ValueBuffer valueBuffer) => valueBuffer[226]); timeSpanArray.SetPropertyIndexes( - index: 222, - originalValueIndex: 222, + index: 226, + originalValueIndex: 226, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14044,12 +14322,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanToStringConverterProperty.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToStringConverterProperty, 223), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToStringConverterProperty, 227), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[223]); + object (ValueBuffer valueBuffer) => valueBuffer[227]); timeSpanToStringConverterProperty.SetPropertyIndexes( - index: 223, - originalValueIndex: 223, + index: 227, + originalValueIndex: 227, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14100,12 +14378,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanToTicksConverterProperty.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToTicksConverterProperty, 224), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToTicksConverterProperty, 228), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[224]); + object (ValueBuffer valueBuffer) => valueBuffer[228]); timeSpanToTicksConverterProperty.SetPropertyIndexes( - index: 224, - originalValueIndex: 224, + index: 228, + originalValueIndex: 228, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14150,12 +14428,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt16.SetAccessors( ushort (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16, 225), + ushort (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16, 229), ushort (InternalEntityEntry entry) => entry.GetCurrentValue(uInt16), - object (ValueBuffer valueBuffer) => valueBuffer[225]); + object (ValueBuffer valueBuffer) => valueBuffer[229]); uInt16.SetPropertyIndexes( - index: 225, - originalValueIndex: 225, + index: 229, + originalValueIndex: 229, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14200,12 +14478,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt16Array.SetAccessors( ushort[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16Array, 226), + ushort[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16Array, 230), ushort[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[226]); + object (ValueBuffer valueBuffer) => valueBuffer[230]); uInt16Array.SetPropertyIndexes( - index: 226, - originalValueIndex: 226, + index: 230, + originalValueIndex: 230, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14279,12 +14557,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt32.SetAccessors( uint (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32, 227), + uint (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32, 231), uint (InternalEntityEntry entry) => entry.GetCurrentValue(uInt32), - object (ValueBuffer valueBuffer) => valueBuffer[227]); + object (ValueBuffer valueBuffer) => valueBuffer[231]); uInt32.SetPropertyIndexes( - index: 227, - originalValueIndex: 227, + index: 231, + originalValueIndex: 231, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14329,12 +14607,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt32Array.SetAccessors( uint[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32Array, 228), + uint[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32Array, 232), uint[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[228]); + object (ValueBuffer valueBuffer) => valueBuffer[232]); uInt32Array.SetPropertyIndexes( - index: 228, - originalValueIndex: 228, + index: 232, + originalValueIndex: 232, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14408,12 +14686,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt64.SetAccessors( ulong (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64, 229), + ulong (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64, 233), ulong (InternalEntityEntry entry) => entry.GetCurrentValue(uInt64), - object (ValueBuffer valueBuffer) => valueBuffer[229]); + object (ValueBuffer valueBuffer) => valueBuffer[233]); uInt64.SetPropertyIndexes( - index: 229, - originalValueIndex: 229, + index: 233, + originalValueIndex: 233, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14462,12 +14740,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt64Array.SetAccessors( ulong[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64Array, 230), + ulong[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64Array, 234), ulong[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[230]); + object (ValueBuffer valueBuffer) => valueBuffer[234]); uInt64Array.SetPropertyIndexes( - index: 230, - originalValueIndex: 230, + index: 234, + originalValueIndex: 234, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14546,12 +14824,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt8.SetAccessors( byte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8, 231), + byte (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8, 235), byte (InternalEntityEntry entry) => entry.GetCurrentValue(uInt8), - object (ValueBuffer valueBuffer) => valueBuffer[231]); + object (ValueBuffer valueBuffer) => valueBuffer[235]); uInt8.SetPropertyIndexes( - index: 231, - originalValueIndex: 231, + index: 235, + originalValueIndex: 235, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14587,12 +14865,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt8Array.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8Array, 232), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8Array, 236), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[232]); + object (ValueBuffer valueBuffer) => valueBuffer[236]); uInt8Array.SetPropertyIndexes( - index: 232, - originalValueIndex: 232, + index: 236, + originalValueIndex: 236, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14614,6 +14892,69 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas storeTypePostfix: StoreTypePostfix.None); uInt8Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( + "UInt8ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_uInt8ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + uInt8ReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance) == null); + uInt8ReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) = ((List)(value))); + uInt8ReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) = ((List)(value))); + uInt8ReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(uInt8ReadOnlyCollection, 237), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(uInt8ReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[237]); + uInt8ReadOnlyCollection.SetPropertyIndexes( + index: 237, + originalValueIndex: 237, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + uInt8ReadOnlyCollection.TypeMapping = SqlServerStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v)), + keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "nvarchar(max)", + unicode: true, + dbType: System.Data.DbType.String), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( + JsonByteReaderWriter.Instance)), + storeTypePostfix: StoreTypePostfix.None, + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( + JsonByteReaderWriter.Instance), + elementMapping: SqlServerByteTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + keyComparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + providerValueComparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v))); + uInt8ReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var uri = runtimeEntityType.AddProperty( "Uri", typeof(Uri), @@ -14631,12 +14972,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uri.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Uri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Uri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uri, 233), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uri, 238), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(uri), - object (ValueBuffer valueBuffer) => valueBuffer[233]); + object (ValueBuffer valueBuffer) => valueBuffer[238]); uri.SetPropertyIndexes( - index: 233, - originalValueIndex: 233, + index: 238, + originalValueIndex: 238, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14685,12 +15026,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uriArray.SetAccessors( Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uriArray, 234), + Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uriArray, 239), Uri[] (InternalEntityEntry entry) => entry.GetCurrentValue(uriArray), - object (ValueBuffer valueBuffer) => valueBuffer[234]); + object (ValueBuffer valueBuffer) => valueBuffer[239]); uriArray.SetPropertyIndexes( - index: 234, - originalValueIndex: 234, + index: 239, + originalValueIndex: 239, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14770,12 +15111,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uriToStringConverterProperty.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uriToStringConverterProperty, 235), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uriToStringConverterProperty, 240), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(uriToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[235]); + object (ValueBuffer valueBuffer) => valueBuffer[240]); uriToStringConverterProperty.SetPropertyIndexes( - index: 235, - originalValueIndex: 235, + index: 240, + originalValueIndex: 240, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -14819,6 +15160,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var id = runtimeEntityType.FindProperty("Id"); var @bool = runtimeEntityType.FindProperty("Bool"); var boolArray = runtimeEntityType.FindProperty("BoolArray"); + var boolReadOnlyCollection = runtimeEntityType.FindProperty("BoolReadOnlyCollection"); var boolToStringConverterProperty = runtimeEntityType.FindProperty("BoolToStringConverterProperty"); var boolToTwoValuesConverterProperty = runtimeEntityType.FindProperty("BoolToTwoValuesConverterProperty"); var boolToZeroOneConverterProperty = runtimeEntityType.FindProperty("BoolToZeroOneConverterProperty"); @@ -14906,12 +15248,14 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var guidToStringConverterProperty = runtimeEntityType.FindProperty("GuidToStringConverterProperty"); var iPAddress = runtimeEntityType.FindProperty("IPAddress"); var iPAddressArray = runtimeEntityType.FindProperty("IPAddressArray"); + var iPAddressReadOnlyCollection = runtimeEntityType.FindProperty("IPAddressReadOnlyCollection"); var iPAddressToBytesConverterProperty = runtimeEntityType.FindProperty("IPAddressToBytesConverterProperty"); var iPAddressToStringConverterProperty = runtimeEntityType.FindProperty("IPAddressToStringConverterProperty"); var int16 = runtimeEntityType.FindProperty("Int16"); var int16Array = runtimeEntityType.FindProperty("Int16Array"); var int32 = runtimeEntityType.FindProperty("Int32"); var int32Array = runtimeEntityType.FindProperty("Int32Array"); + var int32ReadOnlyCollection = runtimeEntityType.FindProperty("Int32ReadOnlyCollection"); var int64 = runtimeEntityType.FindProperty("Int64"); var int64Array = runtimeEntityType.FindProperty("Int64Array"); var int8 = runtimeEntityType.FindProperty("Int8"); @@ -15019,6 +15363,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var physicalAddressToStringConverterProperty = runtimeEntityType.FindProperty("PhysicalAddressToStringConverterProperty"); var @string = runtimeEntityType.FindProperty("String"); var stringArray = runtimeEntityType.FindProperty("StringArray"); + var stringReadOnlyCollection = runtimeEntityType.FindProperty("StringReadOnlyCollection"); var stringToBoolConverterProperty = runtimeEntityType.FindProperty("StringToBoolConverterProperty"); var stringToBytesConverterProperty = runtimeEntityType.FindProperty("StringToBytesConverterProperty"); var stringToCharConverterProperty = runtimeEntityType.FindProperty("StringToCharConverterProperty"); @@ -15049,6 +15394,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var uInt64Array = runtimeEntityType.FindProperty("UInt64Array"); var uInt8 = runtimeEntityType.FindProperty("UInt8"); var uInt8Array = runtimeEntityType.FindProperty("UInt8Array"); + var uInt8ReadOnlyCollection = runtimeEntityType.FindProperty("UInt8ReadOnlyCollection"); var uri = runtimeEntityType.FindProperty("Uri"); var uriArray = runtimeEntityType.FindProperty("UriArray"); var uriToStringConverterProperty = runtimeEntityType.FindProperty("UriToStringConverterProperty"); @@ -15059,21 +15405,23 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) ISnapshot (InternalEntityEntry source) => { var entity = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg = ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), ((ValueComparer)(((IProperty)@bool).GetValueComparer())).Snapshot(source.GetCurrentValue(@bool)), (((IEnumerable)(source.GetCurrentValue(boolArray))) == null ? null : ((bool[])(((ValueComparer>)(((IProperty)boolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(boolArray))))))), ((ValueComparer)(((IProperty)boolToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToStringConverterProperty)), ((ValueComparer)(((IProperty)boolToTwoValuesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToTwoValuesConverterProperty)), ((ValueComparer)(((IProperty)boolToZeroOneConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToZeroOneConverterProperty)), (source.GetCurrentValue(bytes) == null ? null : ((ValueComparer)(((IProperty)bytes).GetValueComparer())).Snapshot(source.GetCurrentValue(bytes))), (((object)(source.GetCurrentValue(bytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)bytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(bytesArray))))))), (source.GetCurrentValue(bytesToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)bytesToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(bytesToStringConverterProperty))), ((ValueComparer)(((IProperty)castingConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(castingConverterProperty)), ((ValueComparer)(((IProperty)@char).GetValueComparer())).Snapshot(source.GetCurrentValue(@char)), (((IEnumerable)(source.GetCurrentValue(charArray))) == null ? null : ((char[])(((ValueComparer>)(((IProperty)charArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(charArray))))))), ((ValueComparer)(((IProperty)charToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(charToStringConverterProperty)), ((ValueComparer)(((IProperty)dateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnly)), (((IEnumerable)(source.GetCurrentValue(dateOnlyArray))) == null ? null : ((DateOnly[])(((ValueComparer>)(((IProperty)dateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateOnlyArray))))))), ((ValueComparer)(((IProperty)dateOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTime)), (((IEnumerable)(source.GetCurrentValue(dateTimeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)dateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateTimeArray))))))), ((ValueComparer)(((IProperty)dateTimeOffsetToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBytesConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToTicksConverterProperty)), ((ValueComparer)(((IProperty)@decimal).GetValueComparer())).Snapshot(source.GetCurrentValue(@decimal)), (((IEnumerable)(source.GetCurrentValue(decimalArray))) == null ? null : ((decimal[])(((ValueComparer>)(((IProperty)decimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(decimalArray))))))), ((ValueComparer)(((IProperty)decimalNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)decimalNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)@double).GetValueComparer())).Snapshot(source.GetCurrentValue(@double)), (((IEnumerable)(source.GetCurrentValue(doubleArray))) == null ? null : ((double[])(((ValueComparer>)(((IProperty)doubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(doubleArray)))))))))); + var liftedArg = ((ISnapshot)(new Snapshot, bool, bool, bool, byte[], byte[][], byte[], int, char, char[], char, DateOnly, DateOnly[], DateOnly, DateTime, DateTime[], DateTimeOffset, DateTimeOffset, DateTimeOffset, DateTime, DateTime, DateTime, decimal, decimal[], decimal, decimal, double>(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), ((ValueComparer)(((IProperty)@bool).GetValueComparer())).Snapshot(source.GetCurrentValue(@bool)), (((IEnumerable)(source.GetCurrentValue(boolArray))) == null ? null : ((bool[])(((ValueComparer>)(((IProperty)boolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(boolArray))))))), (((IEnumerable)(source.GetCurrentValue>(boolReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)boolReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(boolReadOnlyCollection))))))), ((ValueComparer)(((IProperty)boolToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToStringConverterProperty)), ((ValueComparer)(((IProperty)boolToTwoValuesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToTwoValuesConverterProperty)), ((ValueComparer)(((IProperty)boolToZeroOneConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToZeroOneConverterProperty)), (source.GetCurrentValue(bytes) == null ? null : ((ValueComparer)(((IProperty)bytes).GetValueComparer())).Snapshot(source.GetCurrentValue(bytes))), (((object)(source.GetCurrentValue(bytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)bytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(bytesArray))))))), (source.GetCurrentValue(bytesToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)bytesToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(bytesToStringConverterProperty))), ((ValueComparer)(((IProperty)castingConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(castingConverterProperty)), ((ValueComparer)(((IProperty)@char).GetValueComparer())).Snapshot(source.GetCurrentValue(@char)), (((IEnumerable)(source.GetCurrentValue(charArray))) == null ? null : ((char[])(((ValueComparer>)(((IProperty)charArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(charArray))))))), ((ValueComparer)(((IProperty)charToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(charToStringConverterProperty)), ((ValueComparer)(((IProperty)dateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnly)), (((IEnumerable)(source.GetCurrentValue(dateOnlyArray))) == null ? null : ((DateOnly[])(((ValueComparer>)(((IProperty)dateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateOnlyArray))))))), ((ValueComparer)(((IProperty)dateOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTime)), (((IEnumerable)(source.GetCurrentValue(dateTimeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)dateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateTimeArray))))))), ((ValueComparer)(((IProperty)dateTimeOffsetToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBytesConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToTicksConverterProperty)), ((ValueComparer)(((IProperty)@decimal).GetValueComparer())).Snapshot(source.GetCurrentValue(@decimal)), (((IEnumerable)(source.GetCurrentValue(decimalArray))) == null ? null : ((decimal[])(((ValueComparer>)(((IProperty)decimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(decimalArray))))))), ((ValueComparer)(((IProperty)decimalNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)decimalNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)@double).GetValueComparer())).Snapshot(source.GetCurrentValue(@double))))); var entity0 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg0 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], List, List, CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], List, List, CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], List, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32, CompiledModelTestBase.EnumU16, CompiledModelTestBase.EnumU16[]>(((ValueComparer)(((IProperty)doubleNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)doubleNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)enum16).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16)), (((IEnumerable)(source.GetCurrentValue(enum16Array))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16Array))))))), ((ValueComparer)(((IProperty)enum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16AsString)), (((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16Collection))))))), ((ValueComparer)(((IProperty)enum32).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32)), (((IEnumerable)(source.GetCurrentValue(enum32Array))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32Array))))))), ((ValueComparer)(((IProperty)enum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32AsString)), (((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32Collection))))))), ((ValueComparer)(((IProperty)enum64).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64)), (((IEnumerable)(source.GetCurrentValue(enum64Array))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64Array))))))), ((ValueComparer)(((IProperty)enum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64AsString)), (((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64Collection))))))), ((ValueComparer)(((IProperty)enum8).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8)), (((IEnumerable)(source.GetCurrentValue(enum8Array))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8Array))))))), ((ValueComparer)(((IProperty)enum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8AsString)), (((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8Collection))))))), ((ValueComparer)(((IProperty)enumToNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToNumberConverterProperty)), ((ValueComparer)(((IProperty)enumToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToStringConverterProperty)), ((ValueComparer)(((IProperty)enumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16)), (((IEnumerable)(source.GetCurrentValue(enumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16Array)))))))))); + var liftedArg0 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], List, List, CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], List, List, CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], List, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32, CompiledModelTestBase.EnumU16>((((IEnumerable)(source.GetCurrentValue(doubleArray))) == null ? null : ((double[])(((ValueComparer>)(((IProperty)doubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(doubleArray))))))), ((ValueComparer)(((IProperty)doubleNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)doubleNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)enum16).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16)), (((IEnumerable)(source.GetCurrentValue(enum16Array))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16Array))))))), ((ValueComparer)(((IProperty)enum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16AsString)), (((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16Collection))))))), ((ValueComparer)(((IProperty)enum32).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32)), (((IEnumerable)(source.GetCurrentValue(enum32Array))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32Array))))))), ((ValueComparer)(((IProperty)enum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32AsString)), (((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32Collection))))))), ((ValueComparer)(((IProperty)enum64).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64)), (((IEnumerable)(source.GetCurrentValue(enum64Array))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64Array))))))), ((ValueComparer)(((IProperty)enum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64AsString)), (((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64Collection))))))), ((ValueComparer)(((IProperty)enum8).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8)), (((IEnumerable)(source.GetCurrentValue(enum8Array))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8Array))))))), ((ValueComparer)(((IProperty)enum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8AsString)), (((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8Collection))))))), ((ValueComparer)(((IProperty)enumToNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToNumberConverterProperty)), ((ValueComparer)(((IProperty)enumToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToStringConverterProperty)), ((ValueComparer)(((IProperty)enumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16))))); var entity1 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg1 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], List, List, CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], List, List, CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], List, List, float, float[], Guid, Guid[], Guid, Guid, IPAddress, IPAddress[]>(((ValueComparer)(((IProperty)enumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16AsString)), (((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16Collection))))))), ((ValueComparer)(((IProperty)enumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32)), (((IEnumerable)(source.GetCurrentValue(enumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32Array))))))), ((ValueComparer)(((IProperty)enumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32AsString)), (((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32Collection))))))), ((ValueComparer)(((IProperty)enumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64)), (((IEnumerable)(source.GetCurrentValue(enumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64Array))))))), ((ValueComparer)(((IProperty)enumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64AsString)), (((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64Collection))))))), ((ValueComparer)(((IProperty)enumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8)), (((IEnumerable)(source.GetCurrentValue(enumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8Array))))))), ((ValueComparer)(((IProperty)enumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8AsString)), (((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8Collection))))))), ((ValueComparer)(((IProperty)@float).GetValueComparer())).Snapshot(source.GetCurrentValue(@float)), (((IEnumerable)(source.GetCurrentValue(floatArray))) == null ? null : ((float[])(((ValueComparer>)(((IProperty)floatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(floatArray))))))), ((ValueComparer)(((IProperty)guid).GetValueComparer())).Snapshot(source.GetCurrentValue(guid)), (((IEnumerable)(source.GetCurrentValue(guidArray))) == null ? null : ((Guid[])(((ValueComparer>)(((IProperty)guidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(guidArray))))))), ((ValueComparer)(((IProperty)guidToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToBytesConverterProperty)), ((ValueComparer)(((IProperty)guidToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToStringConverterProperty)), (source.GetCurrentValue(iPAddress) == null ? null : ((ValueComparer)(((IProperty)iPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddress))), (((object)(source.GetCurrentValue(iPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)iPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(iPAddressArray)))))))))); + var liftedArg1 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], List, List, CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], List, List, CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], List, List, float, float[], Guid, Guid[], Guid, Guid, IPAddress>((((IEnumerable)(source.GetCurrentValue(enumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16Array))))))), ((ValueComparer)(((IProperty)enumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16AsString)), (((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16Collection))))))), ((ValueComparer)(((IProperty)enumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32)), (((IEnumerable)(source.GetCurrentValue(enumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32Array))))))), ((ValueComparer)(((IProperty)enumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32AsString)), (((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32Collection))))))), ((ValueComparer)(((IProperty)enumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64)), (((IEnumerable)(source.GetCurrentValue(enumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64Array))))))), ((ValueComparer)(((IProperty)enumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64AsString)), (((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64Collection))))))), ((ValueComparer)(((IProperty)enumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8)), (((IEnumerable)(source.GetCurrentValue(enumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8Array))))))), ((ValueComparer)(((IProperty)enumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8AsString)), (((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8Collection))))))), ((ValueComparer)(((IProperty)@float).GetValueComparer())).Snapshot(source.GetCurrentValue(@float)), (((IEnumerable)(source.GetCurrentValue(floatArray))) == null ? null : ((float[])(((ValueComparer>)(((IProperty)floatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(floatArray))))))), ((ValueComparer)(((IProperty)guid).GetValueComparer())).Snapshot(source.GetCurrentValue(guid)), (((IEnumerable)(source.GetCurrentValue(guidArray))) == null ? null : ((Guid[])(((ValueComparer>)(((IProperty)guidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(guidArray))))))), ((ValueComparer)(((IProperty)guidToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToBytesConverterProperty)), ((ValueComparer)(((IProperty)guidToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToStringConverterProperty)), (source.GetCurrentValue(iPAddress) == null ? null : ((ValueComparer)(((IProperty)iPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddress)))))); var entity2 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg2 = ((ISnapshot)(new Snapshot((source.GetCurrentValue(iPAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToBytesConverterProperty))), (source.GetCurrentValue(iPAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToStringConverterProperty))), ((ValueComparer)(((IProperty)int16).GetValueComparer())).Snapshot(source.GetCurrentValue(int16)), (((IEnumerable)(source.GetCurrentValue(int16Array))) == null ? null : ((short[])(((ValueComparer>)(((IProperty)int16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int16Array))))))), ((ValueComparer)(((IProperty)int32).GetValueComparer())).Snapshot(source.GetCurrentValue(int32)), (((IEnumerable)(source.GetCurrentValue(int32Array))) == null ? null : ((int[])(((ValueComparer>)(((IProperty)int32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int32Array))))))), ((ValueComparer)(((IProperty)int64).GetValueComparer())).Snapshot(source.GetCurrentValue(int64)), (((IEnumerable)(source.GetCurrentValue(int64Array))) == null ? null : ((long[])(((ValueComparer>)(((IProperty)int64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int64Array))))))), ((ValueComparer)(((IProperty)int8).GetValueComparer())).Snapshot(source.GetCurrentValue(int8)), (((IEnumerable)(source.GetCurrentValue(int8Array))) == null ? null : ((sbyte[])(((ValueComparer>)(((IProperty)int8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int8Array))))))), ((ValueComparer)(((IProperty)intNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)intNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToStringConverterProperty)), (source.GetCurrentValue(nullIntToNullStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)nullIntToNullStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(nullIntToNullStringConverterProperty))), (source.GetCurrentValue(nullableBool) == null ? null : ((ValueComparer)(((IProperty)nullableBool).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBool))), (((IEnumerable)(source.GetCurrentValue(nullableBoolArray))) == null ? null : ((bool? [])(((ValueComparer>)(((IProperty)nullableBoolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableBoolArray))))))), (source.GetCurrentValue(nullableBytes) == null ? null : ((ValueComparer)(((IProperty)nullableBytes).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBytes))), (((object)(source.GetCurrentValue(nullableBytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)nullableBytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableBytesArray))))))), (source.GetCurrentValue(nullableChar) == null ? null : ((ValueComparer)(((IProperty)nullableChar).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableChar))), (((IEnumerable)(source.GetCurrentValue(nullableCharArray))) == null ? null : ((char? [])(((ValueComparer>)(((IProperty)nullableCharArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableCharArray))))))), (source.GetCurrentValue(nullableDateOnly) == null ? null : ((ValueComparer)(((IProperty)nullableDateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateOnly))), (((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))) == null ? null : ((DateOnly? [])(((ValueComparer>)(((IProperty)nullableDateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))))))), (source.GetCurrentValue(nullableDateTime) == null ? null : ((ValueComparer)(((IProperty)nullableDateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateTime))), (((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))) == null ? null : ((DateTime? [])(((ValueComparer>)(((IProperty)nullableDateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))))))), (source.GetCurrentValue(nullableDecimal) == null ? null : ((ValueComparer)(((IProperty)nullableDecimal).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDecimal))), (((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))) == null ? null : ((decimal? [])(((ValueComparer>)(((IProperty)nullableDecimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))))))), (source.GetCurrentValue(nullableDouble) == null ? null : ((ValueComparer)(((IProperty)nullableDouble).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDouble))), (((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))) == null ? null : ((double? [])(((ValueComparer>)(((IProperty)nullableDoubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))))))), (source.GetCurrentValue(nullableEnum16) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))))))), (source.GetCurrentValue(nullableEnum16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16AsString)))))); + var liftedArg2 = ((ISnapshot)(new Snapshot, IPAddress, IPAddress, short, short[], int, int[], IReadOnlyCollection, long, long[], sbyte, sbyte[], int, int, int?, bool?, bool? [], byte[], byte[][], char?, char? [], DateOnly?, DateOnly? [], DateTime?, DateTime? [], decimal?, decimal? [], double?, double? []>((((object)(source.GetCurrentValue(iPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)iPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(iPAddressArray))))))), (((object)(source.GetCurrentValue>(iPAddressReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer)(((IProperty)iPAddressReadOnlyCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(iPAddressReadOnlyCollection))))))), (source.GetCurrentValue(iPAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToBytesConverterProperty))), (source.GetCurrentValue(iPAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToStringConverterProperty))), ((ValueComparer)(((IProperty)int16).GetValueComparer())).Snapshot(source.GetCurrentValue(int16)), (((IEnumerable)(source.GetCurrentValue(int16Array))) == null ? null : ((short[])(((ValueComparer>)(((IProperty)int16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int16Array))))))), ((ValueComparer)(((IProperty)int32).GetValueComparer())).Snapshot(source.GetCurrentValue(int32)), (((IEnumerable)(source.GetCurrentValue(int32Array))) == null ? null : ((int[])(((ValueComparer>)(((IProperty)int32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int32Array))))))), (((IEnumerable)(source.GetCurrentValue>(int32ReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)int32ReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(int32ReadOnlyCollection))))))), ((ValueComparer)(((IProperty)int64).GetValueComparer())).Snapshot(source.GetCurrentValue(int64)), (((IEnumerable)(source.GetCurrentValue(int64Array))) == null ? null : ((long[])(((ValueComparer>)(((IProperty)int64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int64Array))))))), ((ValueComparer)(((IProperty)int8).GetValueComparer())).Snapshot(source.GetCurrentValue(int8)), (((IEnumerable)(source.GetCurrentValue(int8Array))) == null ? null : ((sbyte[])(((ValueComparer>)(((IProperty)int8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int8Array))))))), ((ValueComparer)(((IProperty)intNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)intNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToStringConverterProperty)), (source.GetCurrentValue(nullIntToNullStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)nullIntToNullStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(nullIntToNullStringConverterProperty))), (source.GetCurrentValue(nullableBool) == null ? null : ((ValueComparer)(((IProperty)nullableBool).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBool))), (((IEnumerable)(source.GetCurrentValue(nullableBoolArray))) == null ? null : ((bool? [])(((ValueComparer>)(((IProperty)nullableBoolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableBoolArray))))))), (source.GetCurrentValue(nullableBytes) == null ? null : ((ValueComparer)(((IProperty)nullableBytes).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBytes))), (((object)(source.GetCurrentValue(nullableBytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)nullableBytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableBytesArray))))))), (source.GetCurrentValue(nullableChar) == null ? null : ((ValueComparer)(((IProperty)nullableChar).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableChar))), (((IEnumerable)(source.GetCurrentValue(nullableCharArray))) == null ? null : ((char? [])(((ValueComparer>)(((IProperty)nullableCharArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableCharArray))))))), (source.GetCurrentValue(nullableDateOnly) == null ? null : ((ValueComparer)(((IProperty)nullableDateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateOnly))), (((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))) == null ? null : ((DateOnly? [])(((ValueComparer>)(((IProperty)nullableDateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))))))), (source.GetCurrentValue(nullableDateTime) == null ? null : ((ValueComparer)(((IProperty)nullableDateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateTime))), (((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))) == null ? null : ((DateTime? [])(((ValueComparer>)(((IProperty)nullableDateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))))))), (source.GetCurrentValue(nullableDecimal) == null ? null : ((ValueComparer)(((IProperty)nullableDecimal).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDecimal))), (((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))) == null ? null : ((decimal? [])(((ValueComparer>)(((IProperty)nullableDecimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))))))), (source.GetCurrentValue(nullableDouble) == null ? null : ((ValueComparer)(((IProperty)nullableDouble).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDouble))), (((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))) == null ? null : ((double? [])(((ValueComparer>)(((IProperty)nullableDoubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDoubleArray)))))))))); var entity3 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg3 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], List, List, CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], List, List, CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], List, List, CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], List, List, CompiledModelTestBase.EnumU32?, CompiledModelTestBase.EnumU32? [], CompiledModelTestBase.EnumU32?>((((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))))))), (source.GetCurrentValue(nullableEnum32) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))))))), (source.GetCurrentValue(nullableEnum32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))))))), (source.GetCurrentValue(nullableEnum64) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))))))), (source.GetCurrentValue(nullableEnum64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))))))), (source.GetCurrentValue(nullableEnum8) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))))))), (source.GetCurrentValue(nullableEnum8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))))))), (source.GetCurrentValue(nullableEnumU16) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))))))), (source.GetCurrentValue(nullableEnumU16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))))))), (source.GetCurrentValue(nullableEnumU32) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))))))), (source.GetCurrentValue(nullableEnumU32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32AsString)))))); + var liftedArg3 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], List, List, CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], List, List, CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], List, List, CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], List, List>((source.GetCurrentValue(nullableEnum16) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))))))), (source.GetCurrentValue(nullableEnum16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))))))), (source.GetCurrentValue(nullableEnum32) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))))))), (source.GetCurrentValue(nullableEnum32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))))))), (source.GetCurrentValue(nullableEnum64) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))))))), (source.GetCurrentValue(nullableEnum64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))))))), (source.GetCurrentValue(nullableEnum8) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))))))), (source.GetCurrentValue(nullableEnum8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))))))), (source.GetCurrentValue(nullableEnumU16) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))))))), (source.GetCurrentValue(nullableEnumU16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection)))))))))); var entity4 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg4 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], List, List, CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], List, List, float?, float? [], Guid?, Guid? [], IPAddress, IPAddress[], short?, short? [], int?, int? [], long?, long? [], sbyte?, sbyte? [], PhysicalAddress>((((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))))))), (source.GetCurrentValue(nullableEnumU64) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))))))), (source.GetCurrentValue(nullableEnumU64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))))))), (source.GetCurrentValue(nullableEnumU8) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))))))), (source.GetCurrentValue(nullableEnumU8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))))))), (source.GetCurrentValue(nullableFloat) == null ? null : ((ValueComparer)(((IProperty)nullableFloat).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableFloat))), (((IEnumerable)(source.GetCurrentValue(nullableFloatArray))) == null ? null : ((float? [])(((ValueComparer>)(((IProperty)nullableFloatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableFloatArray))))))), (source.GetCurrentValue(nullableGuid) == null ? null : ((ValueComparer)(((IProperty)nullableGuid).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableGuid))), (((IEnumerable)(source.GetCurrentValue(nullableGuidArray))) == null ? null : ((Guid? [])(((ValueComparer>)(((IProperty)nullableGuidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableGuidArray))))))), (source.GetCurrentValue(nullableIPAddress) == null ? null : ((ValueComparer)(((IProperty)nullableIPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableIPAddress))), (((object)(source.GetCurrentValue(nullableIPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)nullableIPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableIPAddressArray))))))), (source.GetCurrentValue(nullableInt16) == null ? null : ((ValueComparer)(((IProperty)nullableInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt16))), (((IEnumerable)(source.GetCurrentValue(nullableInt16Array))) == null ? null : ((short? [])(((ValueComparer>)(((IProperty)nullableInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt16Array))))))), (source.GetCurrentValue(nullableInt32) == null ? null : ((ValueComparer)(((IProperty)nullableInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt32))), (((IEnumerable)(source.GetCurrentValue(nullableInt32Array))) == null ? null : ((int? [])(((ValueComparer>)(((IProperty)nullableInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt32Array))))))), (source.GetCurrentValue(nullableInt64) == null ? null : ((ValueComparer)(((IProperty)nullableInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt64))), (((IEnumerable)(source.GetCurrentValue(nullableInt64Array))) == null ? null : ((long? [])(((ValueComparer>)(((IProperty)nullableInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt64Array))))))), (source.GetCurrentValue(nullableInt8) == null ? null : ((ValueComparer)(((IProperty)nullableInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt8))), (((IEnumerable)(source.GetCurrentValue(nullableInt8Array))) == null ? null : ((sbyte? [])(((ValueComparer>)(((IProperty)nullableInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt8Array))))))), (source.GetCurrentValue(nullablePhysicalAddress) == null ? null : ((ValueComparer)(((IProperty)nullablePhysicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullablePhysicalAddress)))))); + var liftedArg4 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], List, List, CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], List, List, float?, float? [], Guid?, Guid? [], IPAddress, IPAddress[], short?, short? [], int?, int? [], long?, long? []>((source.GetCurrentValue(nullableEnumU32) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))))))), (source.GetCurrentValue(nullableEnumU32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))))))), (source.GetCurrentValue(nullableEnumU64) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))))))), (source.GetCurrentValue(nullableEnumU64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))))))), (source.GetCurrentValue(nullableEnumU8) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))))))), (source.GetCurrentValue(nullableEnumU8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))))))), (source.GetCurrentValue(nullableFloat) == null ? null : ((ValueComparer)(((IProperty)nullableFloat).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableFloat))), (((IEnumerable)(source.GetCurrentValue(nullableFloatArray))) == null ? null : ((float? [])(((ValueComparer>)(((IProperty)nullableFloatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableFloatArray))))))), (source.GetCurrentValue(nullableGuid) == null ? null : ((ValueComparer)(((IProperty)nullableGuid).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableGuid))), (((IEnumerable)(source.GetCurrentValue(nullableGuidArray))) == null ? null : ((Guid? [])(((ValueComparer>)(((IProperty)nullableGuidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableGuidArray))))))), (source.GetCurrentValue(nullableIPAddress) == null ? null : ((ValueComparer)(((IProperty)nullableIPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableIPAddress))), (((object)(source.GetCurrentValue(nullableIPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)nullableIPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableIPAddressArray))))))), (source.GetCurrentValue(nullableInt16) == null ? null : ((ValueComparer)(((IProperty)nullableInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt16))), (((IEnumerable)(source.GetCurrentValue(nullableInt16Array))) == null ? null : ((short? [])(((ValueComparer>)(((IProperty)nullableInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt16Array))))))), (source.GetCurrentValue(nullableInt32) == null ? null : ((ValueComparer)(((IProperty)nullableInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt32))), (((IEnumerable)(source.GetCurrentValue(nullableInt32Array))) == null ? null : ((int? [])(((ValueComparer>)(((IProperty)nullableInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt32Array))))))), (source.GetCurrentValue(nullableInt64) == null ? null : ((ValueComparer)(((IProperty)nullableInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt64))), (((IEnumerable)(source.GetCurrentValue(nullableInt64Array))) == null ? null : ((long? [])(((ValueComparer>)(((IProperty)nullableInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt64Array)))))))))); var entity5 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg5 = ((ISnapshot)(new Snapshot((((object)(source.GetCurrentValue(nullablePhysicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)nullablePhysicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullablePhysicalAddressArray))))))), (source.GetCurrentValue(nullableString) == null ? null : ((ValueComparer)(((IProperty)nullableString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableString))), (((object)(source.GetCurrentValue(nullableStringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)nullableStringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringArray))))))), (source.GetCurrentValue(nullableTimeOnly) == null ? null : ((ValueComparer)(((IProperty)nullableTimeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeOnly))), (((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))) == null ? null : ((TimeOnly? [])(((ValueComparer>)(((IProperty)nullableTimeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))))))), (source.GetCurrentValue(nullableTimeSpan) == null ? null : ((ValueComparer)(((IProperty)nullableTimeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeSpan))), (((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))) == null ? null : ((TimeSpan? [])(((ValueComparer>)(((IProperty)nullableTimeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))))))), (source.GetCurrentValue(nullableUInt16) == null ? null : ((ValueComparer)(((IProperty)nullableUInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt16))), (((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))) == null ? null : ((ushort? [])(((ValueComparer>)(((IProperty)nullableUInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))))))), (source.GetCurrentValue(nullableUInt32) == null ? null : ((ValueComparer)(((IProperty)nullableUInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt32))), (((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))) == null ? null : ((uint? [])(((ValueComparer>)(((IProperty)nullableUInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))))))), (source.GetCurrentValue(nullableUInt64) == null ? null : ((ValueComparer)(((IProperty)nullableUInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt64))), (((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))) == null ? null : ((ulong? [])(((ValueComparer>)(((IProperty)nullableUInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))))))), (source.GetCurrentValue(nullableUInt8) == null ? null : ((ValueComparer)(((IProperty)nullableUInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt8))), (((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))) == null ? null : ((byte? [])(((ValueComparer>)(((IProperty)nullableUInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))))))), (source.GetCurrentValue(nullableUri) == null ? null : ((ValueComparer)(((IProperty)nullableUri).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUri))), (((object)(source.GetCurrentValue(nullableUriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)nullableUriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableUriArray))))))), (source.GetCurrentValue(physicalAddress) == null ? null : ((ValueComparer)(((IProperty)physicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddress))), (((object)(source.GetCurrentValue(physicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)physicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(physicalAddressArray))))))), (source.GetCurrentValue(physicalAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToBytesConverterProperty))), (source.GetCurrentValue(physicalAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToStringConverterProperty))), (source.GetCurrentValue(@string) == null ? null : ((ValueComparer)(((IProperty)@string).GetValueComparer())).Snapshot(source.GetCurrentValue(@string))), (((object)(source.GetCurrentValue(stringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)stringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringArray))))))), (source.GetCurrentValue(stringToBoolConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBoolConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBoolConverterProperty))), (source.GetCurrentValue(stringToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBytesConverterProperty))), (source.GetCurrentValue(stringToCharConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToCharConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToCharConverterProperty))), (source.GetCurrentValue(stringToDateOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateOnlyConverterProperty))), (source.GetCurrentValue(stringToDateTimeConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeConverterProperty))), (source.GetCurrentValue(stringToDateTimeOffsetConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeOffsetConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeOffsetConverterProperty))), (source.GetCurrentValue(stringToDecimalNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDecimalNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDecimalNumberConverterProperty)))))); + var liftedArg5 = ((ISnapshot)(new Snapshot, string, string, string>((source.GetCurrentValue(nullableInt8) == null ? null : ((ValueComparer)(((IProperty)nullableInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt8))), (((IEnumerable)(source.GetCurrentValue(nullableInt8Array))) == null ? null : ((sbyte? [])(((ValueComparer>)(((IProperty)nullableInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt8Array))))))), (source.GetCurrentValue(nullablePhysicalAddress) == null ? null : ((ValueComparer)(((IProperty)nullablePhysicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullablePhysicalAddress))), (((object)(source.GetCurrentValue(nullablePhysicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)nullablePhysicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullablePhysicalAddressArray))))))), (source.GetCurrentValue(nullableString) == null ? null : ((ValueComparer)(((IProperty)nullableString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableString))), (((object)(source.GetCurrentValue(nullableStringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)nullableStringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringArray))))))), (source.GetCurrentValue(nullableTimeOnly) == null ? null : ((ValueComparer)(((IProperty)nullableTimeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeOnly))), (((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))) == null ? null : ((TimeOnly? [])(((ValueComparer>)(((IProperty)nullableTimeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))))))), (source.GetCurrentValue(nullableTimeSpan) == null ? null : ((ValueComparer)(((IProperty)nullableTimeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeSpan))), (((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))) == null ? null : ((TimeSpan? [])(((ValueComparer>)(((IProperty)nullableTimeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))))))), (source.GetCurrentValue(nullableUInt16) == null ? null : ((ValueComparer)(((IProperty)nullableUInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt16))), (((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))) == null ? null : ((ushort? [])(((ValueComparer>)(((IProperty)nullableUInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))))))), (source.GetCurrentValue(nullableUInt32) == null ? null : ((ValueComparer)(((IProperty)nullableUInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt32))), (((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))) == null ? null : ((uint? [])(((ValueComparer>)(((IProperty)nullableUInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))))))), (source.GetCurrentValue(nullableUInt64) == null ? null : ((ValueComparer)(((IProperty)nullableUInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt64))), (((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))) == null ? null : ((ulong? [])(((ValueComparer>)(((IProperty)nullableUInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))))))), (source.GetCurrentValue(nullableUInt8) == null ? null : ((ValueComparer)(((IProperty)nullableUInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt8))), (((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))) == null ? null : ((byte? [])(((ValueComparer>)(((IProperty)nullableUInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))))))), (source.GetCurrentValue(nullableUri) == null ? null : ((ValueComparer)(((IProperty)nullableUri).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUri))), (((object)(source.GetCurrentValue(nullableUriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)nullableUriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableUriArray))))))), (source.GetCurrentValue(physicalAddress) == null ? null : ((ValueComparer)(((IProperty)physicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddress))), (((object)(source.GetCurrentValue(physicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)physicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(physicalAddressArray))))))), (source.GetCurrentValue(physicalAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToBytesConverterProperty))), (source.GetCurrentValue(physicalAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToStringConverterProperty))), (source.GetCurrentValue(@string) == null ? null : ((ValueComparer)(((IProperty)@string).GetValueComparer())).Snapshot(source.GetCurrentValue(@string))), (((object)(source.GetCurrentValue(stringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)stringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringArray))))))), (((object)(source.GetCurrentValue>(stringReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer)(((IProperty)stringReadOnlyCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(stringReadOnlyCollection))))))), (source.GetCurrentValue(stringToBoolConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBoolConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBoolConverterProperty))), (source.GetCurrentValue(stringToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBytesConverterProperty))), (source.GetCurrentValue(stringToCharConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToCharConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToCharConverterProperty)))))); var entity6 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - return ((ISnapshot)(new MultiSnapshot(new ISnapshot[] { liftedArg, liftedArg0, liftedArg1, liftedArg2, liftedArg3, liftedArg4, liftedArg5, ((ISnapshot)(new Snapshot((source.GetCurrentValue(stringToDoubleNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDoubleNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDoubleNumberConverterProperty))), (source.GetCurrentValue(stringToEnumConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToEnumConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToEnumConverterProperty))), (source.GetCurrentValue(stringToGuidConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToGuidConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToGuidConverterProperty))), (source.GetCurrentValue(stringToIntNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToIntNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToIntNumberConverterProperty))), (source.GetCurrentValue(stringToTimeOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeOnlyConverterProperty))), (source.GetCurrentValue(stringToTimeSpanConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeSpanConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeSpanConverterProperty))), (source.GetCurrentValue(stringToUriConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToUriConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToUriConverterProperty))), ((ValueComparer)(((IProperty)timeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnly)), (((IEnumerable)(source.GetCurrentValue(timeOnlyArray))) == null ? null : ((TimeOnly[])(((ValueComparer>)(((IProperty)timeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeOnlyArray))))))), ((ValueComparer)(((IProperty)timeOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)timeOnlyToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToTicksConverterProperty)), ((ValueComparer)(((IProperty)timeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpan)), (((IEnumerable)(source.GetCurrentValue(timeSpanArray))) == null ? null : ((TimeSpan[])(((ValueComparer>)(((IProperty)timeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeSpanArray))))))), ((ValueComparer)(((IProperty)timeSpanToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToStringConverterProperty)), ((ValueComparer)(((IProperty)timeSpanToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToTicksConverterProperty)), ((ValueComparer)(((IProperty)uInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt16)), (((IEnumerable)(source.GetCurrentValue(uInt16Array))) == null ? null : ((ushort[])(((ValueComparer>)(((IProperty)uInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt16Array))))))), ((ValueComparer)(((IProperty)uInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt32)), (((IEnumerable)(source.GetCurrentValue(uInt32Array))) == null ? null : ((uint[])(((ValueComparer>)(((IProperty)uInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt32Array))))))), ((ValueComparer)(((IProperty)uInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt64)), (((IEnumerable)(source.GetCurrentValue(uInt64Array))) == null ? null : ((ulong[])(((ValueComparer>)(((IProperty)uInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt64Array))))))), ((ValueComparer)(((IProperty)uInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8)), (source.GetCurrentValue(uInt8Array) == null ? null : ((ValueComparer)(((IProperty)uInt8Array).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8Array))), (source.GetCurrentValue(uri) == null ? null : ((ValueComparer)(((IProperty)uri).GetValueComparer())).Snapshot(source.GetCurrentValue(uri))), (((object)(source.GetCurrentValue(uriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)uriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(uriArray))))))), (source.GetCurrentValue(uriToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)uriToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(uriToStringConverterProperty)))))) }))); + var liftedArg6 = ((ISnapshot)(new Snapshot, Uri, Uri[]>((source.GetCurrentValue(stringToDateOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateOnlyConverterProperty))), (source.GetCurrentValue(stringToDateTimeConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeConverterProperty))), (source.GetCurrentValue(stringToDateTimeOffsetConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeOffsetConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeOffsetConverterProperty))), (source.GetCurrentValue(stringToDecimalNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDecimalNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDecimalNumberConverterProperty))), (source.GetCurrentValue(stringToDoubleNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDoubleNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDoubleNumberConverterProperty))), (source.GetCurrentValue(stringToEnumConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToEnumConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToEnumConverterProperty))), (source.GetCurrentValue(stringToGuidConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToGuidConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToGuidConverterProperty))), (source.GetCurrentValue(stringToIntNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToIntNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToIntNumberConverterProperty))), (source.GetCurrentValue(stringToTimeOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeOnlyConverterProperty))), (source.GetCurrentValue(stringToTimeSpanConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeSpanConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeSpanConverterProperty))), (source.GetCurrentValue(stringToUriConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToUriConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToUriConverterProperty))), ((ValueComparer)(((IProperty)timeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnly)), (((IEnumerable)(source.GetCurrentValue(timeOnlyArray))) == null ? null : ((TimeOnly[])(((ValueComparer>)(((IProperty)timeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeOnlyArray))))))), ((ValueComparer)(((IProperty)timeOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)timeOnlyToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToTicksConverterProperty)), ((ValueComparer)(((IProperty)timeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpan)), (((IEnumerable)(source.GetCurrentValue(timeSpanArray))) == null ? null : ((TimeSpan[])(((ValueComparer>)(((IProperty)timeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeSpanArray))))))), ((ValueComparer)(((IProperty)timeSpanToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToStringConverterProperty)), ((ValueComparer)(((IProperty)timeSpanToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToTicksConverterProperty)), ((ValueComparer)(((IProperty)uInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt16)), (((IEnumerable)(source.GetCurrentValue(uInt16Array))) == null ? null : ((ushort[])(((ValueComparer>)(((IProperty)uInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt16Array))))))), ((ValueComparer)(((IProperty)uInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt32)), (((IEnumerable)(source.GetCurrentValue(uInt32Array))) == null ? null : ((uint[])(((ValueComparer>)(((IProperty)uInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt32Array))))))), ((ValueComparer)(((IProperty)uInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt64)), (((IEnumerable)(source.GetCurrentValue(uInt64Array))) == null ? null : ((ulong[])(((ValueComparer>)(((IProperty)uInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt64Array))))))), ((ValueComparer)(((IProperty)uInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8)), (source.GetCurrentValue(uInt8Array) == null ? null : ((ValueComparer)(((IProperty)uInt8Array).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8Array))), (((IEnumerable)(source.GetCurrentValue>(uInt8ReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)uInt8ReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(uInt8ReadOnlyCollection))))))), (source.GetCurrentValue(uri) == null ? null : ((ValueComparer)(((IProperty)uri).GetValueComparer())).Snapshot(source.GetCurrentValue(uri))), (((object)(source.GetCurrentValue(uriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)uriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(uriArray)))))))))); + var entity7 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); + return ((ISnapshot)(new MultiSnapshot(new ISnapshot[] { liftedArg, liftedArg0, liftedArg1, liftedArg2, liftedArg3, liftedArg4, liftedArg5, liftedArg6, ((ISnapshot)(new Snapshot((source.GetCurrentValue(uriToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)uriToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(uriToStringConverterProperty)))))) }))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( ISnapshot () => ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(default(CompiledModelTestBase.ManyTypesId)))))); @@ -15086,14 +15434,14 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); + var entity8 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))))); }); runtimeEntityType.Counts = new PropertyCounts( - propertyCount: 236, + propertyCount: 241, navigationCount: 0, complexPropertyCount: 0, - originalValueCount: 236, + originalValueCount: 241, shadowCount: 0, relationshipCount: 1, storeGeneratedCount: 1); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesUnsafeAccessors.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesUnsafeAccessors.cs index 8212477912e..48de8dc1ceb 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesUnsafeAccessors.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesUnsafeAccessors.cs @@ -22,6 +22,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref bool[] BoolArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_boolReadOnlyCollection")] + public static extern ref List _boolReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref bool BoolToStringConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -283,6 +286,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref IPAddress[] IPAddressArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_ipAddressReadOnlyCollection")] + public static extern ref List _ipAddressReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref IPAddress IPAddressToBytesConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -301,6 +307,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref int[] Int32Array(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_int32ReadOnlyCollection")] + public static extern ref List _int32ReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref long Int64(CompiledModelTestBase.ManyTypes @this); @@ -622,6 +631,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref string[] StringArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_stringReadOnlyCollection")] + public static extern ref List _stringReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref string StringToBoolConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -712,6 +724,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref byte[] UInt8Array(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_uInt8ReadOnlyCollection")] + public static extern ref List _uInt8ReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref Uri Uri(CompiledModelTestBase.ManyTypes @this); diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs index e3769f85a94..96d5589d28c 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs @@ -875,7 +875,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>(((ValueComparer)(((IProperty)principalDerivedId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedId)), ((ValueComparer)(((IProperty)principalDerivedAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedAlternateId)), ((ValueComparer)(((IProperty)__synthesizedOrdinal).GetValueComparer())).Snapshot(source.GetCurrentValue(__synthesizedOrdinal)), (source.GetCurrentValue(details) == null ? null : ((ValueComparer)(((IProperty)details).GetValueComparer())).Snapshot(source.GetCurrentValue(details))), ((ValueComparer)(((IProperty)number).GetValueComparer())).Snapshot(source.GetCurrentValue(number)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -889,7 +889,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalDerivedId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedId)), ((ValueComparer)(((IProperty)principalDerivedAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedAlternateId)), ((ValueComparer)(((IProperty)__synthesizedOrdinal).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(__synthesizedOrdinal))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs index 7d8c447f6c0..e217a59aa8c 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs @@ -851,7 +851,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>(((ValueComparer)(((IProperty)principalBaseId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalBaseId)), ((ValueComparer)(((IProperty)principalBaseAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalBaseAlternateId)), (source.GetCurrentValue(details) == null ? null : ((ValueComparer)(((IProperty)details).GetValueComparer())).Snapshot(source.GetCurrentValue(details))), ((ValueComparer)(((IProperty)number).GetValueComparer())).Snapshot(source.GetCurrentValue(number)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -865,7 +865,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalBaseId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalBaseId)), ((ValueComparer)(((IProperty)principalBaseAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalBaseAlternateId))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs index 670fa352a16..c1485c9b153 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs @@ -1029,7 +1029,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); + var entity8 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), (source.GetCurrentValue(discriminator) == null ? null : ((ValueComparer)(((IProperty)discriminator).GetValueComparer())).Snapshot(source.GetCurrentValue(discriminator))), ((ValueComparer)(((IProperty)enum1).GetValueComparer())).Snapshot(source.GetCurrentValue(enum1)), (source.GetCurrentValue(enum2) == null ? null : ((ValueComparer)(((IProperty)enum2).GetValueComparer())).Snapshot(source.GetCurrentValue(enum2))), ((ValueComparer)(((IProperty)flagsEnum1).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum1)), ((ValueComparer)(((IProperty)flagsEnum2).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum2)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -1043,8 +1043,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); - return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity7), (object)(null)))); + var entity8 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); + return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity8), (object)(null)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 15, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index 762b316cf9a..76042ca6e3b 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -397,7 +397,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((Dictionary)(source.Entity)); + var entity8 = ((Dictionary)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)derivedsId).GetValueComparer())).Snapshot(source.GetCurrentValue(derivedsId)), ((ValueComparer)(((IProperty)derivedsAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(derivedsAlternateId)), ((ValueComparer)(((IProperty)principalsId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalsId)), ((ValueComparer)(((IProperty)principalsAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalsAlternateId)), (source.GetCurrentValue(rowid) == null ? null : ((ValueComparer)(((IProperty)rowid).GetValueComparer())).Snapshot(source.GetCurrentValue(rowid)))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -411,7 +411,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((Dictionary)(source.Entity)); + var entity8 = ((Dictionary)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)derivedsId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(derivedsId)), ((ValueComparer)(((IProperty)derivedsAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(derivedsAlternateId)), ((ValueComparer)(((IProperty)principalsId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalsId)), ((ValueComparer)(((IProperty)principalsAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalsAlternateId))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalDerivedEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalDerivedEntityType.cs index c163ccd8002..840cac85e29 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalDerivedEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalDerivedEntityType.cs @@ -108,7 +108,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); + var entity8 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), (source.GetCurrentValue(discriminator) == null ? null : ((ValueComparer)(((IProperty)discriminator).GetValueComparer())).Snapshot(source.GetCurrentValue(discriminator))), ((ValueComparer)(((IProperty)enum1).GetValueComparer())).Snapshot(source.GetCurrentValue(enum1)), (source.GetCurrentValue(enum2) == null ? null : ((ValueComparer)(((IProperty)enum2).GetValueComparer())).Snapshot(source.GetCurrentValue(enum2))), ((ValueComparer)(((IProperty)flagsEnum1).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum1)), ((ValueComparer)(((IProperty)flagsEnum2).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum2)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -122,8 +122,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); - return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity7), (object)(null), PrincipalDerivedUnsafeAccessors>.Dependent(entity7), SnapshotFactoryFactory.SnapshotCollection(PrincipalDerivedUnsafeAccessors>.ManyOwned(entity7)), (object)(null)))); + var entity8 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); + return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity8), (object)(null), PrincipalDerivedUnsafeAccessors>.Dependent(entity8), SnapshotFactoryFactory.SnapshotCollection(PrincipalDerivedUnsafeAccessors>.ManyOwned(entity8)), (object)(null)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 15, diff --git a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs index 037fc1fd1e4..37cadf024c3 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs @@ -28,7 +28,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes", typeof(CompiledModelTestBase.ManyTypes), baseEntityType, - propertyCount: 236, + propertyCount: 241, keyCount: 1); var id = runtimeEntityType.AddProperty( @@ -57,6 +57,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); boolArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var boolReadOnlyCollection = runtimeEntityType.AddProperty( + "BoolReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_boolReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + boolReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var boolToStringConverterProperty = runtimeEntityType.AddProperty( "BoolToStringConverterProperty", typeof(bool), @@ -766,6 +773,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); iPAddressArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var iPAddressReadOnlyCollection = runtimeEntityType.AddProperty( + "IPAddressReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("IPAddressReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_ipAddressReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + iPAddressReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var iPAddressToBytesConverterProperty = runtimeEntityType.AddProperty( "IPAddressToBytesConverterProperty", typeof(IPAddress), @@ -812,6 +826,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); int32Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var int32ReadOnlyCollection = runtimeEntityType.AddProperty( + "Int32ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_int32ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + int32ReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var int64 = runtimeEntityType.AddProperty( "Int64", typeof(long), @@ -1610,6 +1631,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); stringArray.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var stringReadOnlyCollection = runtimeEntityType.AddProperty( + "StringReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_stringReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + stringReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var stringToBoolConverterProperty = runtimeEntityType.AddProperty( "StringToBoolConverterProperty", typeof(string), @@ -1850,6 +1878,13 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); uInt8Array.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( + "UInt8ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_uInt8ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + uInt8ReadOnlyCollection.AddAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.None); + var uri = runtimeEntityType.AddProperty( "Uri", typeof(Uri), diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs index 470003d36e4..cb2f945ab8b 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DbContextModelBuilder.cs @@ -255,6 +255,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Bool", boolColumnBase); var boolArrayColumnBase = new ColumnBase("BoolArray", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolArray", boolArrayColumnBase); + var boolReadOnlyCollectionColumnBase = new ColumnBase("BoolReadOnlyCollection", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolReadOnlyCollection", boolReadOnlyCollectionColumnBase); var boolToStringConverterPropertyColumnBase = new ColumnBase("BoolToStringConverterProperty", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolToStringConverterProperty", boolToStringConverterPropertyColumnBase); var boolToTwoValuesConverterPropertyColumnBase = new ColumnBase("BoolToTwoValuesConverterProperty", "INTEGER", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -429,6 +431,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddress", iPAddressColumnBase); var iPAddressArrayColumnBase = new ColumnBase("IPAddressArray", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressArray", iPAddressArrayColumnBase); + var iPAddressReadOnlyCollectionColumnBase = new ColumnBase("IPAddressReadOnlyCollection", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressReadOnlyCollection", iPAddressReadOnlyCollectionColumnBase); var iPAddressToBytesConverterPropertyColumnBase = new ColumnBase("IPAddressToBytesConverterProperty", "BLOB", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressToBytesConverterProperty", iPAddressToBytesConverterPropertyColumnBase); var iPAddressToStringConverterPropertyColumnBase = new ColumnBase("IPAddressToStringConverterProperty", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -443,6 +447,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32", int32ColumnBase); var int32ArrayColumnBase = new ColumnBase("Int32Array", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32Array", int32ArrayColumnBase); + var int32ReadOnlyCollectionColumnBase = new ColumnBase("Int32ReadOnlyCollection", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32ReadOnlyCollection", int32ReadOnlyCollectionColumnBase); var int64ColumnBase = new ColumnBase("Int64", "INTEGER", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int64", int64ColumnBase); var int64ArrayColumnBase = new ColumnBase("Int64Array", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -777,6 +783,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("String", stringColumnBase); var stringArrayColumnBase = new ColumnBase("StringArray", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringArray", stringArrayColumnBase); + var stringReadOnlyCollectionColumnBase = new ColumnBase("StringReadOnlyCollection", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringReadOnlyCollection", stringReadOnlyCollectionColumnBase); var stringToBoolConverterPropertyColumnBase = new ColumnBase("StringToBoolConverterProperty", "INTEGER", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringToBoolConverterProperty", stringToBoolConverterPropertyColumnBase); var stringToBytesConverterPropertyColumnBase = new ColumnBase("StringToBytesConverterProperty", "BLOB", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase) @@ -840,6 +848,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8", uInt8ColumnBase); var uInt8ArrayColumnBase = new ColumnBase("UInt8Array", "BLOB", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8Array", uInt8ArrayColumnBase); + var uInt8ReadOnlyCollectionColumnBase = new ColumnBase("UInt8ReadOnlyCollection", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8ReadOnlyCollection", uInt8ReadOnlyCollectionColumnBase); var uriColumnBase = new ColumnBase("Uri", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Uri", uriColumnBase); var uriArrayColumnBase = new ColumnBase("UriArray", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -853,6 +863,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)idColumnBase1, manyTypes.FindProperty("Id")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolColumnBase, manyTypes.FindProperty("Bool")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolArrayColumnBase, manyTypes.FindProperty("BoolArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)boolReadOnlyCollectionColumnBase, manyTypes.FindProperty("BoolReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToStringConverterPropertyColumnBase, manyTypes.FindProperty("BoolToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToTwoValuesConverterPropertyColumnBase, manyTypes.FindProperty("BoolToTwoValuesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToZeroOneConverterPropertyColumnBase, manyTypes.FindProperty("BoolToZeroOneConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -940,12 +951,14 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)guidToStringConverterPropertyColumnBase, manyTypes.FindProperty("GuidToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressColumnBase, manyTypes.FindProperty("IPAddress")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressArrayColumnBase, manyTypes.FindProperty("IPAddressArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)iPAddressReadOnlyCollectionColumnBase, manyTypes.FindProperty("IPAddressReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressToBytesConverterPropertyColumnBase, manyTypes.FindProperty("IPAddressToBytesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressToStringConverterPropertyColumnBase, manyTypes.FindProperty("IPAddressToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int16ColumnBase, manyTypes.FindProperty("Int16")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int16ArrayColumnBase, manyTypes.FindProperty("Int16Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int32ColumnBase, manyTypes.FindProperty("Int32")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int32ArrayColumnBase, manyTypes.FindProperty("Int32Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)int32ReadOnlyCollectionColumnBase, manyTypes.FindProperty("Int32ReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int64ColumnBase, manyTypes.FindProperty("Int64")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int64ArrayColumnBase, manyTypes.FindProperty("Int64Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int8ColumnBase, manyTypes.FindProperty("Int8")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -1053,6 +1066,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)physicalAddressToStringConverterPropertyColumnBase, manyTypes.FindProperty("PhysicalAddressToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringColumnBase, manyTypes.FindProperty("String")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringArrayColumnBase, manyTypes.FindProperty("StringArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)stringReadOnlyCollectionColumnBase, manyTypes.FindProperty("StringReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToBoolConverterPropertyColumnBase, manyTypes.FindProperty("StringToBoolConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToBytesConverterPropertyColumnBase, manyTypes.FindProperty("StringToBytesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToCharConverterPropertyColumnBase, manyTypes.FindProperty("StringToCharConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -1083,6 +1097,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)uInt64ArrayColumnBase, manyTypes.FindProperty("UInt64Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uInt8ColumnBase, manyTypes.FindProperty("UInt8")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uInt8ArrayColumnBase, manyTypes.FindProperty("UInt8Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)uInt8ReadOnlyCollectionColumnBase, manyTypes.FindProperty("UInt8ReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriColumnBase, manyTypes.FindProperty("Uri")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriArrayColumnBase, manyTypes.FindProperty("UriArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriToStringConverterPropertyColumnBase, manyTypes.FindProperty("UriToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -1099,6 +1114,9 @@ private IRelationalModel CreateRelationalModel() var boolArrayColumn = new Column("BoolArray", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("BoolArray", boolArrayColumn); boolArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolArrayColumn); + var boolReadOnlyCollectionColumn = new Column("BoolReadOnlyCollection", "TEXT", manyTypesTable); + manyTypesTable.Columns.Add("BoolReadOnlyCollection", boolReadOnlyCollectionColumn); + boolReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolReadOnlyCollectionColumn); var boolToStringConverterPropertyColumn = new Column("BoolToStringConverterProperty", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("BoolToStringConverterProperty", boolToStringConverterPropertyColumn); boolToStringConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolToStringConverterPropertyColumn); @@ -1360,6 +1378,9 @@ private IRelationalModel CreateRelationalModel() var iPAddressArrayColumn = new Column("IPAddressArray", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("IPAddressArray", iPAddressArrayColumn); iPAddressArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressArrayColumn); + var iPAddressReadOnlyCollectionColumn = new Column("IPAddressReadOnlyCollection", "TEXT", manyTypesTable); + manyTypesTable.Columns.Add("IPAddressReadOnlyCollection", iPAddressReadOnlyCollectionColumn); + iPAddressReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressReadOnlyCollectionColumn); var iPAddressToBytesConverterPropertyColumn = new Column("IPAddressToBytesConverterProperty", "BLOB", manyTypesTable); manyTypesTable.Columns.Add("IPAddressToBytesConverterProperty", iPAddressToBytesConverterPropertyColumn); iPAddressToBytesConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressToBytesConverterPropertyColumn); @@ -1378,6 +1399,9 @@ private IRelationalModel CreateRelationalModel() var int32ArrayColumn = new Column("Int32Array", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("Int32Array", int32ArrayColumn); int32ArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(int32ArrayColumn); + var int32ReadOnlyCollectionColumn = new Column("Int32ReadOnlyCollection", "TEXT", manyTypesTable); + manyTypesTable.Columns.Add("Int32ReadOnlyCollection", int32ReadOnlyCollectionColumn); + int32ReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(int32ReadOnlyCollectionColumn); var int64Column = new Column("Int64", "INTEGER", manyTypesTable); manyTypesTable.Columns.Add("Int64", int64Column); int64Column.Accessors = ColumnAccessorsFactory.CreateGeneric(int64Column); @@ -1819,6 +1843,9 @@ private IRelationalModel CreateRelationalModel() var stringArrayColumn = new Column("StringArray", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("StringArray", stringArrayColumn); stringArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringArrayColumn); + var stringReadOnlyCollectionColumn = new Column("StringReadOnlyCollection", "TEXT", manyTypesTable); + manyTypesTable.Columns.Add("StringReadOnlyCollection", stringReadOnlyCollectionColumn); + stringReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringReadOnlyCollectionColumn); var stringToBoolConverterPropertyColumn = new Column("StringToBoolConverterProperty", "INTEGER", manyTypesTable); manyTypesTable.Columns.Add("StringToBoolConverterProperty", stringToBoolConverterPropertyColumn); stringToBoolConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringToBoolConverterPropertyColumn); @@ -1912,6 +1939,9 @@ private IRelationalModel CreateRelationalModel() var uInt8ArrayColumn = new Column("UInt8Array", "BLOB", manyTypesTable); manyTypesTable.Columns.Add("UInt8Array", uInt8ArrayColumn); uInt8ArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uInt8ArrayColumn); + var uInt8ReadOnlyCollectionColumn = new Column("UInt8ReadOnlyCollection", "TEXT", manyTypesTable); + manyTypesTable.Columns.Add("UInt8ReadOnlyCollection", uInt8ReadOnlyCollectionColumn); + uInt8ReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uInt8ReadOnlyCollectionColumn); var uriColumn = new Column("Uri", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("Uri", uriColumn); uriColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uriColumn); @@ -1928,6 +1958,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(idColumn1, manyTypes.FindProperty("Id")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolColumn, manyTypes.FindProperty("Bool")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolArrayColumn, manyTypes.FindProperty("BoolArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(boolReadOnlyCollectionColumn, manyTypes.FindProperty("BoolReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToStringConverterPropertyColumn, manyTypes.FindProperty("BoolToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToTwoValuesConverterPropertyColumn, manyTypes.FindProperty("BoolToTwoValuesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToZeroOneConverterPropertyColumn, manyTypes.FindProperty("BoolToZeroOneConverterProperty")!, manyTypesTableMapping); @@ -2015,12 +2046,14 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(guidToStringConverterPropertyColumn, manyTypes.FindProperty("GuidToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressColumn, manyTypes.FindProperty("IPAddress")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressArrayColumn, manyTypes.FindProperty("IPAddressArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(iPAddressReadOnlyCollectionColumn, manyTypes.FindProperty("IPAddressReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressToBytesConverterPropertyColumn, manyTypes.FindProperty("IPAddressToBytesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressToStringConverterPropertyColumn, manyTypes.FindProperty("IPAddressToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int16Column, manyTypes.FindProperty("Int16")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int16ArrayColumn, manyTypes.FindProperty("Int16Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int32Column, manyTypes.FindProperty("Int32")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int32ArrayColumn, manyTypes.FindProperty("Int32Array")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(int32ReadOnlyCollectionColumn, manyTypes.FindProperty("Int32ReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int64Column, manyTypes.FindProperty("Int64")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int64ArrayColumn, manyTypes.FindProperty("Int64Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int8Column, manyTypes.FindProperty("Int8")!, manyTypesTableMapping); @@ -2128,6 +2161,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(physicalAddressToStringConverterPropertyColumn, manyTypes.FindProperty("PhysicalAddressToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringColumn, manyTypes.FindProperty("String")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringArrayColumn, manyTypes.FindProperty("StringArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(stringReadOnlyCollectionColumn, manyTypes.FindProperty("StringReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToBoolConverterPropertyColumn, manyTypes.FindProperty("StringToBoolConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToBytesConverterPropertyColumn, manyTypes.FindProperty("StringToBytesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToCharConverterPropertyColumn, manyTypes.FindProperty("StringToCharConverterProperty")!, manyTypesTableMapping); @@ -2158,6 +2192,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(uInt64ArrayColumn, manyTypes.FindProperty("UInt64Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uInt8Column, manyTypes.FindProperty("UInt8")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uInt8ArrayColumn, manyTypes.FindProperty("UInt8Array")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(uInt8ReadOnlyCollectionColumn, manyTypes.FindProperty("UInt8ReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriColumn, manyTypes.FindProperty("Uri")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriArrayColumn, manyTypes.FindProperty("UriArray")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriToStringConverterPropertyColumn, manyTypes.FindProperty("UriToStringConverterProperty")!, manyTypesTableMapping); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs index 20abdabdfbd..47a40af869a 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/DependentDerivedEntityType.cs @@ -96,7 +96,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); + var entity8 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), ((ValueComparer)(((IProperty)enumDiscriminator).GetValueComparer())).Snapshot(source.GetCurrentValue(enumDiscriminator)), (source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), (source.GetCurrentValue(data) == null ? null : ((ValueComparer)(((IProperty)data).GetValueComparer())).Snapshot(source.GetCurrentValue(data))), ((ValueComparer)(((IProperty)money).GetValueComparer())).Snapshot(source.GetCurrentValue(money))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -110,8 +110,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); - return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), DependentBaseUnsafeAccessors.Principal(entity7)))); + var entity8 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); + return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), DependentBaseUnsafeAccessors.Principal(entity8)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 6, diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs index af1a40407f3..2fec0bb509e 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesEntityType.cs @@ -35,7 +35,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes", typeof(CompiledModelTestBase.ManyTypes), baseEntityType, - propertyCount: 236, + propertyCount: 241, keyCount: 1); var id = runtimeEntityType.AddProperty( @@ -195,6 +195,65 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); + var boolReadOnlyCollection = runtimeEntityType.AddProperty( + "BoolReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_boolReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + boolReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance) == null); + boolReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) = ((List)(value))); + boolReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) = ((List)(value))); + boolReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(boolReadOnlyCollection, 3), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(boolReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[3]); + boolReadOnlyCollection.SetPropertyIndexes( + index: 3, + originalValueIndex: 3, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + boolReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, bool>(new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v)), + keyComparer: new ListOfValueTypesComparer, bool>(new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, bool>( + JsonBoolReaderWriter.Instance)), + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, bool>( + JsonBoolReaderWriter.Instance), + elementMapping: BoolTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + keyComparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + providerValueComparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "INTEGER"))); + var boolToStringConverterProperty = runtimeEntityType.AddProperty( "BoolToStringConverterProperty", typeof(bool), @@ -212,12 +271,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToStringConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToStringConverterProperty, 3), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToStringConverterProperty, 4), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[3]); + object (ValueBuffer valueBuffer) => valueBuffer[4]); boolToStringConverterProperty.SetPropertyIndexes( - index: 3, - originalValueIndex: 3, + index: 4, + originalValueIndex: 4, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -263,12 +322,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToTwoValuesConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToTwoValuesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToTwoValuesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToTwoValuesConverterProperty, 4), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToTwoValuesConverterProperty, 5), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToTwoValuesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[4]); + object (ValueBuffer valueBuffer) => valueBuffer[5]); boolToTwoValuesConverterProperty.SetPropertyIndexes( - index: 4, - originalValueIndex: 4, + index: 5, + originalValueIndex: 5, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -315,12 +374,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToZeroOneConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToZeroOneConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToZeroOneConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToZeroOneConverterProperty, 5), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToZeroOneConverterProperty, 6), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToZeroOneConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[5]); + object (ValueBuffer valueBuffer) => valueBuffer[6]); boolToZeroOneConverterProperty.SetPropertyIndexes( - index: 5, - originalValueIndex: 5, + index: 6, + originalValueIndex: 6, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -366,12 +425,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytes.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Bytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Bytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytes, 6), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytes, 7), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(bytes), - object (ValueBuffer valueBuffer) => valueBuffer[6]); + object (ValueBuffer valueBuffer) => valueBuffer[7]); bytes.SetPropertyIndexes( - index: 6, - originalValueIndex: 6, + index: 7, + originalValueIndex: 7, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -406,12 +465,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytesArray.SetAccessors( byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesArray, 7), + byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesArray, 8), byte[][] (InternalEntityEntry entry) => entry.GetCurrentValue(bytesArray), - object (ValueBuffer valueBuffer) => valueBuffer[7]); + object (ValueBuffer valueBuffer) => valueBuffer[8]); bytesArray.SetPropertyIndexes( - index: 7, - originalValueIndex: 7, + index: 8, + originalValueIndex: 8, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -465,12 +524,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytesToStringConverterProperty.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesToStringConverterProperty, 8), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesToStringConverterProperty, 9), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(bytesToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[8]); + object (ValueBuffer valueBuffer) => valueBuffer[9]); bytesToStringConverterProperty.SetPropertyIndexes( - index: 8, - originalValueIndex: 8, + index: 9, + originalValueIndex: 9, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -514,12 +573,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas castingConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CastingConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CastingConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(castingConverterProperty, 9), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(castingConverterProperty, 10), int (InternalEntityEntry entry) => entry.GetCurrentValue(castingConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[9]); + object (ValueBuffer valueBuffer) => valueBuffer[10]); castingConverterProperty.SetPropertyIndexes( - index: 9, - originalValueIndex: 9, + index: 10, + originalValueIndex: 10, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -564,12 +623,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @char.SetAccessors( char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Char(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Char(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char (InternalEntityEntry entry) => entry.ReadOriginalValue(@char, 10), + char (InternalEntityEntry entry) => entry.ReadOriginalValue(@char, 11), char (InternalEntityEntry entry) => entry.GetCurrentValue(@char), - object (ValueBuffer valueBuffer) => valueBuffer[10]); + object (ValueBuffer valueBuffer) => valueBuffer[11]); @char.SetPropertyIndexes( - index: 10, - originalValueIndex: 10, + index: 11, + originalValueIndex: 11, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -606,12 +665,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas charArray.SetAccessors( char[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char[] (InternalEntityEntry entry) => entry.ReadOriginalValue(charArray, 11), + char[] (InternalEntityEntry entry) => entry.ReadOriginalValue(charArray, 12), char[] (InternalEntityEntry entry) => entry.GetCurrentValue(charArray), - object (ValueBuffer valueBuffer) => valueBuffer[11]); + object (ValueBuffer valueBuffer) => valueBuffer[12]); charArray.SetPropertyIndexes( - index: 11, - originalValueIndex: 11, + index: 12, + originalValueIndex: 12, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -666,12 +725,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas charToStringConverterProperty.SetAccessors( char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char (InternalEntityEntry entry) => entry.ReadOriginalValue(charToStringConverterProperty, 12), + char (InternalEntityEntry entry) => entry.ReadOriginalValue(charToStringConverterProperty, 13), char (InternalEntityEntry entry) => entry.GetCurrentValue(charToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[12]); + object (ValueBuffer valueBuffer) => valueBuffer[13]); charToStringConverterProperty.SetPropertyIndexes( - index: 12, - originalValueIndex: 12, + index: 13, + originalValueIndex: 13, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -718,12 +777,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnly.SetAccessors( DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnly, 13), + DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnly, 14), DateOnly (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnly), - object (ValueBuffer valueBuffer) => valueBuffer[13]); + object (ValueBuffer valueBuffer) => valueBuffer[14]); dateOnly.SetPropertyIndexes( - index: 13, - originalValueIndex: 13, + index: 14, + originalValueIndex: 14, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -746,12 +805,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnlyArray.SetAccessors( DateOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyArray, 14), + DateOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyArray, 15), DateOnly[] (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[14]); + object (ValueBuffer valueBuffer) => valueBuffer[15]); dateOnlyArray.SetPropertyIndexes( - index: 14, - originalValueIndex: 14, + index: 15, + originalValueIndex: 15, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -792,12 +851,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnlyToStringConverterProperty.SetAccessors( DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyToStringConverterProperty, 15), + DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyToStringConverterProperty, 16), DateOnly (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnlyToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[15]); + object (ValueBuffer valueBuffer) => valueBuffer[16]); dateOnlyToStringConverterProperty.SetPropertyIndexes( - index: 15, - originalValueIndex: 15, + index: 16, + originalValueIndex: 16, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -844,12 +903,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTime.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTime, 16), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTime, 17), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTime), - object (ValueBuffer valueBuffer) => valueBuffer[16]); + object (ValueBuffer valueBuffer) => valueBuffer[17]); dateTime.SetPropertyIndexes( - index: 16, - originalValueIndex: 16, + index: 17, + originalValueIndex: 17, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -872,12 +931,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeArray.SetAccessors( DateTime[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeArray, 17), + DateTime[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeArray, 18), DateTime[] (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeArray), - object (ValueBuffer valueBuffer) => valueBuffer[17]); + object (ValueBuffer valueBuffer) => valueBuffer[18]); dateTimeArray.SetPropertyIndexes( - index: 17, - originalValueIndex: 17, + index: 18, + originalValueIndex: 18, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -918,12 +977,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToBinaryConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBinaryConverterProperty, 18), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBinaryConverterProperty, 19), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[18]); + object (ValueBuffer valueBuffer) => valueBuffer[19]); dateTimeOffsetToBinaryConverterProperty.SetPropertyIndexes( - index: 18, - originalValueIndex: 18, + index: 19, + originalValueIndex: 19, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -970,12 +1029,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToBytesConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBytesConverterProperty, 19), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBytesConverterProperty, 20), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[19]); + object (ValueBuffer valueBuffer) => valueBuffer[20]); dateTimeOffsetToBytesConverterProperty.SetPropertyIndexes( - index: 19, - originalValueIndex: 19, + index: 20, + originalValueIndex: 20, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1022,12 +1081,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToStringConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToStringConverterProperty, 20), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToStringConverterProperty, 21), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[20]); + object (ValueBuffer valueBuffer) => valueBuffer[21]); dateTimeOffsetToStringConverterProperty.SetPropertyIndexes( - index: 20, - originalValueIndex: 20, + index: 21, + originalValueIndex: 21, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1074,12 +1133,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToBinaryConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToBinaryConverterProperty, 21), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToBinaryConverterProperty, 22), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToBinaryConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[21]); + object (ValueBuffer valueBuffer) => valueBuffer[22]); dateTimeToBinaryConverterProperty.SetPropertyIndexes( - index: 21, - originalValueIndex: 21, + index: 22, + originalValueIndex: 22, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1126,12 +1185,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToStringConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToStringConverterProperty, 22), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToStringConverterProperty, 23), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[22]); + object (ValueBuffer valueBuffer) => valueBuffer[23]); dateTimeToStringConverterProperty.SetPropertyIndexes( - index: 22, - originalValueIndex: 22, + index: 23, + originalValueIndex: 23, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1178,12 +1237,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToTicksConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToTicksConverterProperty, 23), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToTicksConverterProperty, 24), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[23]); + object (ValueBuffer valueBuffer) => valueBuffer[24]); dateTimeToTicksConverterProperty.SetPropertyIndexes( - index: 23, - originalValueIndex: 23, + index: 24, + originalValueIndex: 24, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1207,12 +1266,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @decimal.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Decimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Decimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(@decimal, 24), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(@decimal, 25), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(@decimal), - object (ValueBuffer valueBuffer) => valueBuffer[24]); + object (ValueBuffer valueBuffer) => valueBuffer[25]); @decimal.SetPropertyIndexes( - index: 24, - originalValueIndex: 24, + index: 25, + originalValueIndex: 25, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1235,12 +1294,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalArray.SetAccessors( decimal[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal[] (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalArray, 25), + decimal[] (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalArray, 26), decimal[] (InternalEntityEntry entry) => entry.GetCurrentValue(decimalArray), - object (ValueBuffer valueBuffer) => valueBuffer[25]); + object (ValueBuffer valueBuffer) => valueBuffer[26]); decimalArray.SetPropertyIndexes( - index: 25, - originalValueIndex: 25, + index: 26, + originalValueIndex: 26, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1281,12 +1340,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalNumberToBytesConverterProperty.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToBytesConverterProperty, 26), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToBytesConverterProperty, 27), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(decimalNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[26]); + object (ValueBuffer valueBuffer) => valueBuffer[27]); decimalNumberToBytesConverterProperty.SetPropertyIndexes( - index: 26, - originalValueIndex: 26, + index: 27, + originalValueIndex: 27, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1333,12 +1392,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalNumberToStringConverterProperty.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToStringConverterProperty, 27), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToStringConverterProperty, 28), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(decimalNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[27]); + object (ValueBuffer valueBuffer) => valueBuffer[28]); decimalNumberToStringConverterProperty.SetPropertyIndexes( - index: 27, - originalValueIndex: 27, + index: 28, + originalValueIndex: 28, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1385,12 +1444,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @double.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Double(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Double(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(@double, 28), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(@double, 29), double (InternalEntityEntry entry) => entry.GetCurrentValue(@double), - object (ValueBuffer valueBuffer) => valueBuffer[28]); + object (ValueBuffer valueBuffer) => valueBuffer[29]); @double.SetPropertyIndexes( - index: 28, - originalValueIndex: 28, + index: 29, + originalValueIndex: 29, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1427,12 +1486,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleArray.SetAccessors( double[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double[] (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleArray, 29), + double[] (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleArray, 30), double[] (InternalEntityEntry entry) => entry.GetCurrentValue(doubleArray), - object (ValueBuffer valueBuffer) => valueBuffer[29]); + object (ValueBuffer valueBuffer) => valueBuffer[30]); doubleArray.SetPropertyIndexes( - index: 29, - originalValueIndex: 29, + index: 30, + originalValueIndex: 30, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1487,12 +1546,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleNumberToBytesConverterProperty.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToBytesConverterProperty, 30), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToBytesConverterProperty, 31), double (InternalEntityEntry entry) => entry.GetCurrentValue(doubleNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[30]); + object (ValueBuffer valueBuffer) => valueBuffer[31]); doubleNumberToBytesConverterProperty.SetPropertyIndexes( - index: 30, - originalValueIndex: 30, + index: 31, + originalValueIndex: 31, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1539,12 +1598,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleNumberToStringConverterProperty.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToStringConverterProperty, 31), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToStringConverterProperty, 32), double (InternalEntityEntry entry) => entry.GetCurrentValue(doubleNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[31]); + object (ValueBuffer valueBuffer) => valueBuffer[32]); doubleNumberToStringConverterProperty.SetPropertyIndexes( - index: 31, - originalValueIndex: 31, + index: 32, + originalValueIndex: 32, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1590,12 +1649,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16.SetAccessors( CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16, 32), + CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16, 33), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.GetCurrentValue(enum16), - object (ValueBuffer valueBuffer) => valueBuffer[32]); + object (ValueBuffer valueBuffer) => valueBuffer[33]); enum16.SetPropertyIndexes( - index: 32, - originalValueIndex: 32, + index: 33, + originalValueIndex: 33, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1641,12 +1700,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16Array.SetAccessors( CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16Array, 33), + CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16Array, 34), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum16Array), - object (ValueBuffer valueBuffer) => valueBuffer[33]); + object (ValueBuffer valueBuffer) => valueBuffer[34]); enum16Array.SetPropertyIndexes( - index: 33, - originalValueIndex: 33, + index: 34, + originalValueIndex: 34, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1717,12 +1776,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsString.SetAccessors( CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsString, 34), + CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsString, 35), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.GetCurrentValue(enum16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[34]); + object (ValueBuffer valueBuffer) => valueBuffer[35]); enum16AsString.SetPropertyIndexes( - index: 34, - originalValueIndex: 34, + index: 35, + originalValueIndex: 35, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1766,12 +1825,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsStringArray.SetAccessors( CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsStringArray, 35), + CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsStringArray, 36), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[35]); + object (ValueBuffer valueBuffer) => valueBuffer[36]); enum16AsStringArray.SetPropertyIndexes( - index: 35, - originalValueIndex: 35, + index: 36, + originalValueIndex: 36, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1839,12 +1898,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16AsStringCollection, 36), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16AsStringCollection, 37), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[36]); + object (ValueBuffer valueBuffer) => valueBuffer[37]); enum16AsStringCollection.SetPropertyIndexes( - index: 36, - originalValueIndex: 36, + index: 37, + originalValueIndex: 37, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1912,12 +1971,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16Collection, 37), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16Collection, 38), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[37]); + object (ValueBuffer valueBuffer) => valueBuffer[38]); enum16Collection.SetPropertyIndexes( - index: 37, - originalValueIndex: 37, + index: 38, + originalValueIndex: 38, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1987,12 +2046,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32, 38), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32, 39), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enum32), - object (ValueBuffer valueBuffer) => valueBuffer[38]); + object (ValueBuffer valueBuffer) => valueBuffer[39]); enum32.SetPropertyIndexes( - index: 38, - originalValueIndex: 38, + index: 39, + originalValueIndex: 39, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2038,12 +2097,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32Array.SetAccessors( CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32Array, 39), + CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32Array, 40), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum32Array), - object (ValueBuffer valueBuffer) => valueBuffer[39]); + object (ValueBuffer valueBuffer) => valueBuffer[40]); enum32Array.SetPropertyIndexes( - index: 39, - originalValueIndex: 39, + index: 40, + originalValueIndex: 40, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2114,12 +2173,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsString.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsString, 40), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsString, 41), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enum32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[40]); + object (ValueBuffer valueBuffer) => valueBuffer[41]); enum32AsString.SetPropertyIndexes( - index: 40, - originalValueIndex: 40, + index: 41, + originalValueIndex: 41, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2163,12 +2222,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsStringArray.SetAccessors( CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsStringArray, 41), + CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsStringArray, 42), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[41]); + object (ValueBuffer valueBuffer) => valueBuffer[42]); enum32AsStringArray.SetPropertyIndexes( - index: 41, - originalValueIndex: 41, + index: 42, + originalValueIndex: 42, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2236,12 +2295,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32AsStringCollection, 42), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32AsStringCollection, 43), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[42]); + object (ValueBuffer valueBuffer) => valueBuffer[43]); enum32AsStringCollection.SetPropertyIndexes( - index: 42, - originalValueIndex: 42, + index: 43, + originalValueIndex: 43, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2309,12 +2368,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32Collection, 43), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32Collection, 44), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[43]); + object (ValueBuffer valueBuffer) => valueBuffer[44]); enum32Collection.SetPropertyIndexes( - index: 43, - originalValueIndex: 43, + index: 44, + originalValueIndex: 44, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2384,12 +2443,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64.SetAccessors( CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64, 44), + CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64, 45), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.GetCurrentValue(enum64), - object (ValueBuffer valueBuffer) => valueBuffer[44]); + object (ValueBuffer valueBuffer) => valueBuffer[45]); enum64.SetPropertyIndexes( - index: 44, - originalValueIndex: 44, + index: 45, + originalValueIndex: 45, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2435,12 +2494,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64Array.SetAccessors( CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64Array, 45), + CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64Array, 46), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum64Array), - object (ValueBuffer valueBuffer) => valueBuffer[45]); + object (ValueBuffer valueBuffer) => valueBuffer[46]); enum64Array.SetPropertyIndexes( - index: 45, - originalValueIndex: 45, + index: 46, + originalValueIndex: 46, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2511,12 +2570,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsString.SetAccessors( CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsString, 46), + CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsString, 47), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.GetCurrentValue(enum64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[46]); + object (ValueBuffer valueBuffer) => valueBuffer[47]); enum64AsString.SetPropertyIndexes( - index: 46, - originalValueIndex: 46, + index: 47, + originalValueIndex: 47, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2560,12 +2619,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsStringArray.SetAccessors( CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsStringArray, 47), + CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsStringArray, 48), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[47]); + object (ValueBuffer valueBuffer) => valueBuffer[48]); enum64AsStringArray.SetPropertyIndexes( - index: 47, - originalValueIndex: 47, + index: 48, + originalValueIndex: 48, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2633,12 +2692,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64AsStringCollection, 48), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64AsStringCollection, 49), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[48]); + object (ValueBuffer valueBuffer) => valueBuffer[49]); enum64AsStringCollection.SetPropertyIndexes( - index: 48, - originalValueIndex: 48, + index: 49, + originalValueIndex: 49, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2706,12 +2765,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64Collection, 49), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64Collection, 50), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[49]); + object (ValueBuffer valueBuffer) => valueBuffer[50]); enum64Collection.SetPropertyIndexes( - index: 49, - originalValueIndex: 49, + index: 50, + originalValueIndex: 50, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2781,12 +2840,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8.SetAccessors( CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8, 50), + CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8, 51), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.GetCurrentValue(enum8), - object (ValueBuffer valueBuffer) => valueBuffer[50]); + object (ValueBuffer valueBuffer) => valueBuffer[51]); enum8.SetPropertyIndexes( - index: 50, - originalValueIndex: 50, + index: 51, + originalValueIndex: 51, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2832,12 +2891,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8Array.SetAccessors( CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8Array, 51), + CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8Array, 52), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum8Array), - object (ValueBuffer valueBuffer) => valueBuffer[51]); + object (ValueBuffer valueBuffer) => valueBuffer[52]); enum8Array.SetPropertyIndexes( - index: 51, - originalValueIndex: 51, + index: 52, + originalValueIndex: 52, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2908,12 +2967,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsString.SetAccessors( CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsString, 52), + CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsString, 53), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.GetCurrentValue(enum8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[52]); + object (ValueBuffer valueBuffer) => valueBuffer[53]); enum8AsString.SetPropertyIndexes( - index: 52, - originalValueIndex: 52, + index: 53, + originalValueIndex: 53, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2957,12 +3016,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsStringArray.SetAccessors( CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsStringArray, 53), + CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsStringArray, 54), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[53]); + object (ValueBuffer valueBuffer) => valueBuffer[54]); enum8AsStringArray.SetPropertyIndexes( - index: 53, - originalValueIndex: 53, + index: 54, + originalValueIndex: 54, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3030,12 +3089,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8AsStringCollection, 54), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8AsStringCollection, 55), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[54]); + object (ValueBuffer valueBuffer) => valueBuffer[55]); enum8AsStringCollection.SetPropertyIndexes( - index: 54, - originalValueIndex: 54, + index: 55, + originalValueIndex: 55, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3103,12 +3162,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8Collection, 55), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8Collection, 56), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[55]); + object (ValueBuffer valueBuffer) => valueBuffer[56]); enum8Collection.SetPropertyIndexes( - index: 55, - originalValueIndex: 55, + index: 56, + originalValueIndex: 56, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3179,12 +3238,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumToNumberConverterProperty.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToNumberConverterProperty, 56), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToNumberConverterProperty, 57), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumToNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[56]); + object (ValueBuffer valueBuffer) => valueBuffer[57]); enumToNumberConverterProperty.SetPropertyIndexes( - index: 56, - originalValueIndex: 56, + index: 57, + originalValueIndex: 57, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3231,12 +3290,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumToStringConverterProperty.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToStringConverterProperty, 57), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToStringConverterProperty, 58), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[57]); + object (ValueBuffer valueBuffer) => valueBuffer[58]); enumToStringConverterProperty.SetPropertyIndexes( - index: 57, - originalValueIndex: 57, + index: 58, + originalValueIndex: 58, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3280,12 +3339,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16.SetAccessors( CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16, 58), + CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16, 59), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16), - object (ValueBuffer valueBuffer) => valueBuffer[58]); + object (ValueBuffer valueBuffer) => valueBuffer[59]); enumU16.SetPropertyIndexes( - index: 58, - originalValueIndex: 58, + index: 59, + originalValueIndex: 59, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3331,12 +3390,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16Array.SetAccessors( CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16Array, 59), + CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16Array, 60), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16Array), - object (ValueBuffer valueBuffer) => valueBuffer[59]); + object (ValueBuffer valueBuffer) => valueBuffer[60]); enumU16Array.SetPropertyIndexes( - index: 59, - originalValueIndex: 59, + index: 60, + originalValueIndex: 60, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3407,12 +3466,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsString.SetAccessors( CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsString, 60), + CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsString, 61), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[60]); + object (ValueBuffer valueBuffer) => valueBuffer[61]); enumU16AsString.SetPropertyIndexes( - index: 60, - originalValueIndex: 60, + index: 61, + originalValueIndex: 61, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3456,12 +3515,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsStringArray.SetAccessors( CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsStringArray, 61), + CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsStringArray, 62), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[61]); + object (ValueBuffer valueBuffer) => valueBuffer[62]); enumU16AsStringArray.SetPropertyIndexes( - index: 61, - originalValueIndex: 61, + index: 62, + originalValueIndex: 62, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3529,12 +3588,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16AsStringCollection, 62), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16AsStringCollection, 63), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[62]); + object (ValueBuffer valueBuffer) => valueBuffer[63]); enumU16AsStringCollection.SetPropertyIndexes( - index: 62, - originalValueIndex: 62, + index: 63, + originalValueIndex: 63, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3602,12 +3661,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16Collection, 63), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16Collection, 64), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[63]); + object (ValueBuffer valueBuffer) => valueBuffer[64]); enumU16Collection.SetPropertyIndexes( - index: 63, - originalValueIndex: 63, + index: 64, + originalValueIndex: 64, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3677,12 +3736,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32.SetAccessors( CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32, 64), + CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32, 65), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32), - object (ValueBuffer valueBuffer) => valueBuffer[64]); + object (ValueBuffer valueBuffer) => valueBuffer[65]); enumU32.SetPropertyIndexes( - index: 64, - originalValueIndex: 64, + index: 65, + originalValueIndex: 65, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3728,12 +3787,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32Array.SetAccessors( CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32Array, 65), + CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32Array, 66), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32Array), - object (ValueBuffer valueBuffer) => valueBuffer[65]); + object (ValueBuffer valueBuffer) => valueBuffer[66]); enumU32Array.SetPropertyIndexes( - index: 65, - originalValueIndex: 65, + index: 66, + originalValueIndex: 66, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3804,12 +3863,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsString.SetAccessors( CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsString, 66), + CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsString, 67), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[66]); + object (ValueBuffer valueBuffer) => valueBuffer[67]); enumU32AsString.SetPropertyIndexes( - index: 66, - originalValueIndex: 66, + index: 67, + originalValueIndex: 67, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3853,12 +3912,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsStringArray.SetAccessors( CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsStringArray, 67), + CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsStringArray, 68), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[67]); + object (ValueBuffer valueBuffer) => valueBuffer[68]); enumU32AsStringArray.SetPropertyIndexes( - index: 67, - originalValueIndex: 67, + index: 68, + originalValueIndex: 68, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3926,12 +3985,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32AsStringCollection, 68), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32AsStringCollection, 69), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[68]); + object (ValueBuffer valueBuffer) => valueBuffer[69]); enumU32AsStringCollection.SetPropertyIndexes( - index: 68, - originalValueIndex: 68, + index: 69, + originalValueIndex: 69, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3999,12 +4058,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32Collection, 69), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32Collection, 70), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[69]); + object (ValueBuffer valueBuffer) => valueBuffer[70]); enumU32Collection.SetPropertyIndexes( - index: 69, - originalValueIndex: 69, + index: 70, + originalValueIndex: 70, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4074,12 +4133,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64.SetAccessors( CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64, 70), + CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64, 71), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64), - object (ValueBuffer valueBuffer) => valueBuffer[70]); + object (ValueBuffer valueBuffer) => valueBuffer[71]); enumU64.SetPropertyIndexes( - index: 70, - originalValueIndex: 70, + index: 71, + originalValueIndex: 71, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4123,12 +4182,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64Array.SetAccessors( CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64Array, 71), + CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64Array, 72), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64Array), - object (ValueBuffer valueBuffer) => valueBuffer[71]); + object (ValueBuffer valueBuffer) => valueBuffer[72]); enumU64Array.SetPropertyIndexes( - index: 71, - originalValueIndex: 71, + index: 72, + originalValueIndex: 72, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4197,12 +4256,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsString.SetAccessors( CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsString, 72), + CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsString, 73), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[72]); + object (ValueBuffer valueBuffer) => valueBuffer[73]); enumU64AsString.SetPropertyIndexes( - index: 72, - originalValueIndex: 72, + index: 73, + originalValueIndex: 73, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4246,12 +4305,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsStringArray.SetAccessors( CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsStringArray, 73), + CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsStringArray, 74), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[73]); + object (ValueBuffer valueBuffer) => valueBuffer[74]); enumU64AsStringArray.SetPropertyIndexes( - index: 73, - originalValueIndex: 73, + index: 74, + originalValueIndex: 74, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4319,12 +4378,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64AsStringCollection, 74), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64AsStringCollection, 75), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[74]); + object (ValueBuffer valueBuffer) => valueBuffer[75]); enumU64AsStringCollection.SetPropertyIndexes( - index: 74, - originalValueIndex: 74, + index: 75, + originalValueIndex: 75, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4392,12 +4451,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64Collection, 75), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64Collection, 76), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[75]); + object (ValueBuffer valueBuffer) => valueBuffer[76]); enumU64Collection.SetPropertyIndexes( - index: 75, - originalValueIndex: 75, + index: 76, + originalValueIndex: 76, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4465,12 +4524,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8.SetAccessors( CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8, 76), + CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8, 77), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8), - object (ValueBuffer valueBuffer) => valueBuffer[76]); + object (ValueBuffer valueBuffer) => valueBuffer[77]); enumU8.SetPropertyIndexes( - index: 76, - originalValueIndex: 76, + index: 77, + originalValueIndex: 77, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4516,12 +4575,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8Array.SetAccessors( CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8Array, 77), + CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8Array, 78), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8Array), - object (ValueBuffer valueBuffer) => valueBuffer[77]); + object (ValueBuffer valueBuffer) => valueBuffer[78]); enumU8Array.SetPropertyIndexes( - index: 77, - originalValueIndex: 77, + index: 78, + originalValueIndex: 78, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4592,12 +4651,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsString.SetAccessors( CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsString, 78), + CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsString, 79), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[78]); + object (ValueBuffer valueBuffer) => valueBuffer[79]); enumU8AsString.SetPropertyIndexes( - index: 78, - originalValueIndex: 78, + index: 79, + originalValueIndex: 79, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4641,12 +4700,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsStringArray.SetAccessors( CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsStringArray, 79), + CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsStringArray, 80), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[79]); + object (ValueBuffer valueBuffer) => valueBuffer[80]); enumU8AsStringArray.SetPropertyIndexes( - index: 79, - originalValueIndex: 79, + index: 80, + originalValueIndex: 80, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4714,12 +4773,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8AsStringCollection, 80), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8AsStringCollection, 81), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[80]); + object (ValueBuffer valueBuffer) => valueBuffer[81]); enumU8AsStringCollection.SetPropertyIndexes( - index: 80, - originalValueIndex: 80, + index: 81, + originalValueIndex: 81, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4787,12 +4846,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8Collection, 81), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8Collection, 82), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[81]); + object (ValueBuffer valueBuffer) => valueBuffer[82]); enumU8Collection.SetPropertyIndexes( - index: 81, - originalValueIndex: 81, + index: 82, + originalValueIndex: 82, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4863,12 +4922,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @float.SetAccessors( float (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Float(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Float(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float (InternalEntityEntry entry) => entry.ReadOriginalValue(@float, 82), + float (InternalEntityEntry entry) => entry.ReadOriginalValue(@float, 83), float (InternalEntityEntry entry) => entry.GetCurrentValue(@float), - object (ValueBuffer valueBuffer) => valueBuffer[82]); + object (ValueBuffer valueBuffer) => valueBuffer[83]); @float.SetPropertyIndexes( - index: 82, - originalValueIndex: 82, + index: 83, + originalValueIndex: 83, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4905,12 +4964,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas floatArray.SetAccessors( float[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.FloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.FloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float[] (InternalEntityEntry entry) => entry.ReadOriginalValue(floatArray, 83), + float[] (InternalEntityEntry entry) => entry.ReadOriginalValue(floatArray, 84), float[] (InternalEntityEntry entry) => entry.GetCurrentValue(floatArray), - object (ValueBuffer valueBuffer) => valueBuffer[83]); + object (ValueBuffer valueBuffer) => valueBuffer[84]); floatArray.SetPropertyIndexes( - index: 83, - originalValueIndex: 83, + index: 84, + originalValueIndex: 84, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4965,12 +5024,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guid.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Guid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Guid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guid, 84), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guid, 85), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guid), - object (ValueBuffer valueBuffer) => valueBuffer[84]); + object (ValueBuffer valueBuffer) => valueBuffer[85]); guid.SetPropertyIndexes( - index: 84, - originalValueIndex: 84, + index: 85, + originalValueIndex: 85, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4993,12 +5052,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidArray.SetAccessors( Guid[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid[] (InternalEntityEntry entry) => entry.ReadOriginalValue(guidArray, 85), + Guid[] (InternalEntityEntry entry) => entry.ReadOriginalValue(guidArray, 86), Guid[] (InternalEntityEntry entry) => entry.GetCurrentValue(guidArray), - object (ValueBuffer valueBuffer) => valueBuffer[85]); + object (ValueBuffer valueBuffer) => valueBuffer[86]); guidArray.SetPropertyIndexes( - index: 85, - originalValueIndex: 85, + index: 86, + originalValueIndex: 86, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5039,12 +5098,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidToBytesConverterProperty.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToBytesConverterProperty, 86), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToBytesConverterProperty, 87), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guidToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[86]); + object (ValueBuffer valueBuffer) => valueBuffer[87]); guidToBytesConverterProperty.SetPropertyIndexes( - index: 86, - originalValueIndex: 86, + index: 87, + originalValueIndex: 87, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5091,12 +5150,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidToStringConverterProperty.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToStringConverterProperty, 87), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToStringConverterProperty, 88), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guidToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[87]); + object (ValueBuffer valueBuffer) => valueBuffer[88]); guidToStringConverterProperty.SetPropertyIndexes( - index: 87, - originalValueIndex: 87, + index: 88, + originalValueIndex: 88, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5142,12 +5201,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddress.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddress, 88), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddress, 89), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddress), - object (ValueBuffer valueBuffer) => valueBuffer[88]); + object (ValueBuffer valueBuffer) => valueBuffer[89]); iPAddress.SetPropertyIndexes( - index: 88, - originalValueIndex: 88, + index: 89, + originalValueIndex: 89, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5192,12 +5251,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressArray.SetAccessors( IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressArray, 89), + IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressArray, 90), IPAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[89]); + object (ValueBuffer valueBuffer) => valueBuffer[90]); iPAddressArray.SetPropertyIndexes( - index: 89, - originalValueIndex: 89, + index: 90, + originalValueIndex: 90, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5250,6 +5309,81 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + var iPAddressReadOnlyCollection = runtimeEntityType.AddProperty( + "IPAddressReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("IPAddressReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_ipAddressReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + iPAddressReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance) == null); + iPAddressReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) = ((List)(value))); + iPAddressReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) = ((List)(value))); + iPAddressReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(iPAddressReadOnlyCollection, 91), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(iPAddressReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[91]); + iPAddressReadOnlyCollection.SetPropertyIndexes( + index: 91, + originalValueIndex: 91, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + iPAddressReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v)), + keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( + new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v))))), + jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( + new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v)))), + elementMapping: SqliteStringTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v), + keyComparer: new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + size: 45), + converter: new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v)), + jsonValueReaderWriter: new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v))))); + var iPAddressToBytesConverterProperty = runtimeEntityType.AddProperty( "IPAddressToBytesConverterProperty", typeof(IPAddress), @@ -5268,12 +5402,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressToBytesConverterProperty.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToBytesConverterProperty, 90), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToBytesConverterProperty, 92), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[90]); + object (ValueBuffer valueBuffer) => valueBuffer[92]); iPAddressToBytesConverterProperty.SetPropertyIndexes( - index: 90, - originalValueIndex: 90, + index: 92, + originalValueIndex: 92, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5319,12 +5453,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressToStringConverterProperty.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToStringConverterProperty, 91), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToStringConverterProperty, 93), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[91]); + object (ValueBuffer valueBuffer) => valueBuffer[93]); iPAddressToStringConverterProperty.SetPropertyIndexes( - index: 91, - originalValueIndex: 91, + index: 93, + originalValueIndex: 93, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5370,12 +5504,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int16.SetAccessors( short (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short (InternalEntityEntry entry) => entry.ReadOriginalValue(int16, 92), + short (InternalEntityEntry entry) => entry.ReadOriginalValue(int16, 94), short (InternalEntityEntry entry) => entry.GetCurrentValue(int16), - object (ValueBuffer valueBuffer) => valueBuffer[92]); + object (ValueBuffer valueBuffer) => valueBuffer[94]); int16.SetPropertyIndexes( - index: 92, - originalValueIndex: 92, + index: 94, + originalValueIndex: 94, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5412,12 +5546,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int16Array.SetAccessors( short[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int16Array, 93), + short[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int16Array, 95), short[] (InternalEntityEntry entry) => entry.GetCurrentValue(int16Array), - object (ValueBuffer valueBuffer) => valueBuffer[93]); + object (ValueBuffer valueBuffer) => valueBuffer[95]); int16Array.SetPropertyIndexes( - index: 93, - originalValueIndex: 93, + index: 95, + originalValueIndex: 95, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5472,12 +5606,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int32.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(int32, 94), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(int32, 96), int (InternalEntityEntry entry) => entry.GetCurrentValue(int32), - object (ValueBuffer valueBuffer) => valueBuffer[94]); + object (ValueBuffer valueBuffer) => valueBuffer[96]); int32.SetPropertyIndexes( - index: 94, - originalValueIndex: 94, + index: 96, + originalValueIndex: 96, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5514,12 +5648,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int32Array.SetAccessors( int[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32Array, 95), + int[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32Array, 97), int[] (InternalEntityEntry entry) => entry.GetCurrentValue(int32Array), - object (ValueBuffer valueBuffer) => valueBuffer[95]); + object (ValueBuffer valueBuffer) => valueBuffer[97]); int32Array.SetPropertyIndexes( - index: 95, - originalValueIndex: 95, + index: 97, + originalValueIndex: 97, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5556,6 +5690,65 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); + var int32ReadOnlyCollection = runtimeEntityType.AddProperty( + "Int32ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_int32ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + int32ReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance) == null); + int32ReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) = ((List)(value))); + int32ReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) = ((List)(value))); + int32ReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(int32ReadOnlyCollection, 98), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(int32ReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[98]); + int32ReadOnlyCollection.SetPropertyIndexes( + index: 98, + originalValueIndex: 98, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + int32ReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, int>(new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v)), + keyComparer: new ListOfValueTypesComparer, int>(new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, int>( + JsonInt32ReaderWriter.Instance)), + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, int>( + JsonInt32ReaderWriter.Instance), + elementMapping: IntTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + keyComparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + providerValueComparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "INTEGER"))); + var int64 = runtimeEntityType.AddProperty( "Int64", typeof(long), @@ -5574,12 +5767,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int64.SetAccessors( long (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long (InternalEntityEntry entry) => entry.ReadOriginalValue(int64, 96), + long (InternalEntityEntry entry) => entry.ReadOriginalValue(int64, 99), long (InternalEntityEntry entry) => entry.GetCurrentValue(int64), - object (ValueBuffer valueBuffer) => valueBuffer[96]); + object (ValueBuffer valueBuffer) => valueBuffer[99]); int64.SetPropertyIndexes( - index: 96, - originalValueIndex: 96, + index: 99, + originalValueIndex: 99, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5616,12 +5809,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int64Array.SetAccessors( long[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int64Array, 97), + long[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int64Array, 100), long[] (InternalEntityEntry entry) => entry.GetCurrentValue(int64Array), - object (ValueBuffer valueBuffer) => valueBuffer[97]); + object (ValueBuffer valueBuffer) => valueBuffer[100]); int64Array.SetPropertyIndexes( - index: 97, - originalValueIndex: 97, + index: 100, + originalValueIndex: 100, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5676,12 +5869,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int8.SetAccessors( sbyte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte (InternalEntityEntry entry) => entry.ReadOriginalValue(int8, 98), + sbyte (InternalEntityEntry entry) => entry.ReadOriginalValue(int8, 101), sbyte (InternalEntityEntry entry) => entry.GetCurrentValue(int8), - object (ValueBuffer valueBuffer) => valueBuffer[98]); + object (ValueBuffer valueBuffer) => valueBuffer[101]); int8.SetPropertyIndexes( - index: 98, - originalValueIndex: 98, + index: 101, + originalValueIndex: 101, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5718,12 +5911,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int8Array.SetAccessors( sbyte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8Array, 99), + sbyte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8Array, 102), sbyte[] (InternalEntityEntry entry) => entry.GetCurrentValue(int8Array), - object (ValueBuffer valueBuffer) => valueBuffer[99]); + object (ValueBuffer valueBuffer) => valueBuffer[102]); int8Array.SetPropertyIndexes( - index: 99, - originalValueIndex: 99, + index: 102, + originalValueIndex: 102, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5778,12 +5971,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas intNumberToBytesConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToBytesConverterProperty, 100), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToBytesConverterProperty, 103), int (InternalEntityEntry entry) => entry.GetCurrentValue(intNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[100]); + object (ValueBuffer valueBuffer) => valueBuffer[103]); intNumberToBytesConverterProperty.SetPropertyIndexes( - index: 100, - originalValueIndex: 100, + index: 103, + originalValueIndex: 103, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5830,12 +6023,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas intNumberToStringConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToStringConverterProperty, 101), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToStringConverterProperty, 104), int (InternalEntityEntry entry) => entry.GetCurrentValue(intNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[101]); + object (ValueBuffer valueBuffer) => valueBuffer[104]); intNumberToStringConverterProperty.SetPropertyIndexes( - index: 101, - originalValueIndex: 101, + index: 104, + originalValueIndex: 104, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5883,12 +6076,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullIntToNullStringConverterProperty.SetAccessors( int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullIntToNullStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullIntToNullStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullIntToNullStringConverterProperty, 102), + int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullIntToNullStringConverterProperty, 105), int? (InternalEntityEntry entry) => entry.GetCurrentValue(nullIntToNullStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[102]); + object (ValueBuffer valueBuffer) => valueBuffer[105]); nullIntToNullStringConverterProperty.SetPropertyIndexes( - index: 102, - originalValueIndex: 102, + index: 105, + originalValueIndex: 105, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5934,12 +6127,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBool.SetAccessors( bool? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBool(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBool(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBool, 103), + bool? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBool, 106), bool? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBool), - object (ValueBuffer valueBuffer) => valueBuffer[103]); + object (ValueBuffer valueBuffer) => valueBuffer[106]); nullableBool.SetPropertyIndexes( - index: 103, - originalValueIndex: 103, + index: 106, + originalValueIndex: 106, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5978,12 +6171,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBoolArray.SetAccessors( bool? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBoolArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBoolArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBoolArray, 104), + bool? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBoolArray, 107), bool? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBoolArray), - object (ValueBuffer valueBuffer) => valueBuffer[104]); + object (ValueBuffer valueBuffer) => valueBuffer[107]); nullableBoolArray.SetPropertyIndexes( - index: 104, - originalValueIndex: 104, + index: 107, + originalValueIndex: 107, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6038,12 +6231,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBytes.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytes, 105), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytes, 108), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBytes), - object (ValueBuffer valueBuffer) => valueBuffer[105]); + object (ValueBuffer valueBuffer) => valueBuffer[108]); nullableBytes.SetPropertyIndexes( - index: 105, - originalValueIndex: 105, + index: 108, + originalValueIndex: 108, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6078,12 +6271,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBytesArray.SetAccessors( byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytesArray, 106), + byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytesArray, 109), byte[][] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBytesArray), - object (ValueBuffer valueBuffer) => valueBuffer[106]); + object (ValueBuffer valueBuffer) => valueBuffer[109]); nullableBytesArray.SetPropertyIndexes( - index: 106, - originalValueIndex: 106, + index: 109, + originalValueIndex: 109, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6136,12 +6329,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableChar.SetAccessors( char? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableChar(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableChar(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableChar, 107), + char? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableChar, 110), char? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableChar), - object (ValueBuffer valueBuffer) => valueBuffer[107]); + object (ValueBuffer valueBuffer) => valueBuffer[110]); nullableChar.SetPropertyIndexes( - index: 107, - originalValueIndex: 107, + index: 110, + originalValueIndex: 110, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6180,12 +6373,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableCharArray.SetAccessors( char? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableCharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableCharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableCharArray, 108), + char? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableCharArray, 111), char? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableCharArray), - object (ValueBuffer valueBuffer) => valueBuffer[108]); + object (ValueBuffer valueBuffer) => valueBuffer[111]); nullableCharArray.SetPropertyIndexes( - index: 108, - originalValueIndex: 108, + index: 111, + originalValueIndex: 111, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6240,12 +6433,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateOnly.SetAccessors( DateOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnly, 109), + DateOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnly, 112), DateOnly? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateOnly), - object (ValueBuffer valueBuffer) => valueBuffer[109]); + object (ValueBuffer valueBuffer) => valueBuffer[112]); nullableDateOnly.SetPropertyIndexes( - index: 109, - originalValueIndex: 109, + index: 112, + originalValueIndex: 112, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6270,12 +6463,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateOnlyArray.SetAccessors( DateOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnlyArray, 110), + DateOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnlyArray, 113), DateOnly? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[110]); + object (ValueBuffer valueBuffer) => valueBuffer[113]); nullableDateOnlyArray.SetPropertyIndexes( - index: 110, - originalValueIndex: 110, + index: 113, + originalValueIndex: 113, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6316,12 +6509,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateTime.SetAccessors( DateTime? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTime, 111), + DateTime? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTime, 114), DateTime? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateTime), - object (ValueBuffer valueBuffer) => valueBuffer[111]); + object (ValueBuffer valueBuffer) => valueBuffer[114]); nullableDateTime.SetPropertyIndexes( - index: 111, - originalValueIndex: 111, + index: 114, + originalValueIndex: 114, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6346,12 +6539,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateTimeArray.SetAccessors( DateTime? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTimeArray, 112), + DateTime? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTimeArray, 115), DateTime? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateTimeArray), - object (ValueBuffer valueBuffer) => valueBuffer[112]); + object (ValueBuffer valueBuffer) => valueBuffer[115]); nullableDateTimeArray.SetPropertyIndexes( - index: 112, - originalValueIndex: 112, + index: 115, + originalValueIndex: 115, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6392,12 +6585,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDecimal.SetAccessors( decimal? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimal, 113), + decimal? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimal, 116), decimal? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDecimal), - object (ValueBuffer valueBuffer) => valueBuffer[113]); + object (ValueBuffer valueBuffer) => valueBuffer[116]); nullableDecimal.SetPropertyIndexes( - index: 113, - originalValueIndex: 113, + index: 116, + originalValueIndex: 116, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6422,12 +6615,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDecimalArray.SetAccessors( decimal? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimalArray, 114), + decimal? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimalArray, 117), decimal? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDecimalArray), - object (ValueBuffer valueBuffer) => valueBuffer[114]); + object (ValueBuffer valueBuffer) => valueBuffer[117]); nullableDecimalArray.SetPropertyIndexes( - index: 114, - originalValueIndex: 114, + index: 117, + originalValueIndex: 117, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6468,12 +6661,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDouble.SetAccessors( double? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDouble(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDouble(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDouble, 115), + double? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDouble, 118), double? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDouble), - object (ValueBuffer valueBuffer) => valueBuffer[115]); + object (ValueBuffer valueBuffer) => valueBuffer[118]); nullableDouble.SetPropertyIndexes( - index: 115, - originalValueIndex: 115, + index: 118, + originalValueIndex: 118, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6512,12 +6705,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDoubleArray.SetAccessors( double? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDoubleArray, 116), + double? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDoubleArray, 119), double? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDoubleArray), - object (ValueBuffer valueBuffer) => valueBuffer[116]); + object (ValueBuffer valueBuffer) => valueBuffer[119]); nullableDoubleArray.SetPropertyIndexes( - index: 116, - originalValueIndex: 116, + index: 119, + originalValueIndex: 119, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6572,12 +6765,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16.SetAccessors( CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16, 117), + CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16, 120), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16), - object (ValueBuffer valueBuffer) => valueBuffer[117]); + object (ValueBuffer valueBuffer) => valueBuffer[120]); nullableEnum16.SetPropertyIndexes( - index: 117, - originalValueIndex: 117, + index: 120, + originalValueIndex: 120, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6624,12 +6817,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16Array.SetAccessors( CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16Array, 118), + CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16Array, 121), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16Array), - object (ValueBuffer valueBuffer) => valueBuffer[118]); + object (ValueBuffer valueBuffer) => valueBuffer[121]); nullableEnum16Array.SetPropertyIndexes( - index: 118, - originalValueIndex: 118, + index: 121, + originalValueIndex: 121, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6700,12 +6893,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsString.SetAccessors( CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsString, 119), + CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsString, 122), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[119]); + object (ValueBuffer valueBuffer) => valueBuffer[122]); nullableEnum16AsString.SetPropertyIndexes( - index: 119, - originalValueIndex: 119, + index: 122, + originalValueIndex: 122, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6752,12 +6945,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsStringArray.SetAccessors( CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsStringArray, 120), + CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsStringArray, 123), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[120]); + object (ValueBuffer valueBuffer) => valueBuffer[123]); nullableEnum16AsStringArray.SetPropertyIndexes( - index: 120, - originalValueIndex: 120, + index: 123, + originalValueIndex: 123, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6827,12 +7020,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16AsStringCollection, 121), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16AsStringCollection, 124), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[121]); + object (ValueBuffer valueBuffer) => valueBuffer[124]); nullableEnum16AsStringCollection.SetPropertyIndexes( - index: 121, - originalValueIndex: 121, + index: 124, + originalValueIndex: 124, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6902,12 +7095,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16Collection, 122), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16Collection, 125), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[122]); + object (ValueBuffer valueBuffer) => valueBuffer[125]); nullableEnum16Collection.SetPropertyIndexes( - index: 122, - originalValueIndex: 122, + index: 125, + originalValueIndex: 125, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6978,12 +7171,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32.SetAccessors( CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32, 123), + CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32, 126), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32), - object (ValueBuffer valueBuffer) => valueBuffer[123]); + object (ValueBuffer valueBuffer) => valueBuffer[126]); nullableEnum32.SetPropertyIndexes( - index: 123, - originalValueIndex: 123, + index: 126, + originalValueIndex: 126, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7030,12 +7223,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32Array.SetAccessors( CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32Array, 124), + CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32Array, 127), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32Array), - object (ValueBuffer valueBuffer) => valueBuffer[124]); + object (ValueBuffer valueBuffer) => valueBuffer[127]); nullableEnum32Array.SetPropertyIndexes( - index: 124, - originalValueIndex: 124, + index: 127, + originalValueIndex: 127, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7106,12 +7299,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsString.SetAccessors( CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsString, 125), + CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsString, 128), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[125]); + object (ValueBuffer valueBuffer) => valueBuffer[128]); nullableEnum32AsString.SetPropertyIndexes( - index: 125, - originalValueIndex: 125, + index: 128, + originalValueIndex: 128, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7158,12 +7351,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsStringArray.SetAccessors( CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsStringArray, 126), + CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsStringArray, 129), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[126]); + object (ValueBuffer valueBuffer) => valueBuffer[129]); nullableEnum32AsStringArray.SetPropertyIndexes( - index: 126, - originalValueIndex: 126, + index: 129, + originalValueIndex: 129, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7233,12 +7426,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32AsStringCollection, 127), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32AsStringCollection, 130), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[127]); + object (ValueBuffer valueBuffer) => valueBuffer[130]); nullableEnum32AsStringCollection.SetPropertyIndexes( - index: 127, - originalValueIndex: 127, + index: 130, + originalValueIndex: 130, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7308,12 +7501,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32Collection, 128), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32Collection, 131), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[128]); + object (ValueBuffer valueBuffer) => valueBuffer[131]); nullableEnum32Collection.SetPropertyIndexes( - index: 128, - originalValueIndex: 128, + index: 131, + originalValueIndex: 131, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7384,12 +7577,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64.SetAccessors( CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64, 129), + CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64, 132), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64), - object (ValueBuffer valueBuffer) => valueBuffer[129]); + object (ValueBuffer valueBuffer) => valueBuffer[132]); nullableEnum64.SetPropertyIndexes( - index: 129, - originalValueIndex: 129, + index: 132, + originalValueIndex: 132, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7436,12 +7629,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64Array.SetAccessors( CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64Array, 130), + CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64Array, 133), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64Array), - object (ValueBuffer valueBuffer) => valueBuffer[130]); + object (ValueBuffer valueBuffer) => valueBuffer[133]); nullableEnum64Array.SetPropertyIndexes( - index: 130, - originalValueIndex: 130, + index: 133, + originalValueIndex: 133, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7512,12 +7705,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsString.SetAccessors( CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsString, 131), + CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsString, 134), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[131]); + object (ValueBuffer valueBuffer) => valueBuffer[134]); nullableEnum64AsString.SetPropertyIndexes( - index: 131, - originalValueIndex: 131, + index: 134, + originalValueIndex: 134, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7564,12 +7757,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsStringArray.SetAccessors( CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsStringArray, 132), + CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsStringArray, 135), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[132]); + object (ValueBuffer valueBuffer) => valueBuffer[135]); nullableEnum64AsStringArray.SetPropertyIndexes( - index: 132, - originalValueIndex: 132, + index: 135, + originalValueIndex: 135, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7639,12 +7832,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64AsStringCollection, 133), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64AsStringCollection, 136), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[133]); + object (ValueBuffer valueBuffer) => valueBuffer[136]); nullableEnum64AsStringCollection.SetPropertyIndexes( - index: 133, - originalValueIndex: 133, + index: 136, + originalValueIndex: 136, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7714,12 +7907,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64Collection, 134), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64Collection, 137), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[134]); + object (ValueBuffer valueBuffer) => valueBuffer[137]); nullableEnum64Collection.SetPropertyIndexes( - index: 134, - originalValueIndex: 134, + index: 137, + originalValueIndex: 137, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7790,12 +7983,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8.SetAccessors( CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8, 135), + CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8, 138), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8), - object (ValueBuffer valueBuffer) => valueBuffer[135]); + object (ValueBuffer valueBuffer) => valueBuffer[138]); nullableEnum8.SetPropertyIndexes( - index: 135, - originalValueIndex: 135, + index: 138, + originalValueIndex: 138, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7842,12 +8035,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8Array.SetAccessors( CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8Array, 136), + CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8Array, 139), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8Array), - object (ValueBuffer valueBuffer) => valueBuffer[136]); + object (ValueBuffer valueBuffer) => valueBuffer[139]); nullableEnum8Array.SetPropertyIndexes( - index: 136, - originalValueIndex: 136, + index: 139, + originalValueIndex: 139, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7918,12 +8111,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsString.SetAccessors( CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsString, 137), + CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsString, 140), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[137]); + object (ValueBuffer valueBuffer) => valueBuffer[140]); nullableEnum8AsString.SetPropertyIndexes( - index: 137, - originalValueIndex: 137, + index: 140, + originalValueIndex: 140, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7970,12 +8163,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsStringArray.SetAccessors( CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsStringArray, 138), + CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsStringArray, 141), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[138]); + object (ValueBuffer valueBuffer) => valueBuffer[141]); nullableEnum8AsStringArray.SetPropertyIndexes( - index: 138, - originalValueIndex: 138, + index: 141, + originalValueIndex: 141, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8045,12 +8238,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8AsStringCollection, 139), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8AsStringCollection, 142), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[139]); + object (ValueBuffer valueBuffer) => valueBuffer[142]); nullableEnum8AsStringCollection.SetPropertyIndexes( - index: 139, - originalValueIndex: 139, + index: 142, + originalValueIndex: 142, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8120,12 +8313,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8Collection, 140), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8Collection, 143), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[140]); + object (ValueBuffer valueBuffer) => valueBuffer[143]); nullableEnum8Collection.SetPropertyIndexes( - index: 140, - originalValueIndex: 140, + index: 143, + originalValueIndex: 143, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8196,12 +8389,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16.SetAccessors( CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16, 141), + CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16, 144), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16), - object (ValueBuffer valueBuffer) => valueBuffer[141]); + object (ValueBuffer valueBuffer) => valueBuffer[144]); nullableEnumU16.SetPropertyIndexes( - index: 141, - originalValueIndex: 141, + index: 144, + originalValueIndex: 144, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8248,12 +8441,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16Array.SetAccessors( CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16Array, 142), + CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16Array, 145), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16Array), - object (ValueBuffer valueBuffer) => valueBuffer[142]); + object (ValueBuffer valueBuffer) => valueBuffer[145]); nullableEnumU16Array.SetPropertyIndexes( - index: 142, - originalValueIndex: 142, + index: 145, + originalValueIndex: 145, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8324,12 +8517,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsString.SetAccessors( CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsString, 143), + CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsString, 146), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[143]); + object (ValueBuffer valueBuffer) => valueBuffer[146]); nullableEnumU16AsString.SetPropertyIndexes( - index: 143, - originalValueIndex: 143, + index: 146, + originalValueIndex: 146, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8376,12 +8569,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsStringArray.SetAccessors( CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsStringArray, 144), + CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsStringArray, 147), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[144]); + object (ValueBuffer valueBuffer) => valueBuffer[147]); nullableEnumU16AsStringArray.SetPropertyIndexes( - index: 144, - originalValueIndex: 144, + index: 147, + originalValueIndex: 147, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8451,12 +8644,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16AsStringCollection, 145), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16AsStringCollection, 148), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[145]); + object (ValueBuffer valueBuffer) => valueBuffer[148]); nullableEnumU16AsStringCollection.SetPropertyIndexes( - index: 145, - originalValueIndex: 145, + index: 148, + originalValueIndex: 148, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8526,12 +8719,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16Collection, 146), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16Collection, 149), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[146]); + object (ValueBuffer valueBuffer) => valueBuffer[149]); nullableEnumU16Collection.SetPropertyIndexes( - index: 146, - originalValueIndex: 146, + index: 149, + originalValueIndex: 149, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8602,12 +8795,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32.SetAccessors( CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32, 147), + CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32, 150), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32), - object (ValueBuffer valueBuffer) => valueBuffer[147]); + object (ValueBuffer valueBuffer) => valueBuffer[150]); nullableEnumU32.SetPropertyIndexes( - index: 147, - originalValueIndex: 147, + index: 150, + originalValueIndex: 150, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8654,12 +8847,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32Array.SetAccessors( CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32Array, 148), + CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32Array, 151), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32Array), - object (ValueBuffer valueBuffer) => valueBuffer[148]); + object (ValueBuffer valueBuffer) => valueBuffer[151]); nullableEnumU32Array.SetPropertyIndexes( - index: 148, - originalValueIndex: 148, + index: 151, + originalValueIndex: 151, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8730,12 +8923,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsString.SetAccessors( CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsString, 149), + CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsString, 152), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[149]); + object (ValueBuffer valueBuffer) => valueBuffer[152]); nullableEnumU32AsString.SetPropertyIndexes( - index: 149, - originalValueIndex: 149, + index: 152, + originalValueIndex: 152, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8782,12 +8975,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsStringArray.SetAccessors( CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsStringArray, 150), + CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsStringArray, 153), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[150]); + object (ValueBuffer valueBuffer) => valueBuffer[153]); nullableEnumU32AsStringArray.SetPropertyIndexes( - index: 150, - originalValueIndex: 150, + index: 153, + originalValueIndex: 153, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8857,12 +9050,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32AsStringCollection, 151), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32AsStringCollection, 154), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[151]); + object (ValueBuffer valueBuffer) => valueBuffer[154]); nullableEnumU32AsStringCollection.SetPropertyIndexes( - index: 151, - originalValueIndex: 151, + index: 154, + originalValueIndex: 154, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8932,12 +9125,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32Collection, 152), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32Collection, 155), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[152]); + object (ValueBuffer valueBuffer) => valueBuffer[155]); nullableEnumU32Collection.SetPropertyIndexes( - index: 152, - originalValueIndex: 152, + index: 155, + originalValueIndex: 155, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9008,12 +9201,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64.SetAccessors( CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64, 153), + CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64, 156), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64), - object (ValueBuffer valueBuffer) => valueBuffer[153]); + object (ValueBuffer valueBuffer) => valueBuffer[156]); nullableEnumU64.SetPropertyIndexes( - index: 153, - originalValueIndex: 153, + index: 156, + originalValueIndex: 156, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9058,12 +9251,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64Array.SetAccessors( CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64Array, 154), + CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64Array, 157), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64Array), - object (ValueBuffer valueBuffer) => valueBuffer[154]); + object (ValueBuffer valueBuffer) => valueBuffer[157]); nullableEnumU64Array.SetPropertyIndexes( - index: 154, - originalValueIndex: 154, + index: 157, + originalValueIndex: 157, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9132,12 +9325,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsString.SetAccessors( CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsString, 155), + CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsString, 158), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[155]); + object (ValueBuffer valueBuffer) => valueBuffer[158]); nullableEnumU64AsString.SetPropertyIndexes( - index: 155, - originalValueIndex: 155, + index: 158, + originalValueIndex: 158, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9182,12 +9375,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsStringArray.SetAccessors( CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsStringArray, 156), + CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsStringArray, 159), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[156]); + object (ValueBuffer valueBuffer) => valueBuffer[159]); nullableEnumU64AsStringArray.SetPropertyIndexes( - index: 156, - originalValueIndex: 156, + index: 159, + originalValueIndex: 159, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9255,12 +9448,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64AsStringCollection, 157), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64AsStringCollection, 160), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[157]); + object (ValueBuffer valueBuffer) => valueBuffer[160]); nullableEnumU64AsStringCollection.SetPropertyIndexes( - index: 157, - originalValueIndex: 157, + index: 160, + originalValueIndex: 160, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9328,12 +9521,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64Collection, 158), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64Collection, 161), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[158]); + object (ValueBuffer valueBuffer) => valueBuffer[161]); nullableEnumU64Collection.SetPropertyIndexes( - index: 158, - originalValueIndex: 158, + index: 161, + originalValueIndex: 161, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9402,12 +9595,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8.SetAccessors( CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8, 159), + CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8, 162), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8), - object (ValueBuffer valueBuffer) => valueBuffer[159]); + object (ValueBuffer valueBuffer) => valueBuffer[162]); nullableEnumU8.SetPropertyIndexes( - index: 159, - originalValueIndex: 159, + index: 162, + originalValueIndex: 162, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9454,12 +9647,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8Array.SetAccessors( CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8Array, 160), + CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8Array, 163), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8Array), - object (ValueBuffer valueBuffer) => valueBuffer[160]); + object (ValueBuffer valueBuffer) => valueBuffer[163]); nullableEnumU8Array.SetPropertyIndexes( - index: 160, - originalValueIndex: 160, + index: 163, + originalValueIndex: 163, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9530,12 +9723,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsString.SetAccessors( CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsString, 161), + CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsString, 164), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[161]); + object (ValueBuffer valueBuffer) => valueBuffer[164]); nullableEnumU8AsString.SetPropertyIndexes( - index: 161, - originalValueIndex: 161, + index: 164, + originalValueIndex: 164, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9582,12 +9775,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsStringArray.SetAccessors( CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsStringArray, 162), + CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsStringArray, 165), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[162]); + object (ValueBuffer valueBuffer) => valueBuffer[165]); nullableEnumU8AsStringArray.SetPropertyIndexes( - index: 162, - originalValueIndex: 162, + index: 165, + originalValueIndex: 165, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9657,12 +9850,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8AsStringCollection, 163), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8AsStringCollection, 166), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[163]); + object (ValueBuffer valueBuffer) => valueBuffer[166]); nullableEnumU8AsStringCollection.SetPropertyIndexes( - index: 163, - originalValueIndex: 163, + index: 166, + originalValueIndex: 166, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9732,12 +9925,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8Collection, 164), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8Collection, 167), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[164]); + object (ValueBuffer valueBuffer) => valueBuffer[167]); nullableEnumU8Collection.SetPropertyIndexes( - index: 164, - originalValueIndex: 164, + index: 167, + originalValueIndex: 167, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9808,12 +10001,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableFloat.SetAccessors( float? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloat(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloat(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloat, 165), + float? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloat, 168), float? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableFloat), - object (ValueBuffer valueBuffer) => valueBuffer[165]); + object (ValueBuffer valueBuffer) => valueBuffer[168]); nullableFloat.SetPropertyIndexes( - index: 165, - originalValueIndex: 165, + index: 168, + originalValueIndex: 168, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9852,12 +10045,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableFloatArray.SetAccessors( float? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloatArray, 166), + float? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloatArray, 169), float? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableFloatArray), - object (ValueBuffer valueBuffer) => valueBuffer[166]); + object (ValueBuffer valueBuffer) => valueBuffer[169]); nullableFloatArray.SetPropertyIndexes( - index: 166, - originalValueIndex: 166, + index: 169, + originalValueIndex: 169, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9912,12 +10105,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableGuid.SetAccessors( Guid? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuid, 167), + Guid? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuid, 170), Guid? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableGuid), - object (ValueBuffer valueBuffer) => valueBuffer[167]); + object (ValueBuffer valueBuffer) => valueBuffer[170]); nullableGuid.SetPropertyIndexes( - index: 167, - originalValueIndex: 167, + index: 170, + originalValueIndex: 170, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9942,12 +10135,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableGuidArray.SetAccessors( Guid? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuidArray, 168), + Guid? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuidArray, 171), Guid? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableGuidArray), - object (ValueBuffer valueBuffer) => valueBuffer[168]); + object (ValueBuffer valueBuffer) => valueBuffer[171]); nullableGuidArray.SetPropertyIndexes( - index: 168, - originalValueIndex: 168, + index: 171, + originalValueIndex: 171, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9988,12 +10181,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableIPAddress.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddress, 169), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddress, 172), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(nullableIPAddress), - object (ValueBuffer valueBuffer) => valueBuffer[169]); + object (ValueBuffer valueBuffer) => valueBuffer[172]); nullableIPAddress.SetPropertyIndexes( - index: 169, - originalValueIndex: 169, + index: 172, + originalValueIndex: 172, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10038,12 +10231,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableIPAddressArray.SetAccessors( IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddressArray, 170), + IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddressArray, 173), IPAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableIPAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[170]); + object (ValueBuffer valueBuffer) => valueBuffer[173]); nullableIPAddressArray.SetPropertyIndexes( - index: 170, - originalValueIndex: 170, + index: 173, + originalValueIndex: 173, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10114,12 +10307,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt16.SetAccessors( short? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16, 171), + short? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16, 174), short? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt16), - object (ValueBuffer valueBuffer) => valueBuffer[171]); + object (ValueBuffer valueBuffer) => valueBuffer[174]); nullableInt16.SetPropertyIndexes( - index: 171, - originalValueIndex: 171, + index: 174, + originalValueIndex: 174, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10158,12 +10351,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt16Array.SetAccessors( short? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16Array, 172), + short? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16Array, 175), short? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[172]); + object (ValueBuffer valueBuffer) => valueBuffer[175]); nullableInt16Array.SetPropertyIndexes( - index: 172, - originalValueIndex: 172, + index: 175, + originalValueIndex: 175, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10218,12 +10411,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt32.SetAccessors( int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32, 173), + int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32, 176), int? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt32), - object (ValueBuffer valueBuffer) => valueBuffer[173]); + object (ValueBuffer valueBuffer) => valueBuffer[176]); nullableInt32.SetPropertyIndexes( - index: 173, - originalValueIndex: 173, + index: 176, + originalValueIndex: 176, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10262,12 +10455,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt32Array.SetAccessors( int? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32Array, 174), + int? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32Array, 177), int? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[174]); + object (ValueBuffer valueBuffer) => valueBuffer[177]); nullableInt32Array.SetPropertyIndexes( - index: 174, - originalValueIndex: 174, + index: 177, + originalValueIndex: 177, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10322,12 +10515,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt64.SetAccessors( long? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64, 175), + long? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64, 178), long? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt64), - object (ValueBuffer valueBuffer) => valueBuffer[175]); + object (ValueBuffer valueBuffer) => valueBuffer[178]); nullableInt64.SetPropertyIndexes( - index: 175, - originalValueIndex: 175, + index: 178, + originalValueIndex: 178, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10366,12 +10559,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt64Array.SetAccessors( long? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64Array, 176), + long? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64Array, 179), long? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[176]); + object (ValueBuffer valueBuffer) => valueBuffer[179]); nullableInt64Array.SetPropertyIndexes( - index: 176, - originalValueIndex: 176, + index: 179, + originalValueIndex: 179, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10426,12 +10619,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt8.SetAccessors( sbyte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8, 177), + sbyte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8, 180), sbyte? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt8), - object (ValueBuffer valueBuffer) => valueBuffer[177]); + object (ValueBuffer valueBuffer) => valueBuffer[180]); nullableInt8.SetPropertyIndexes( - index: 177, - originalValueIndex: 177, + index: 180, + originalValueIndex: 180, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10470,12 +10663,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt8Array.SetAccessors( sbyte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8Array, 178), + sbyte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8Array, 181), sbyte? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[178]); + object (ValueBuffer valueBuffer) => valueBuffer[181]); nullableInt8Array.SetPropertyIndexes( - index: 178, - originalValueIndex: 178, + index: 181, + originalValueIndex: 181, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10530,12 +10723,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullablePhysicalAddress.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddress, 179), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddress, 182), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(nullablePhysicalAddress), - object (ValueBuffer valueBuffer) => valueBuffer[179]); + object (ValueBuffer valueBuffer) => valueBuffer[182]); nullablePhysicalAddress.SetPropertyIndexes( - index: 179, - originalValueIndex: 179, + index: 182, + originalValueIndex: 182, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10580,12 +10773,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullablePhysicalAddressArray.SetAccessors( PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddressArray, 180), + PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddressArray, 183), PhysicalAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullablePhysicalAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[180]); + object (ValueBuffer valueBuffer) => valueBuffer[183]); nullablePhysicalAddressArray.SetPropertyIndexes( - index: 180, - originalValueIndex: 180, + index: 183, + originalValueIndex: 183, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10656,12 +10849,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableString.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableString, 181), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableString, 184), string (InternalEntityEntry entry) => entry.GetCurrentValue(nullableString), - object (ValueBuffer valueBuffer) => valueBuffer[181]); + object (ValueBuffer valueBuffer) => valueBuffer[184]); nullableString.SetPropertyIndexes( - index: 181, - originalValueIndex: 181, + index: 184, + originalValueIndex: 184, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10684,12 +10877,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableStringArray.SetAccessors( string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringArray, 182), + string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringArray, 185), string[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[182]); + object (ValueBuffer valueBuffer) => valueBuffer[185]); nullableStringArray.SetPropertyIndexes( - index: 182, - originalValueIndex: 182, + index: 185, + originalValueIndex: 185, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10730,12 +10923,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeOnly.SetAccessors( TimeOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnly, 183), + TimeOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnly, 186), TimeOnly? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeOnly), - object (ValueBuffer valueBuffer) => valueBuffer[183]); + object (ValueBuffer valueBuffer) => valueBuffer[186]); nullableTimeOnly.SetPropertyIndexes( - index: 183, - originalValueIndex: 183, + index: 186, + originalValueIndex: 186, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10760,12 +10953,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeOnlyArray.SetAccessors( TimeOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnlyArray, 184), + TimeOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnlyArray, 187), TimeOnly? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[184]); + object (ValueBuffer valueBuffer) => valueBuffer[187]); nullableTimeOnlyArray.SetPropertyIndexes( - index: 184, - originalValueIndex: 184, + index: 187, + originalValueIndex: 187, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10806,12 +10999,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeSpan.SetAccessors( TimeSpan? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpan, 185), + TimeSpan? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpan, 188), TimeSpan? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeSpan), - object (ValueBuffer valueBuffer) => valueBuffer[185]); + object (ValueBuffer valueBuffer) => valueBuffer[188]); nullableTimeSpan.SetPropertyIndexes( - index: 185, - originalValueIndex: 185, + index: 188, + originalValueIndex: 188, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10850,12 +11043,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeSpanArray.SetAccessors( TimeSpan? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpanArray, 186), + TimeSpan? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpanArray, 189), TimeSpan? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeSpanArray), - object (ValueBuffer valueBuffer) => valueBuffer[186]); + object (ValueBuffer valueBuffer) => valueBuffer[189]); nullableTimeSpanArray.SetPropertyIndexes( - index: 186, - originalValueIndex: 186, + index: 189, + originalValueIndex: 189, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10910,12 +11103,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt16.SetAccessors( ushort? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16, 187), + ushort? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16, 190), ushort? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt16), - object (ValueBuffer valueBuffer) => valueBuffer[187]); + object (ValueBuffer valueBuffer) => valueBuffer[190]); nullableUInt16.SetPropertyIndexes( - index: 187, - originalValueIndex: 187, + index: 190, + originalValueIndex: 190, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10954,12 +11147,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt16Array.SetAccessors( ushort? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16Array, 188), + ushort? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16Array, 191), ushort? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[188]); + object (ValueBuffer valueBuffer) => valueBuffer[191]); nullableUInt16Array.SetPropertyIndexes( - index: 188, - originalValueIndex: 188, + index: 191, + originalValueIndex: 191, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11014,12 +11207,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt32.SetAccessors( uint? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32, 189), + uint? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32, 192), uint? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt32), - object (ValueBuffer valueBuffer) => valueBuffer[189]); + object (ValueBuffer valueBuffer) => valueBuffer[192]); nullableUInt32.SetPropertyIndexes( - index: 189, - originalValueIndex: 189, + index: 192, + originalValueIndex: 192, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11058,12 +11251,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt32Array.SetAccessors( uint? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32Array, 190), + uint? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32Array, 193), uint? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[190]); + object (ValueBuffer valueBuffer) => valueBuffer[193]); nullableUInt32Array.SetPropertyIndexes( - index: 190, - originalValueIndex: 190, + index: 193, + originalValueIndex: 193, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11118,12 +11311,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt64.SetAccessors( ulong? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64, 191), + ulong? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64, 194), ulong? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt64), - object (ValueBuffer valueBuffer) => valueBuffer[191]); + object (ValueBuffer valueBuffer) => valueBuffer[194]); nullableUInt64.SetPropertyIndexes( - index: 191, - originalValueIndex: 191, + index: 194, + originalValueIndex: 194, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11148,12 +11341,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt64Array.SetAccessors( ulong? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64Array, 192), + ulong? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64Array, 195), ulong? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[192]); + object (ValueBuffer valueBuffer) => valueBuffer[195]); nullableUInt64Array.SetPropertyIndexes( - index: 192, - originalValueIndex: 192, + index: 195, + originalValueIndex: 195, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11194,12 +11387,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt8.SetAccessors( byte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8, 193), + byte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8, 196), byte? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt8), - object (ValueBuffer valueBuffer) => valueBuffer[193]); + object (ValueBuffer valueBuffer) => valueBuffer[196]); nullableUInt8.SetPropertyIndexes( - index: 193, - originalValueIndex: 193, + index: 196, + originalValueIndex: 196, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11238,12 +11431,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt8Array.SetAccessors( byte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8Array, 194), + byte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8Array, 197), byte? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[194]); + object (ValueBuffer valueBuffer) => valueBuffer[197]); nullableUInt8Array.SetPropertyIndexes( - index: 194, - originalValueIndex: 194, + index: 197, + originalValueIndex: 197, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11298,12 +11491,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUri.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUri, 195), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUri, 198), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUri), - object (ValueBuffer valueBuffer) => valueBuffer[195]); + object (ValueBuffer valueBuffer) => valueBuffer[198]); nullableUri.SetPropertyIndexes( - index: 195, - originalValueIndex: 195, + index: 198, + originalValueIndex: 198, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11346,12 +11539,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUriArray.SetAccessors( Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUriArray, 196), + Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUriArray, 199), Uri[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUriArray), - object (ValueBuffer valueBuffer) => valueBuffer[196]); + object (ValueBuffer valueBuffer) => valueBuffer[199]); nullableUriArray.SetPropertyIndexes( - index: 196, - originalValueIndex: 196, + index: 199, + originalValueIndex: 199, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11419,12 +11612,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddress.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddress, 197), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddress, 200), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddress), - object (ValueBuffer valueBuffer) => valueBuffer[197]); + object (ValueBuffer valueBuffer) => valueBuffer[200]); physicalAddress.SetPropertyIndexes( - index: 197, - originalValueIndex: 197, + index: 200, + originalValueIndex: 200, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11469,12 +11662,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressArray.SetAccessors( PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressArray, 198), + PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressArray, 201), PhysicalAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[198]); + object (ValueBuffer valueBuffer) => valueBuffer[201]); physicalAddressArray.SetPropertyIndexes( - index: 198, - originalValueIndex: 198, + index: 201, + originalValueIndex: 201, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11545,12 +11738,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressToBytesConverterProperty.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToBytesConverterProperty, 199), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToBytesConverterProperty, 202), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[199]); + object (ValueBuffer valueBuffer) => valueBuffer[202]); physicalAddressToBytesConverterProperty.SetPropertyIndexes( - index: 199, - originalValueIndex: 199, + index: 202, + originalValueIndex: 202, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11596,12 +11789,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressToStringConverterProperty.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToStringConverterProperty, 200), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToStringConverterProperty, 203), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[200]); + object (ValueBuffer valueBuffer) => valueBuffer[203]); physicalAddressToStringConverterProperty.SetPropertyIndexes( - index: 200, - originalValueIndex: 200, + index: 203, + originalValueIndex: 203, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11646,12 +11839,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @string.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.String(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.String(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(@string, 201), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(@string, 204), string (InternalEntityEntry entry) => entry.GetCurrentValue(@string), - object (ValueBuffer valueBuffer) => valueBuffer[201]); + object (ValueBuffer valueBuffer) => valueBuffer[204]); @string.SetPropertyIndexes( - index: 201, - originalValueIndex: 201, + index: 204, + originalValueIndex: 204, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11674,12 +11867,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringArray.SetAccessors( string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringArray, 202), + string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringArray, 205), string[] (InternalEntityEntry entry) => entry.GetCurrentValue(stringArray), - object (ValueBuffer valueBuffer) => valueBuffer[202]); + object (ValueBuffer valueBuffer) => valueBuffer[205]); stringArray.SetPropertyIndexes( - index: 202, - originalValueIndex: 202, + index: 205, + originalValueIndex: 205, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11702,6 +11895,51 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas JsonStringReaderWriter.Instance), elementMapping: SqliteStringTypeMapping.Default); + var stringReadOnlyCollection = runtimeEntityType.AddProperty( + "StringReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_stringReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + stringReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance) == null); + stringReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) = ((List)(value))); + stringReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) = ((List)(value))); + stringReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(stringReadOnlyCollection, 206), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(stringReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[206]); + stringReadOnlyCollection.SetPropertyIndexes( + index: 206, + originalValueIndex: 206, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + stringReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v)), + keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( + JsonStringReaderWriter.Instance)), + jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( + JsonStringReaderWriter.Instance), + elementMapping: SqliteStringTypeMapping.Default); + var stringToBoolConverterProperty = runtimeEntityType.AddProperty( "StringToBoolConverterProperty", typeof(string), @@ -11720,12 +11958,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToBoolConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBoolConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBoolConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBoolConverterProperty, 203), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBoolConverterProperty, 207), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToBoolConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[203]); + object (ValueBuffer valueBuffer) => valueBuffer[207]); stringToBoolConverterProperty.SetPropertyIndexes( - index: 203, - originalValueIndex: 203, + index: 207, + originalValueIndex: 207, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11771,12 +12009,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToBytesConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBytesConverterProperty, 204), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBytesConverterProperty, 208), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[204]); + object (ValueBuffer valueBuffer) => valueBuffer[208]); stringToBytesConverterProperty.SetPropertyIndexes( - index: 204, - originalValueIndex: 204, + index: 208, + originalValueIndex: 208, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11820,12 +12058,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToCharConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToCharConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToCharConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToCharConverterProperty, 205), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToCharConverterProperty, 209), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToCharConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[205]); + object (ValueBuffer valueBuffer) => valueBuffer[209]); stringToCharConverterProperty.SetPropertyIndexes( - index: 205, - originalValueIndex: 205, + index: 209, + originalValueIndex: 209, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11872,12 +12110,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateOnlyConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateOnlyConverterProperty, 206), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateOnlyConverterProperty, 210), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateOnlyConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[206]); + object (ValueBuffer valueBuffer) => valueBuffer[210]); stringToDateOnlyConverterProperty.SetPropertyIndexes( - index: 206, - originalValueIndex: 206, + index: 210, + originalValueIndex: 210, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11923,12 +12161,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateTimeConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeConverterProperty, 207), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeConverterProperty, 211), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateTimeConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[207]); + object (ValueBuffer valueBuffer) => valueBuffer[211]); stringToDateTimeConverterProperty.SetPropertyIndexes( - index: 207, - originalValueIndex: 207, + index: 211, + originalValueIndex: 211, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11974,12 +12212,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateTimeOffsetConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeOffsetConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeOffsetConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeOffsetConverterProperty, 208), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeOffsetConverterProperty, 212), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateTimeOffsetConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[208]); + object (ValueBuffer valueBuffer) => valueBuffer[212]); stringToDateTimeOffsetConverterProperty.SetPropertyIndexes( - index: 208, - originalValueIndex: 208, + index: 212, + originalValueIndex: 212, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12025,12 +12263,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDecimalNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDecimalNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDecimalNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDecimalNumberConverterProperty, 209), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDecimalNumberConverterProperty, 213), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDecimalNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[209]); + object (ValueBuffer valueBuffer) => valueBuffer[213]); stringToDecimalNumberConverterProperty.SetPropertyIndexes( - index: 209, - originalValueIndex: 209, + index: 213, + originalValueIndex: 213, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12076,12 +12314,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDoubleNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDoubleNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDoubleNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDoubleNumberConverterProperty, 210), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDoubleNumberConverterProperty, 214), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDoubleNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[210]); + object (ValueBuffer valueBuffer) => valueBuffer[214]); stringToDoubleNumberConverterProperty.SetPropertyIndexes( - index: 210, - originalValueIndex: 210, + index: 214, + originalValueIndex: 214, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12128,12 +12366,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToEnumConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToEnumConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToEnumConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToEnumConverterProperty, 211), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToEnumConverterProperty, 215), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToEnumConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[211]); + object (ValueBuffer valueBuffer) => valueBuffer[215]); stringToEnumConverterProperty.SetPropertyIndexes( - index: 211, - originalValueIndex: 211, + index: 215, + originalValueIndex: 215, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12178,12 +12416,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToGuidConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToGuidConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToGuidConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToGuidConverterProperty, 212), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToGuidConverterProperty, 216), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToGuidConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[212]); + object (ValueBuffer valueBuffer) => valueBuffer[216]); stringToGuidConverterProperty.SetPropertyIndexes( - index: 212, - originalValueIndex: 212, + index: 216, + originalValueIndex: 216, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12207,12 +12445,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToIntNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToIntNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToIntNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToIntNumberConverterProperty, 213), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToIntNumberConverterProperty, 217), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToIntNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[213]); + object (ValueBuffer valueBuffer) => valueBuffer[217]); stringToIntNumberConverterProperty.SetPropertyIndexes( - index: 213, - originalValueIndex: 213, + index: 217, + originalValueIndex: 217, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12259,12 +12497,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToTimeOnlyConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeOnlyConverterProperty, 214), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeOnlyConverterProperty, 218), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToTimeOnlyConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[214]); + object (ValueBuffer valueBuffer) => valueBuffer[218]); stringToTimeOnlyConverterProperty.SetPropertyIndexes( - index: 214, - originalValueIndex: 214, + index: 218, + originalValueIndex: 218, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12310,12 +12548,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToTimeSpanConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeSpanConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeSpanConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeSpanConverterProperty, 215), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeSpanConverterProperty, 219), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToTimeSpanConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[215]); + object (ValueBuffer valueBuffer) => valueBuffer[219]); stringToTimeSpanConverterProperty.SetPropertyIndexes( - index: 215, - originalValueIndex: 215, + index: 219, + originalValueIndex: 219, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12362,12 +12600,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToUriConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToUriConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToUriConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToUriConverterProperty, 216), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToUriConverterProperty, 220), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToUriConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[216]); + object (ValueBuffer valueBuffer) => valueBuffer[220]); stringToUriConverterProperty.SetPropertyIndexes( - index: 216, - originalValueIndex: 216, + index: 220, + originalValueIndex: 220, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12411,12 +12649,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnly.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnly, 217), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnly, 221), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnly), - object (ValueBuffer valueBuffer) => valueBuffer[217]); + object (ValueBuffer valueBuffer) => valueBuffer[221]); timeOnly.SetPropertyIndexes( - index: 217, - originalValueIndex: 217, + index: 221, + originalValueIndex: 221, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12439,12 +12677,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyArray.SetAccessors( TimeOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyArray, 218), + TimeOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyArray, 222), TimeOnly[] (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[218]); + object (ValueBuffer valueBuffer) => valueBuffer[222]); timeOnlyArray.SetPropertyIndexes( - index: 218, - originalValueIndex: 218, + index: 222, + originalValueIndex: 222, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12485,12 +12723,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyToStringConverterProperty.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToStringConverterProperty, 219), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToStringConverterProperty, 223), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[219]); + object (ValueBuffer valueBuffer) => valueBuffer[223]); timeOnlyToStringConverterProperty.SetPropertyIndexes( - index: 219, - originalValueIndex: 219, + index: 223, + originalValueIndex: 223, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12537,12 +12775,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyToTicksConverterProperty.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToTicksConverterProperty, 220), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToTicksConverterProperty, 224), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[220]); + object (ValueBuffer valueBuffer) => valueBuffer[224]); timeOnlyToTicksConverterProperty.SetPropertyIndexes( - index: 220, - originalValueIndex: 220, + index: 224, + originalValueIndex: 224, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12589,12 +12827,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpan.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpan, 221), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpan, 225), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpan), - object (ValueBuffer valueBuffer) => valueBuffer[221]); + object (ValueBuffer valueBuffer) => valueBuffer[225]); timeSpan.SetPropertyIndexes( - index: 221, - originalValueIndex: 221, + index: 225, + originalValueIndex: 225, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12631,12 +12869,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanArray.SetAccessors( TimeSpan[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanArray, 222), + TimeSpan[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanArray, 226), TimeSpan[] (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanArray), - object (ValueBuffer valueBuffer) => valueBuffer[222]); + object (ValueBuffer valueBuffer) => valueBuffer[226]); timeSpanArray.SetPropertyIndexes( - index: 222, - originalValueIndex: 222, + index: 226, + originalValueIndex: 226, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12691,12 +12929,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanToStringConverterProperty.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToStringConverterProperty, 223), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToStringConverterProperty, 227), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[223]); + object (ValueBuffer valueBuffer) => valueBuffer[227]); timeSpanToStringConverterProperty.SetPropertyIndexes( - index: 223, - originalValueIndex: 223, + index: 227, + originalValueIndex: 227, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12743,12 +12981,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanToTicksConverterProperty.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToTicksConverterProperty, 224), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToTicksConverterProperty, 228), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[224]); + object (ValueBuffer valueBuffer) => valueBuffer[228]); timeSpanToTicksConverterProperty.SetPropertyIndexes( - index: 224, - originalValueIndex: 224, + index: 228, + originalValueIndex: 228, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12795,12 +13033,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt16.SetAccessors( ushort (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16, 225), + ushort (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16, 229), ushort (InternalEntityEntry entry) => entry.GetCurrentValue(uInt16), - object (ValueBuffer valueBuffer) => valueBuffer[225]); + object (ValueBuffer valueBuffer) => valueBuffer[229]); uInt16.SetPropertyIndexes( - index: 225, - originalValueIndex: 225, + index: 229, + originalValueIndex: 229, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12837,12 +13075,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt16Array.SetAccessors( ushort[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16Array, 226), + ushort[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16Array, 230), ushort[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[226]); + object (ValueBuffer valueBuffer) => valueBuffer[230]); uInt16Array.SetPropertyIndexes( - index: 226, - originalValueIndex: 226, + index: 230, + originalValueIndex: 230, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12897,12 +13135,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt32.SetAccessors( uint (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32, 227), + uint (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32, 231), uint (InternalEntityEntry entry) => entry.GetCurrentValue(uInt32), - object (ValueBuffer valueBuffer) => valueBuffer[227]); + object (ValueBuffer valueBuffer) => valueBuffer[231]); uInt32.SetPropertyIndexes( - index: 227, - originalValueIndex: 227, + index: 231, + originalValueIndex: 231, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12939,12 +13177,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt32Array.SetAccessors( uint[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32Array, 228), + uint[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32Array, 232), uint[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[228]); + object (ValueBuffer valueBuffer) => valueBuffer[232]); uInt32Array.SetPropertyIndexes( - index: 228, - originalValueIndex: 228, + index: 232, + originalValueIndex: 232, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12999,12 +13237,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt64.SetAccessors( ulong (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64, 229), + ulong (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64, 233), ulong (InternalEntityEntry entry) => entry.GetCurrentValue(uInt64), - object (ValueBuffer valueBuffer) => valueBuffer[229]); + object (ValueBuffer valueBuffer) => valueBuffer[233]); uInt64.SetPropertyIndexes( - index: 229, - originalValueIndex: 229, + index: 233, + originalValueIndex: 233, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13027,12 +13265,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt64Array.SetAccessors( ulong[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64Array, 230), + ulong[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64Array, 234), ulong[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[230]); + object (ValueBuffer valueBuffer) => valueBuffer[234]); uInt64Array.SetPropertyIndexes( - index: 230, - originalValueIndex: 230, + index: 234, + originalValueIndex: 234, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13073,12 +13311,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt8.SetAccessors( byte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8, 231), + byte (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8, 235), byte (InternalEntityEntry entry) => entry.GetCurrentValue(uInt8), - object (ValueBuffer valueBuffer) => valueBuffer[231]); + object (ValueBuffer valueBuffer) => valueBuffer[235]); uInt8.SetPropertyIndexes( - index: 231, - originalValueIndex: 231, + index: 235, + originalValueIndex: 235, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13115,12 +13353,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt8Array.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8Array, 232), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8Array, 236), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[232]); + object (ValueBuffer valueBuffer) => valueBuffer[236]); uInt8Array.SetPropertyIndexes( - index: 232, - originalValueIndex: 232, + index: 236, + originalValueIndex: 236, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13138,6 +13376,65 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)(v))), byte[] (byte[] source) => source.ToArray())); + var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( + "UInt8ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_uInt8ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + uInt8ReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance) == null); + uInt8ReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) = ((List)(value))); + uInt8ReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) = ((List)(value))); + uInt8ReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(uInt8ReadOnlyCollection, 237), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(uInt8ReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[237]); + uInt8ReadOnlyCollection.SetPropertyIndexes( + index: 237, + originalValueIndex: 237, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + uInt8ReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v)), + keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( + JsonByteReaderWriter.Instance)), + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( + JsonByteReaderWriter.Instance), + elementMapping: ByteTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + keyComparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + providerValueComparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "INTEGER"))); + var uri = runtimeEntityType.AddProperty( "Uri", typeof(Uri), @@ -13155,12 +13452,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uri.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Uri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Uri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uri, 233), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uri, 238), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(uri), - object (ValueBuffer valueBuffer) => valueBuffer[233]); + object (ValueBuffer valueBuffer) => valueBuffer[238]); uri.SetPropertyIndexes( - index: 233, - originalValueIndex: 233, + index: 238, + originalValueIndex: 238, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13203,12 +13500,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uriArray.SetAccessors( Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uriArray, 234), + Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uriArray, 239), Uri[] (InternalEntityEntry entry) => entry.GetCurrentValue(uriArray), - object (ValueBuffer valueBuffer) => valueBuffer[234]); + object (ValueBuffer valueBuffer) => valueBuffer[239]); uriArray.SetPropertyIndexes( - index: 234, - originalValueIndex: 234, + index: 239, + originalValueIndex: 239, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13277,12 +13574,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uriToStringConverterProperty.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uriToStringConverterProperty, 235), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uriToStringConverterProperty, 240), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(uriToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[235]); + object (ValueBuffer valueBuffer) => valueBuffer[240]); uriToStringConverterProperty.SetPropertyIndexes( - index: 235, - originalValueIndex: 235, + index: 240, + originalValueIndex: 240, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13320,6 +13617,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var id = runtimeEntityType.FindProperty("Id"); var @bool = runtimeEntityType.FindProperty("Bool"); var boolArray = runtimeEntityType.FindProperty("BoolArray"); + var boolReadOnlyCollection = runtimeEntityType.FindProperty("BoolReadOnlyCollection"); var boolToStringConverterProperty = runtimeEntityType.FindProperty("BoolToStringConverterProperty"); var boolToTwoValuesConverterProperty = runtimeEntityType.FindProperty("BoolToTwoValuesConverterProperty"); var boolToZeroOneConverterProperty = runtimeEntityType.FindProperty("BoolToZeroOneConverterProperty"); @@ -13407,12 +13705,14 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var guidToStringConverterProperty = runtimeEntityType.FindProperty("GuidToStringConverterProperty"); var iPAddress = runtimeEntityType.FindProperty("IPAddress"); var iPAddressArray = runtimeEntityType.FindProperty("IPAddressArray"); + var iPAddressReadOnlyCollection = runtimeEntityType.FindProperty("IPAddressReadOnlyCollection"); var iPAddressToBytesConverterProperty = runtimeEntityType.FindProperty("IPAddressToBytesConverterProperty"); var iPAddressToStringConverterProperty = runtimeEntityType.FindProperty("IPAddressToStringConverterProperty"); var int16 = runtimeEntityType.FindProperty("Int16"); var int16Array = runtimeEntityType.FindProperty("Int16Array"); var int32 = runtimeEntityType.FindProperty("Int32"); var int32Array = runtimeEntityType.FindProperty("Int32Array"); + var int32ReadOnlyCollection = runtimeEntityType.FindProperty("Int32ReadOnlyCollection"); var int64 = runtimeEntityType.FindProperty("Int64"); var int64Array = runtimeEntityType.FindProperty("Int64Array"); var int8 = runtimeEntityType.FindProperty("Int8"); @@ -13520,6 +13820,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var physicalAddressToStringConverterProperty = runtimeEntityType.FindProperty("PhysicalAddressToStringConverterProperty"); var @string = runtimeEntityType.FindProperty("String"); var stringArray = runtimeEntityType.FindProperty("StringArray"); + var stringReadOnlyCollection = runtimeEntityType.FindProperty("StringReadOnlyCollection"); var stringToBoolConverterProperty = runtimeEntityType.FindProperty("StringToBoolConverterProperty"); var stringToBytesConverterProperty = runtimeEntityType.FindProperty("StringToBytesConverterProperty"); var stringToCharConverterProperty = runtimeEntityType.FindProperty("StringToCharConverterProperty"); @@ -13550,6 +13851,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var uInt64Array = runtimeEntityType.FindProperty("UInt64Array"); var uInt8 = runtimeEntityType.FindProperty("UInt8"); var uInt8Array = runtimeEntityType.FindProperty("UInt8Array"); + var uInt8ReadOnlyCollection = runtimeEntityType.FindProperty("UInt8ReadOnlyCollection"); var uri = runtimeEntityType.FindProperty("Uri"); var uriArray = runtimeEntityType.FindProperty("UriArray"); var uriToStringConverterProperty = runtimeEntityType.FindProperty("UriToStringConverterProperty"); @@ -13560,21 +13862,23 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) ISnapshot (InternalEntityEntry source) => { var entity = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg = ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), ((ValueComparer)(((IProperty)@bool).GetValueComparer())).Snapshot(source.GetCurrentValue(@bool)), (((IEnumerable)(source.GetCurrentValue(boolArray))) == null ? null : ((bool[])(((ValueComparer>)(((IProperty)boolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(boolArray))))))), ((ValueComparer)(((IProperty)boolToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToStringConverterProperty)), ((ValueComparer)(((IProperty)boolToTwoValuesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToTwoValuesConverterProperty)), ((ValueComparer)(((IProperty)boolToZeroOneConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToZeroOneConverterProperty)), (source.GetCurrentValue(bytes) == null ? null : ((ValueComparer)(((IProperty)bytes).GetValueComparer())).Snapshot(source.GetCurrentValue(bytes))), (((object)(source.GetCurrentValue(bytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)bytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(bytesArray))))))), (source.GetCurrentValue(bytesToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)bytesToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(bytesToStringConverterProperty))), ((ValueComparer)(((IProperty)castingConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(castingConverterProperty)), ((ValueComparer)(((IProperty)@char).GetValueComparer())).Snapshot(source.GetCurrentValue(@char)), (((IEnumerable)(source.GetCurrentValue(charArray))) == null ? null : ((char[])(((ValueComparer>)(((IProperty)charArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(charArray))))))), ((ValueComparer)(((IProperty)charToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(charToStringConverterProperty)), ((ValueComparer)(((IProperty)dateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnly)), (((IEnumerable)(source.GetCurrentValue(dateOnlyArray))) == null ? null : ((DateOnly[])(((ValueComparer>)(((IProperty)dateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateOnlyArray))))))), ((ValueComparer)(((IProperty)dateOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTime)), (((IEnumerable)(source.GetCurrentValue(dateTimeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)dateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateTimeArray))))))), ((ValueComparer)(((IProperty)dateTimeOffsetToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBytesConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToTicksConverterProperty)), ((ValueComparer)(((IProperty)@decimal).GetValueComparer())).Snapshot(source.GetCurrentValue(@decimal)), (((IEnumerable)(source.GetCurrentValue(decimalArray))) == null ? null : ((decimal[])(((ValueComparer>)(((IProperty)decimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(decimalArray))))))), ((ValueComparer)(((IProperty)decimalNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)decimalNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)@double).GetValueComparer())).Snapshot(source.GetCurrentValue(@double)), (((IEnumerable)(source.GetCurrentValue(doubleArray))) == null ? null : ((double[])(((ValueComparer>)(((IProperty)doubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(doubleArray)))))))))); + var liftedArg = ((ISnapshot)(new Snapshot, bool, bool, bool, byte[], byte[][], byte[], int, char, char[], char, DateOnly, DateOnly[], DateOnly, DateTime, DateTime[], DateTimeOffset, DateTimeOffset, DateTimeOffset, DateTime, DateTime, DateTime, decimal, decimal[], decimal, decimal, double>(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), ((ValueComparer)(((IProperty)@bool).GetValueComparer())).Snapshot(source.GetCurrentValue(@bool)), (((IEnumerable)(source.GetCurrentValue(boolArray))) == null ? null : ((bool[])(((ValueComparer>)(((IProperty)boolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(boolArray))))))), (((IEnumerable)(source.GetCurrentValue>(boolReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)boolReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(boolReadOnlyCollection))))))), ((ValueComparer)(((IProperty)boolToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToStringConverterProperty)), ((ValueComparer)(((IProperty)boolToTwoValuesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToTwoValuesConverterProperty)), ((ValueComparer)(((IProperty)boolToZeroOneConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToZeroOneConverterProperty)), (source.GetCurrentValue(bytes) == null ? null : ((ValueComparer)(((IProperty)bytes).GetValueComparer())).Snapshot(source.GetCurrentValue(bytes))), (((object)(source.GetCurrentValue(bytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)bytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(bytesArray))))))), (source.GetCurrentValue(bytesToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)bytesToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(bytesToStringConverterProperty))), ((ValueComparer)(((IProperty)castingConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(castingConverterProperty)), ((ValueComparer)(((IProperty)@char).GetValueComparer())).Snapshot(source.GetCurrentValue(@char)), (((IEnumerable)(source.GetCurrentValue(charArray))) == null ? null : ((char[])(((ValueComparer>)(((IProperty)charArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(charArray))))))), ((ValueComparer)(((IProperty)charToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(charToStringConverterProperty)), ((ValueComparer)(((IProperty)dateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnly)), (((IEnumerable)(source.GetCurrentValue(dateOnlyArray))) == null ? null : ((DateOnly[])(((ValueComparer>)(((IProperty)dateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateOnlyArray))))))), ((ValueComparer)(((IProperty)dateOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTime)), (((IEnumerable)(source.GetCurrentValue(dateTimeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)dateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateTimeArray))))))), ((ValueComparer)(((IProperty)dateTimeOffsetToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBytesConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToTicksConverterProperty)), ((ValueComparer)(((IProperty)@decimal).GetValueComparer())).Snapshot(source.GetCurrentValue(@decimal)), (((IEnumerable)(source.GetCurrentValue(decimalArray))) == null ? null : ((decimal[])(((ValueComparer>)(((IProperty)decimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(decimalArray))))))), ((ValueComparer)(((IProperty)decimalNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)decimalNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)@double).GetValueComparer())).Snapshot(source.GetCurrentValue(@double))))); var entity0 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg0 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], List, List, CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], List, List, CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], List, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32, CompiledModelTestBase.EnumU16, CompiledModelTestBase.EnumU16[]>(((ValueComparer)(((IProperty)doubleNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)doubleNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)enum16).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16)), (((IEnumerable)(source.GetCurrentValue(enum16Array))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16Array))))))), ((ValueComparer)(((IProperty)enum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16AsString)), (((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16Collection))))))), ((ValueComparer)(((IProperty)enum32).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32)), (((IEnumerable)(source.GetCurrentValue(enum32Array))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32Array))))))), ((ValueComparer)(((IProperty)enum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32AsString)), (((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32Collection))))))), ((ValueComparer)(((IProperty)enum64).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64)), (((IEnumerable)(source.GetCurrentValue(enum64Array))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64Array))))))), ((ValueComparer)(((IProperty)enum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64AsString)), (((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64Collection))))))), ((ValueComparer)(((IProperty)enum8).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8)), (((IEnumerable)(source.GetCurrentValue(enum8Array))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8Array))))))), ((ValueComparer)(((IProperty)enum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8AsString)), (((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8Collection))))))), ((ValueComparer)(((IProperty)enumToNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToNumberConverterProperty)), ((ValueComparer)(((IProperty)enumToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToStringConverterProperty)), ((ValueComparer)(((IProperty)enumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16)), (((IEnumerable)(source.GetCurrentValue(enumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16Array)))))))))); + var liftedArg0 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], List, List, CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], List, List, CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], List, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32, CompiledModelTestBase.EnumU16>((((IEnumerable)(source.GetCurrentValue(doubleArray))) == null ? null : ((double[])(((ValueComparer>)(((IProperty)doubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(doubleArray))))))), ((ValueComparer)(((IProperty)doubleNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)doubleNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)enum16).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16)), (((IEnumerable)(source.GetCurrentValue(enum16Array))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16Array))))))), ((ValueComparer)(((IProperty)enum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16AsString)), (((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16Collection))))))), ((ValueComparer)(((IProperty)enum32).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32)), (((IEnumerable)(source.GetCurrentValue(enum32Array))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32Array))))))), ((ValueComparer)(((IProperty)enum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32AsString)), (((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32Collection))))))), ((ValueComparer)(((IProperty)enum64).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64)), (((IEnumerable)(source.GetCurrentValue(enum64Array))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64Array))))))), ((ValueComparer)(((IProperty)enum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64AsString)), (((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64Collection))))))), ((ValueComparer)(((IProperty)enum8).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8)), (((IEnumerable)(source.GetCurrentValue(enum8Array))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8Array))))))), ((ValueComparer)(((IProperty)enum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8AsString)), (((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8Collection))))))), ((ValueComparer)(((IProperty)enumToNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToNumberConverterProperty)), ((ValueComparer)(((IProperty)enumToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToStringConverterProperty)), ((ValueComparer)(((IProperty)enumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16))))); var entity1 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg1 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], List, List, CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], List, List, CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], List, List, float, float[], Guid, Guid[], Guid, Guid, IPAddress, IPAddress[]>(((ValueComparer)(((IProperty)enumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16AsString)), (((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16Collection))))))), ((ValueComparer)(((IProperty)enumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32)), (((IEnumerable)(source.GetCurrentValue(enumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32Array))))))), ((ValueComparer)(((IProperty)enumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32AsString)), (((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32Collection))))))), ((ValueComparer)(((IProperty)enumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64)), (((IEnumerable)(source.GetCurrentValue(enumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64Array))))))), ((ValueComparer)(((IProperty)enumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64AsString)), (((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64Collection))))))), ((ValueComparer)(((IProperty)enumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8)), (((IEnumerable)(source.GetCurrentValue(enumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8Array))))))), ((ValueComparer)(((IProperty)enumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8AsString)), (((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8Collection))))))), ((ValueComparer)(((IProperty)@float).GetValueComparer())).Snapshot(source.GetCurrentValue(@float)), (((IEnumerable)(source.GetCurrentValue(floatArray))) == null ? null : ((float[])(((ValueComparer>)(((IProperty)floatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(floatArray))))))), ((ValueComparer)(((IProperty)guid).GetValueComparer())).Snapshot(source.GetCurrentValue(guid)), (((IEnumerable)(source.GetCurrentValue(guidArray))) == null ? null : ((Guid[])(((ValueComparer>)(((IProperty)guidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(guidArray))))))), ((ValueComparer)(((IProperty)guidToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToBytesConverterProperty)), ((ValueComparer)(((IProperty)guidToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToStringConverterProperty)), (source.GetCurrentValue(iPAddress) == null ? null : ((ValueComparer)(((IProperty)iPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddress))), (((object)(source.GetCurrentValue(iPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)iPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(iPAddressArray)))))))))); + var liftedArg1 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], List, List, CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], List, List, CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], List, List, float, float[], Guid, Guid[], Guid, Guid, IPAddress>((((IEnumerable)(source.GetCurrentValue(enumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16Array))))))), ((ValueComparer)(((IProperty)enumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16AsString)), (((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16Collection))))))), ((ValueComparer)(((IProperty)enumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32)), (((IEnumerable)(source.GetCurrentValue(enumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32Array))))))), ((ValueComparer)(((IProperty)enumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32AsString)), (((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32Collection))))))), ((ValueComparer)(((IProperty)enumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64)), (((IEnumerable)(source.GetCurrentValue(enumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64Array))))))), ((ValueComparer)(((IProperty)enumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64AsString)), (((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64Collection))))))), ((ValueComparer)(((IProperty)enumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8)), (((IEnumerable)(source.GetCurrentValue(enumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8Array))))))), ((ValueComparer)(((IProperty)enumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8AsString)), (((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8Collection))))))), ((ValueComparer)(((IProperty)@float).GetValueComparer())).Snapshot(source.GetCurrentValue(@float)), (((IEnumerable)(source.GetCurrentValue(floatArray))) == null ? null : ((float[])(((ValueComparer>)(((IProperty)floatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(floatArray))))))), ((ValueComparer)(((IProperty)guid).GetValueComparer())).Snapshot(source.GetCurrentValue(guid)), (((IEnumerable)(source.GetCurrentValue(guidArray))) == null ? null : ((Guid[])(((ValueComparer>)(((IProperty)guidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(guidArray))))))), ((ValueComparer)(((IProperty)guidToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToBytesConverterProperty)), ((ValueComparer)(((IProperty)guidToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToStringConverterProperty)), (source.GetCurrentValue(iPAddress) == null ? null : ((ValueComparer)(((IProperty)iPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddress)))))); var entity2 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg2 = ((ISnapshot)(new Snapshot((source.GetCurrentValue(iPAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToBytesConverterProperty))), (source.GetCurrentValue(iPAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToStringConverterProperty))), ((ValueComparer)(((IProperty)int16).GetValueComparer())).Snapshot(source.GetCurrentValue(int16)), (((IEnumerable)(source.GetCurrentValue(int16Array))) == null ? null : ((short[])(((ValueComparer>)(((IProperty)int16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int16Array))))))), ((ValueComparer)(((IProperty)int32).GetValueComparer())).Snapshot(source.GetCurrentValue(int32)), (((IEnumerable)(source.GetCurrentValue(int32Array))) == null ? null : ((int[])(((ValueComparer>)(((IProperty)int32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int32Array))))))), ((ValueComparer)(((IProperty)int64).GetValueComparer())).Snapshot(source.GetCurrentValue(int64)), (((IEnumerable)(source.GetCurrentValue(int64Array))) == null ? null : ((long[])(((ValueComparer>)(((IProperty)int64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int64Array))))))), ((ValueComparer)(((IProperty)int8).GetValueComparer())).Snapshot(source.GetCurrentValue(int8)), (((IEnumerable)(source.GetCurrentValue(int8Array))) == null ? null : ((sbyte[])(((ValueComparer>)(((IProperty)int8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int8Array))))))), ((ValueComparer)(((IProperty)intNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)intNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToStringConverterProperty)), (source.GetCurrentValue(nullIntToNullStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)nullIntToNullStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(nullIntToNullStringConverterProperty))), (source.GetCurrentValue(nullableBool) == null ? null : ((ValueComparer)(((IProperty)nullableBool).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBool))), (((IEnumerable)(source.GetCurrentValue(nullableBoolArray))) == null ? null : ((bool? [])(((ValueComparer>)(((IProperty)nullableBoolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableBoolArray))))))), (source.GetCurrentValue(nullableBytes) == null ? null : ((ValueComparer)(((IProperty)nullableBytes).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBytes))), (((object)(source.GetCurrentValue(nullableBytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)nullableBytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableBytesArray))))))), (source.GetCurrentValue(nullableChar) == null ? null : ((ValueComparer)(((IProperty)nullableChar).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableChar))), (((IEnumerable)(source.GetCurrentValue(nullableCharArray))) == null ? null : ((char? [])(((ValueComparer>)(((IProperty)nullableCharArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableCharArray))))))), (source.GetCurrentValue(nullableDateOnly) == null ? null : ((ValueComparer)(((IProperty)nullableDateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateOnly))), (((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))) == null ? null : ((DateOnly? [])(((ValueComparer>)(((IProperty)nullableDateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))))))), (source.GetCurrentValue(nullableDateTime) == null ? null : ((ValueComparer)(((IProperty)nullableDateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateTime))), (((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))) == null ? null : ((DateTime? [])(((ValueComparer>)(((IProperty)nullableDateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))))))), (source.GetCurrentValue(nullableDecimal) == null ? null : ((ValueComparer)(((IProperty)nullableDecimal).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDecimal))), (((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))) == null ? null : ((decimal? [])(((ValueComparer>)(((IProperty)nullableDecimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))))))), (source.GetCurrentValue(nullableDouble) == null ? null : ((ValueComparer)(((IProperty)nullableDouble).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDouble))), (((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))) == null ? null : ((double? [])(((ValueComparer>)(((IProperty)nullableDoubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))))))), (source.GetCurrentValue(nullableEnum16) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))))))), (source.GetCurrentValue(nullableEnum16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16AsString)))))); + var liftedArg2 = ((ISnapshot)(new Snapshot, IPAddress, IPAddress, short, short[], int, int[], IReadOnlyCollection, long, long[], sbyte, sbyte[], int, int, int?, bool?, bool? [], byte[], byte[][], char?, char? [], DateOnly?, DateOnly? [], DateTime?, DateTime? [], decimal?, decimal? [], double?, double? []>((((object)(source.GetCurrentValue(iPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)iPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(iPAddressArray))))))), (((object)(source.GetCurrentValue>(iPAddressReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer)(((IProperty)iPAddressReadOnlyCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(iPAddressReadOnlyCollection))))))), (source.GetCurrentValue(iPAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToBytesConverterProperty))), (source.GetCurrentValue(iPAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToStringConverterProperty))), ((ValueComparer)(((IProperty)int16).GetValueComparer())).Snapshot(source.GetCurrentValue(int16)), (((IEnumerable)(source.GetCurrentValue(int16Array))) == null ? null : ((short[])(((ValueComparer>)(((IProperty)int16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int16Array))))))), ((ValueComparer)(((IProperty)int32).GetValueComparer())).Snapshot(source.GetCurrentValue(int32)), (((IEnumerable)(source.GetCurrentValue(int32Array))) == null ? null : ((int[])(((ValueComparer>)(((IProperty)int32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int32Array))))))), (((IEnumerable)(source.GetCurrentValue>(int32ReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)int32ReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(int32ReadOnlyCollection))))))), ((ValueComparer)(((IProperty)int64).GetValueComparer())).Snapshot(source.GetCurrentValue(int64)), (((IEnumerable)(source.GetCurrentValue(int64Array))) == null ? null : ((long[])(((ValueComparer>)(((IProperty)int64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int64Array))))))), ((ValueComparer)(((IProperty)int8).GetValueComparer())).Snapshot(source.GetCurrentValue(int8)), (((IEnumerable)(source.GetCurrentValue(int8Array))) == null ? null : ((sbyte[])(((ValueComparer>)(((IProperty)int8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int8Array))))))), ((ValueComparer)(((IProperty)intNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)intNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToStringConverterProperty)), (source.GetCurrentValue(nullIntToNullStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)nullIntToNullStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(nullIntToNullStringConverterProperty))), (source.GetCurrentValue(nullableBool) == null ? null : ((ValueComparer)(((IProperty)nullableBool).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBool))), (((IEnumerable)(source.GetCurrentValue(nullableBoolArray))) == null ? null : ((bool? [])(((ValueComparer>)(((IProperty)nullableBoolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableBoolArray))))))), (source.GetCurrentValue(nullableBytes) == null ? null : ((ValueComparer)(((IProperty)nullableBytes).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBytes))), (((object)(source.GetCurrentValue(nullableBytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)nullableBytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableBytesArray))))))), (source.GetCurrentValue(nullableChar) == null ? null : ((ValueComparer)(((IProperty)nullableChar).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableChar))), (((IEnumerable)(source.GetCurrentValue(nullableCharArray))) == null ? null : ((char? [])(((ValueComparer>)(((IProperty)nullableCharArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableCharArray))))))), (source.GetCurrentValue(nullableDateOnly) == null ? null : ((ValueComparer)(((IProperty)nullableDateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateOnly))), (((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))) == null ? null : ((DateOnly? [])(((ValueComparer>)(((IProperty)nullableDateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))))))), (source.GetCurrentValue(nullableDateTime) == null ? null : ((ValueComparer)(((IProperty)nullableDateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateTime))), (((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))) == null ? null : ((DateTime? [])(((ValueComparer>)(((IProperty)nullableDateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))))))), (source.GetCurrentValue(nullableDecimal) == null ? null : ((ValueComparer)(((IProperty)nullableDecimal).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDecimal))), (((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))) == null ? null : ((decimal? [])(((ValueComparer>)(((IProperty)nullableDecimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))))))), (source.GetCurrentValue(nullableDouble) == null ? null : ((ValueComparer)(((IProperty)nullableDouble).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDouble))), (((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))) == null ? null : ((double? [])(((ValueComparer>)(((IProperty)nullableDoubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDoubleArray)))))))))); var entity3 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg3 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], List, List, CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], List, List, CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], List, List, CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], List, List, CompiledModelTestBase.EnumU32?, CompiledModelTestBase.EnumU32? [], CompiledModelTestBase.EnumU32?>((((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))))))), (source.GetCurrentValue(nullableEnum32) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))))))), (source.GetCurrentValue(nullableEnum32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))))))), (source.GetCurrentValue(nullableEnum64) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))))))), (source.GetCurrentValue(nullableEnum64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))))))), (source.GetCurrentValue(nullableEnum8) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))))))), (source.GetCurrentValue(nullableEnum8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))))))), (source.GetCurrentValue(nullableEnumU16) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))))))), (source.GetCurrentValue(nullableEnumU16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))))))), (source.GetCurrentValue(nullableEnumU32) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))))))), (source.GetCurrentValue(nullableEnumU32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32AsString)))))); + var liftedArg3 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], List, List, CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], List, List, CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], List, List, CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], List, List>((source.GetCurrentValue(nullableEnum16) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))))))), (source.GetCurrentValue(nullableEnum16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))))))), (source.GetCurrentValue(nullableEnum32) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))))))), (source.GetCurrentValue(nullableEnum32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))))))), (source.GetCurrentValue(nullableEnum64) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))))))), (source.GetCurrentValue(nullableEnum64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))))))), (source.GetCurrentValue(nullableEnum8) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))))))), (source.GetCurrentValue(nullableEnum8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))))))), (source.GetCurrentValue(nullableEnumU16) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))))))), (source.GetCurrentValue(nullableEnumU16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection)))))))))); var entity4 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg4 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], List, List, CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], List, List, float?, float? [], Guid?, Guid? [], IPAddress, IPAddress[], short?, short? [], int?, int? [], long?, long? [], sbyte?, sbyte? [], PhysicalAddress>((((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))))))), (source.GetCurrentValue(nullableEnumU64) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))))))), (source.GetCurrentValue(nullableEnumU64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))))))), (source.GetCurrentValue(nullableEnumU8) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))))))), (source.GetCurrentValue(nullableEnumU8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))))))), (source.GetCurrentValue(nullableFloat) == null ? null : ((ValueComparer)(((IProperty)nullableFloat).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableFloat))), (((IEnumerable)(source.GetCurrentValue(nullableFloatArray))) == null ? null : ((float? [])(((ValueComparer>)(((IProperty)nullableFloatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableFloatArray))))))), (source.GetCurrentValue(nullableGuid) == null ? null : ((ValueComparer)(((IProperty)nullableGuid).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableGuid))), (((IEnumerable)(source.GetCurrentValue(nullableGuidArray))) == null ? null : ((Guid? [])(((ValueComparer>)(((IProperty)nullableGuidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableGuidArray))))))), (source.GetCurrentValue(nullableIPAddress) == null ? null : ((ValueComparer)(((IProperty)nullableIPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableIPAddress))), (((object)(source.GetCurrentValue(nullableIPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)nullableIPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableIPAddressArray))))))), (source.GetCurrentValue(nullableInt16) == null ? null : ((ValueComparer)(((IProperty)nullableInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt16))), (((IEnumerable)(source.GetCurrentValue(nullableInt16Array))) == null ? null : ((short? [])(((ValueComparer>)(((IProperty)nullableInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt16Array))))))), (source.GetCurrentValue(nullableInt32) == null ? null : ((ValueComparer)(((IProperty)nullableInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt32))), (((IEnumerable)(source.GetCurrentValue(nullableInt32Array))) == null ? null : ((int? [])(((ValueComparer>)(((IProperty)nullableInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt32Array))))))), (source.GetCurrentValue(nullableInt64) == null ? null : ((ValueComparer)(((IProperty)nullableInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt64))), (((IEnumerable)(source.GetCurrentValue(nullableInt64Array))) == null ? null : ((long? [])(((ValueComparer>)(((IProperty)nullableInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt64Array))))))), (source.GetCurrentValue(nullableInt8) == null ? null : ((ValueComparer)(((IProperty)nullableInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt8))), (((IEnumerable)(source.GetCurrentValue(nullableInt8Array))) == null ? null : ((sbyte? [])(((ValueComparer>)(((IProperty)nullableInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt8Array))))))), (source.GetCurrentValue(nullablePhysicalAddress) == null ? null : ((ValueComparer)(((IProperty)nullablePhysicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullablePhysicalAddress)))))); + var liftedArg4 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], List, List, CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], List, List, float?, float? [], Guid?, Guid? [], IPAddress, IPAddress[], short?, short? [], int?, int? [], long?, long? []>((source.GetCurrentValue(nullableEnumU32) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))))))), (source.GetCurrentValue(nullableEnumU32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))))))), (source.GetCurrentValue(nullableEnumU64) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))))))), (source.GetCurrentValue(nullableEnumU64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))))))), (source.GetCurrentValue(nullableEnumU8) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))))))), (source.GetCurrentValue(nullableEnumU8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))))))), (source.GetCurrentValue(nullableFloat) == null ? null : ((ValueComparer)(((IProperty)nullableFloat).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableFloat))), (((IEnumerable)(source.GetCurrentValue(nullableFloatArray))) == null ? null : ((float? [])(((ValueComparer>)(((IProperty)nullableFloatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableFloatArray))))))), (source.GetCurrentValue(nullableGuid) == null ? null : ((ValueComparer)(((IProperty)nullableGuid).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableGuid))), (((IEnumerable)(source.GetCurrentValue(nullableGuidArray))) == null ? null : ((Guid? [])(((ValueComparer>)(((IProperty)nullableGuidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableGuidArray))))))), (source.GetCurrentValue(nullableIPAddress) == null ? null : ((ValueComparer)(((IProperty)nullableIPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableIPAddress))), (((object)(source.GetCurrentValue(nullableIPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)nullableIPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableIPAddressArray))))))), (source.GetCurrentValue(nullableInt16) == null ? null : ((ValueComparer)(((IProperty)nullableInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt16))), (((IEnumerable)(source.GetCurrentValue(nullableInt16Array))) == null ? null : ((short? [])(((ValueComparer>)(((IProperty)nullableInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt16Array))))))), (source.GetCurrentValue(nullableInt32) == null ? null : ((ValueComparer)(((IProperty)nullableInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt32))), (((IEnumerable)(source.GetCurrentValue(nullableInt32Array))) == null ? null : ((int? [])(((ValueComparer>)(((IProperty)nullableInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt32Array))))))), (source.GetCurrentValue(nullableInt64) == null ? null : ((ValueComparer)(((IProperty)nullableInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt64))), (((IEnumerable)(source.GetCurrentValue(nullableInt64Array))) == null ? null : ((long? [])(((ValueComparer>)(((IProperty)nullableInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt64Array)))))))))); var entity5 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg5 = ((ISnapshot)(new Snapshot((((object)(source.GetCurrentValue(nullablePhysicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)nullablePhysicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullablePhysicalAddressArray))))))), (source.GetCurrentValue(nullableString) == null ? null : ((ValueComparer)(((IProperty)nullableString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableString))), (((object)(source.GetCurrentValue(nullableStringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)nullableStringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringArray))))))), (source.GetCurrentValue(nullableTimeOnly) == null ? null : ((ValueComparer)(((IProperty)nullableTimeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeOnly))), (((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))) == null ? null : ((TimeOnly? [])(((ValueComparer>)(((IProperty)nullableTimeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))))))), (source.GetCurrentValue(nullableTimeSpan) == null ? null : ((ValueComparer)(((IProperty)nullableTimeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeSpan))), (((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))) == null ? null : ((TimeSpan? [])(((ValueComparer>)(((IProperty)nullableTimeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))))))), (source.GetCurrentValue(nullableUInt16) == null ? null : ((ValueComparer)(((IProperty)nullableUInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt16))), (((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))) == null ? null : ((ushort? [])(((ValueComparer>)(((IProperty)nullableUInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))))))), (source.GetCurrentValue(nullableUInt32) == null ? null : ((ValueComparer)(((IProperty)nullableUInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt32))), (((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))) == null ? null : ((uint? [])(((ValueComparer>)(((IProperty)nullableUInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))))))), (source.GetCurrentValue(nullableUInt64) == null ? null : ((ValueComparer)(((IProperty)nullableUInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt64))), (((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))) == null ? null : ((ulong? [])(((ValueComparer>)(((IProperty)nullableUInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))))))), (source.GetCurrentValue(nullableUInt8) == null ? null : ((ValueComparer)(((IProperty)nullableUInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt8))), (((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))) == null ? null : ((byte? [])(((ValueComparer>)(((IProperty)nullableUInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))))))), (source.GetCurrentValue(nullableUri) == null ? null : ((ValueComparer)(((IProperty)nullableUri).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUri))), (((object)(source.GetCurrentValue(nullableUriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)nullableUriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableUriArray))))))), (source.GetCurrentValue(physicalAddress) == null ? null : ((ValueComparer)(((IProperty)physicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddress))), (((object)(source.GetCurrentValue(physicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)physicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(physicalAddressArray))))))), (source.GetCurrentValue(physicalAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToBytesConverterProperty))), (source.GetCurrentValue(physicalAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToStringConverterProperty))), (source.GetCurrentValue(@string) == null ? null : ((ValueComparer)(((IProperty)@string).GetValueComparer())).Snapshot(source.GetCurrentValue(@string))), (((object)(source.GetCurrentValue(stringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)stringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringArray))))))), (source.GetCurrentValue(stringToBoolConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBoolConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBoolConverterProperty))), (source.GetCurrentValue(stringToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBytesConverterProperty))), (source.GetCurrentValue(stringToCharConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToCharConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToCharConverterProperty))), (source.GetCurrentValue(stringToDateOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateOnlyConverterProperty))), (source.GetCurrentValue(stringToDateTimeConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeConverterProperty))), (source.GetCurrentValue(stringToDateTimeOffsetConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeOffsetConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeOffsetConverterProperty))), (source.GetCurrentValue(stringToDecimalNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDecimalNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDecimalNumberConverterProperty)))))); + var liftedArg5 = ((ISnapshot)(new Snapshot, string, string, string>((source.GetCurrentValue(nullableInt8) == null ? null : ((ValueComparer)(((IProperty)nullableInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt8))), (((IEnumerable)(source.GetCurrentValue(nullableInt8Array))) == null ? null : ((sbyte? [])(((ValueComparer>)(((IProperty)nullableInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt8Array))))))), (source.GetCurrentValue(nullablePhysicalAddress) == null ? null : ((ValueComparer)(((IProperty)nullablePhysicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullablePhysicalAddress))), (((object)(source.GetCurrentValue(nullablePhysicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)nullablePhysicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullablePhysicalAddressArray))))))), (source.GetCurrentValue(nullableString) == null ? null : ((ValueComparer)(((IProperty)nullableString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableString))), (((object)(source.GetCurrentValue(nullableStringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)nullableStringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringArray))))))), (source.GetCurrentValue(nullableTimeOnly) == null ? null : ((ValueComparer)(((IProperty)nullableTimeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeOnly))), (((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))) == null ? null : ((TimeOnly? [])(((ValueComparer>)(((IProperty)nullableTimeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))))))), (source.GetCurrentValue(nullableTimeSpan) == null ? null : ((ValueComparer)(((IProperty)nullableTimeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeSpan))), (((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))) == null ? null : ((TimeSpan? [])(((ValueComparer>)(((IProperty)nullableTimeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))))))), (source.GetCurrentValue(nullableUInt16) == null ? null : ((ValueComparer)(((IProperty)nullableUInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt16))), (((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))) == null ? null : ((ushort? [])(((ValueComparer>)(((IProperty)nullableUInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))))))), (source.GetCurrentValue(nullableUInt32) == null ? null : ((ValueComparer)(((IProperty)nullableUInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt32))), (((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))) == null ? null : ((uint? [])(((ValueComparer>)(((IProperty)nullableUInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))))))), (source.GetCurrentValue(nullableUInt64) == null ? null : ((ValueComparer)(((IProperty)nullableUInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt64))), (((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))) == null ? null : ((ulong? [])(((ValueComparer>)(((IProperty)nullableUInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))))))), (source.GetCurrentValue(nullableUInt8) == null ? null : ((ValueComparer)(((IProperty)nullableUInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt8))), (((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))) == null ? null : ((byte? [])(((ValueComparer>)(((IProperty)nullableUInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))))))), (source.GetCurrentValue(nullableUri) == null ? null : ((ValueComparer)(((IProperty)nullableUri).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUri))), (((object)(source.GetCurrentValue(nullableUriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)nullableUriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableUriArray))))))), (source.GetCurrentValue(physicalAddress) == null ? null : ((ValueComparer)(((IProperty)physicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddress))), (((object)(source.GetCurrentValue(physicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)physicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(physicalAddressArray))))))), (source.GetCurrentValue(physicalAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToBytesConverterProperty))), (source.GetCurrentValue(physicalAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToStringConverterProperty))), (source.GetCurrentValue(@string) == null ? null : ((ValueComparer)(((IProperty)@string).GetValueComparer())).Snapshot(source.GetCurrentValue(@string))), (((object)(source.GetCurrentValue(stringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)stringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringArray))))))), (((object)(source.GetCurrentValue>(stringReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer)(((IProperty)stringReadOnlyCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(stringReadOnlyCollection))))))), (source.GetCurrentValue(stringToBoolConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBoolConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBoolConverterProperty))), (source.GetCurrentValue(stringToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBytesConverterProperty))), (source.GetCurrentValue(stringToCharConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToCharConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToCharConverterProperty)))))); var entity6 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - return ((ISnapshot)(new MultiSnapshot(new ISnapshot[] { liftedArg, liftedArg0, liftedArg1, liftedArg2, liftedArg3, liftedArg4, liftedArg5, ((ISnapshot)(new Snapshot((source.GetCurrentValue(stringToDoubleNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDoubleNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDoubleNumberConverterProperty))), (source.GetCurrentValue(stringToEnumConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToEnumConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToEnumConverterProperty))), (source.GetCurrentValue(stringToGuidConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToGuidConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToGuidConverterProperty))), (source.GetCurrentValue(stringToIntNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToIntNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToIntNumberConverterProperty))), (source.GetCurrentValue(stringToTimeOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeOnlyConverterProperty))), (source.GetCurrentValue(stringToTimeSpanConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeSpanConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeSpanConverterProperty))), (source.GetCurrentValue(stringToUriConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToUriConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToUriConverterProperty))), ((ValueComparer)(((IProperty)timeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnly)), (((IEnumerable)(source.GetCurrentValue(timeOnlyArray))) == null ? null : ((TimeOnly[])(((ValueComparer>)(((IProperty)timeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeOnlyArray))))))), ((ValueComparer)(((IProperty)timeOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)timeOnlyToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToTicksConverterProperty)), ((ValueComparer)(((IProperty)timeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpan)), (((IEnumerable)(source.GetCurrentValue(timeSpanArray))) == null ? null : ((TimeSpan[])(((ValueComparer>)(((IProperty)timeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeSpanArray))))))), ((ValueComparer)(((IProperty)timeSpanToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToStringConverterProperty)), ((ValueComparer)(((IProperty)timeSpanToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToTicksConverterProperty)), ((ValueComparer)(((IProperty)uInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt16)), (((IEnumerable)(source.GetCurrentValue(uInt16Array))) == null ? null : ((ushort[])(((ValueComparer>)(((IProperty)uInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt16Array))))))), ((ValueComparer)(((IProperty)uInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt32)), (((IEnumerable)(source.GetCurrentValue(uInt32Array))) == null ? null : ((uint[])(((ValueComparer>)(((IProperty)uInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt32Array))))))), ((ValueComparer)(((IProperty)uInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt64)), (((IEnumerable)(source.GetCurrentValue(uInt64Array))) == null ? null : ((ulong[])(((ValueComparer>)(((IProperty)uInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt64Array))))))), ((ValueComparer)(((IProperty)uInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8)), (source.GetCurrentValue(uInt8Array) == null ? null : ((ValueComparer)(((IProperty)uInt8Array).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8Array))), (source.GetCurrentValue(uri) == null ? null : ((ValueComparer)(((IProperty)uri).GetValueComparer())).Snapshot(source.GetCurrentValue(uri))), (((object)(source.GetCurrentValue(uriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)uriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(uriArray))))))), (source.GetCurrentValue(uriToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)uriToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(uriToStringConverterProperty)))))) }))); + var liftedArg6 = ((ISnapshot)(new Snapshot, Uri, Uri[]>((source.GetCurrentValue(stringToDateOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateOnlyConverterProperty))), (source.GetCurrentValue(stringToDateTimeConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeConverterProperty))), (source.GetCurrentValue(stringToDateTimeOffsetConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeOffsetConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeOffsetConverterProperty))), (source.GetCurrentValue(stringToDecimalNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDecimalNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDecimalNumberConverterProperty))), (source.GetCurrentValue(stringToDoubleNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDoubleNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDoubleNumberConverterProperty))), (source.GetCurrentValue(stringToEnumConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToEnumConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToEnumConverterProperty))), (source.GetCurrentValue(stringToGuidConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToGuidConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToGuidConverterProperty))), (source.GetCurrentValue(stringToIntNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToIntNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToIntNumberConverterProperty))), (source.GetCurrentValue(stringToTimeOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeOnlyConverterProperty))), (source.GetCurrentValue(stringToTimeSpanConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeSpanConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeSpanConverterProperty))), (source.GetCurrentValue(stringToUriConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToUriConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToUriConverterProperty))), ((ValueComparer)(((IProperty)timeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnly)), (((IEnumerable)(source.GetCurrentValue(timeOnlyArray))) == null ? null : ((TimeOnly[])(((ValueComparer>)(((IProperty)timeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeOnlyArray))))))), ((ValueComparer)(((IProperty)timeOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)timeOnlyToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToTicksConverterProperty)), ((ValueComparer)(((IProperty)timeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpan)), (((IEnumerable)(source.GetCurrentValue(timeSpanArray))) == null ? null : ((TimeSpan[])(((ValueComparer>)(((IProperty)timeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeSpanArray))))))), ((ValueComparer)(((IProperty)timeSpanToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToStringConverterProperty)), ((ValueComparer)(((IProperty)timeSpanToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToTicksConverterProperty)), ((ValueComparer)(((IProperty)uInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt16)), (((IEnumerable)(source.GetCurrentValue(uInt16Array))) == null ? null : ((ushort[])(((ValueComparer>)(((IProperty)uInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt16Array))))))), ((ValueComparer)(((IProperty)uInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt32)), (((IEnumerable)(source.GetCurrentValue(uInt32Array))) == null ? null : ((uint[])(((ValueComparer>)(((IProperty)uInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt32Array))))))), ((ValueComparer)(((IProperty)uInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt64)), (((IEnumerable)(source.GetCurrentValue(uInt64Array))) == null ? null : ((ulong[])(((ValueComparer>)(((IProperty)uInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt64Array))))))), ((ValueComparer)(((IProperty)uInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8)), (source.GetCurrentValue(uInt8Array) == null ? null : ((ValueComparer)(((IProperty)uInt8Array).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8Array))), (((IEnumerable)(source.GetCurrentValue>(uInt8ReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)uInt8ReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(uInt8ReadOnlyCollection))))))), (source.GetCurrentValue(uri) == null ? null : ((ValueComparer)(((IProperty)uri).GetValueComparer())).Snapshot(source.GetCurrentValue(uri))), (((object)(source.GetCurrentValue(uriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)uriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(uriArray)))))))))); + var entity7 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); + return ((ISnapshot)(new MultiSnapshot(new ISnapshot[] { liftedArg, liftedArg0, liftedArg1, liftedArg2, liftedArg3, liftedArg4, liftedArg5, liftedArg6, ((ISnapshot)(new Snapshot((source.GetCurrentValue(uriToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)uriToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(uriToStringConverterProperty)))))) }))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( ISnapshot () => ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(default(CompiledModelTestBase.ManyTypesId)))))); @@ -13587,14 +13891,14 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); + var entity8 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))))); }); runtimeEntityType.Counts = new PropertyCounts( - propertyCount: 236, + propertyCount: 241, navigationCount: 0, complexPropertyCount: 0, - originalValueCount: 236, + originalValueCount: 241, shadowCount: 0, relationshipCount: 1, storeGeneratedCount: 1); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs index 8212477912e..48de8dc1ceb 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/ManyTypesUnsafeAccessors.cs @@ -22,6 +22,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref bool[] BoolArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_boolReadOnlyCollection")] + public static extern ref List _boolReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref bool BoolToStringConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -283,6 +286,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref IPAddress[] IPAddressArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_ipAddressReadOnlyCollection")] + public static extern ref List _ipAddressReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref IPAddress IPAddressToBytesConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -301,6 +307,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref int[] Int32Array(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_int32ReadOnlyCollection")] + public static extern ref List _int32ReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref long Int64(CompiledModelTestBase.ManyTypes @this); @@ -622,6 +631,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref string[] StringArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_stringReadOnlyCollection")] + public static extern ref List _stringReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref string StringToBoolConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -712,6 +724,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref byte[] UInt8Array(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_uInt8ReadOnlyCollection")] + public static extern ref List _uInt8ReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref Uri Uri(CompiledModelTestBase.ManyTypes @this); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs index d63c8493182..79b5b18a799 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedType0EntityType.cs @@ -752,7 +752,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>(((ValueComparer)(((IProperty)principalDerivedId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedId)), ((ValueComparer)(((IProperty)principalDerivedAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedAlternateId)), ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), (source.GetCurrentValue(details) == null ? null : ((ValueComparer)(((IProperty)details).GetValueComparer())).Snapshot(source.GetCurrentValue(details))), ((ValueComparer)(((IProperty)number).GetValueComparer())).Snapshot(source.GetCurrentValue(number)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -766,7 +766,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalDerivedId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedId)), ((ValueComparer)(((IProperty)principalDerivedAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedAlternateId)), ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs index f12a723509e..24d880519c5 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/OwnedTypeEntityType.cs @@ -760,7 +760,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>(((ValueComparer)(((IProperty)principalBaseId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalBaseId)), ((ValueComparer)(((IProperty)principalBaseAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalBaseAlternateId)), (source.GetCurrentValue(details) == null ? null : ((ValueComparer)(((IProperty)details).GetValueComparer())).Snapshot(source.GetCurrentValue(details))), ((ValueComparer)(((IProperty)number).GetValueComparer())).Snapshot(source.GetCurrentValue(number)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -774,7 +774,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalBaseId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalBaseId)), ((ValueComparer)(((IProperty)principalBaseAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalBaseAlternateId))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs index fc198d54d90..536f05b1307 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBaseEntityType.cs @@ -921,7 +921,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); + var entity8 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), ((ValueComparer)(((IProperty)enum1).GetValueComparer())).Snapshot(source.GetCurrentValue(enum1)), (source.GetCurrentValue(enum2) == null ? null : ((ValueComparer)(((IProperty)enum2).GetValueComparer())).Snapshot(source.GetCurrentValue(enum2))), ((ValueComparer)(((IProperty)flagsEnum1).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum1)), ((ValueComparer)(((IProperty)flagsEnum2).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum2)), (source.GetCurrentValue(point) == null ? null : ((ValueComparer)(((IProperty)point).GetValueComparer())).Snapshot(source.GetCurrentValue(point))), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -935,8 +935,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); - return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity7), (object)(null)))); + var entity8 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); + return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity8), (object)(null)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 15, diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index f2b9562ce0d..4220d8c41d7 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -364,7 +364,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((Dictionary)(source.Entity)); + var entity8 = ((Dictionary)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)derivedsId).GetValueComparer())).Snapshot(source.GetCurrentValue(derivedsId)), ((ValueComparer)(((IProperty)derivedsAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(derivedsAlternateId)), ((ValueComparer)(((IProperty)principalsId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalsId)), ((ValueComparer)(((IProperty)principalsAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalsAlternateId)), (source.GetCurrentValue(rowid) == null ? null : ((ValueComparer)(((IProperty)rowid).GetValueComparer())).Snapshot(source.GetCurrentValue(rowid)))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -378,7 +378,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((Dictionary)(source.Entity)); + var entity8 = ((Dictionary)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)derivedsId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(derivedsId)), ((ValueComparer)(((IProperty)derivedsAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(derivedsAlternateId)), ((ValueComparer)(((IProperty)principalsId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalsId)), ((ValueComparer)(((IProperty)principalsAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalsAlternateId))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalDerivedEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalDerivedEntityType.cs index 7100bcc554a..ad880509d18 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalDerivedEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel/PrincipalDerivedEntityType.cs @@ -122,7 +122,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); + var entity8 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), ((ValueComparer)(((IProperty)enum1).GetValueComparer())).Snapshot(source.GetCurrentValue(enum1)), (source.GetCurrentValue(enum2) == null ? null : ((ValueComparer)(((IProperty)enum2).GetValueComparer())).Snapshot(source.GetCurrentValue(enum2))), ((ValueComparer)(((IProperty)flagsEnum1).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum1)), ((ValueComparer)(((IProperty)flagsEnum2).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum2)), (source.GetCurrentValue(point) == null ? null : ((ValueComparer)(((IProperty)point).GetValueComparer())).Snapshot(source.GetCurrentValue(point))), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -136,8 +136,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); - return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity7), (object)(null), PrincipalDerivedUnsafeAccessors>.Dependent(entity7), SnapshotFactoryFactory.SnapshotCollection(PrincipalDerivedUnsafeAccessors>.ManyOwned(entity7)), (object)(null)))); + var entity8 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); + return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity8), (object)(null), PrincipalDerivedUnsafeAccessors>.Dependent(entity8), SnapshotFactoryFactory.SnapshotCollection(PrincipalDerivedUnsafeAccessors>.ManyOwned(entity8)), (object)(null)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 15, diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DbContextModelBuilder.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DbContextModelBuilder.cs index 51d94698789..358b107b0dd 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DbContextModelBuilder.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DbContextModelBuilder.cs @@ -254,6 +254,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Bool", boolColumnBase); var boolArrayColumnBase = new ColumnBase("BoolArray", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolArray", boolArrayColumnBase); + var boolReadOnlyCollectionColumnBase = new ColumnBase("BoolReadOnlyCollection", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolReadOnlyCollection", boolReadOnlyCollectionColumnBase); var boolToStringConverterPropertyColumnBase = new ColumnBase("BoolToStringConverterProperty", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("BoolToStringConverterProperty", boolToStringConverterPropertyColumnBase); var boolToTwoValuesConverterPropertyColumnBase = new ColumnBase("BoolToTwoValuesConverterProperty", "INTEGER", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -428,6 +430,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddress", iPAddressColumnBase); var iPAddressArrayColumnBase = new ColumnBase("IPAddressArray", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressArray", iPAddressArrayColumnBase); + var iPAddressReadOnlyCollectionColumnBase = new ColumnBase("IPAddressReadOnlyCollection", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressReadOnlyCollection", iPAddressReadOnlyCollectionColumnBase); var iPAddressToBytesConverterPropertyColumnBase = new ColumnBase("IPAddressToBytesConverterProperty", "BLOB", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("IPAddressToBytesConverterProperty", iPAddressToBytesConverterPropertyColumnBase); var iPAddressToStringConverterPropertyColumnBase = new ColumnBase("IPAddressToStringConverterProperty", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -442,6 +446,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32", int32ColumnBase); var int32ArrayColumnBase = new ColumnBase("Int32Array", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32Array", int32ArrayColumnBase); + var int32ReadOnlyCollectionColumnBase = new ColumnBase("Int32ReadOnlyCollection", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int32ReadOnlyCollection", int32ReadOnlyCollectionColumnBase); var int64ColumnBase = new ColumnBase("Int64", "INTEGER", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Int64", int64ColumnBase); var int64ArrayColumnBase = new ColumnBase("Int64Array", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -776,6 +782,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("String", stringColumnBase); var stringArrayColumnBase = new ColumnBase("StringArray", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringArray", stringArrayColumnBase); + var stringReadOnlyCollectionColumnBase = new ColumnBase("StringReadOnlyCollection", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringReadOnlyCollection", stringReadOnlyCollectionColumnBase); var stringToBoolConverterPropertyColumnBase = new ColumnBase("StringToBoolConverterProperty", "INTEGER", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("StringToBoolConverterProperty", stringToBoolConverterPropertyColumnBase); var stringToBytesConverterPropertyColumnBase = new ColumnBase("StringToBytesConverterProperty", "BLOB", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase) @@ -839,6 +847,8 @@ private IRelationalModel CreateRelationalModel() microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8", uInt8ColumnBase); var uInt8ArrayColumnBase = new ColumnBase("UInt8Array", "BLOB", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8Array", uInt8ArrayColumnBase); + var uInt8ReadOnlyCollectionColumnBase = new ColumnBase("UInt8ReadOnlyCollection", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); + microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("UInt8ReadOnlyCollection", uInt8ReadOnlyCollectionColumnBase); var uriColumnBase = new ColumnBase("Uri", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase.Columns.Add("Uri", uriColumnBase); var uriArrayColumnBase = new ColumnBase("UriArray", "TEXT", microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesTableBase); @@ -852,6 +862,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)idColumnBase1, manyTypes.FindProperty("Id")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolColumnBase, manyTypes.FindProperty("Bool")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolArrayColumnBase, manyTypes.FindProperty("BoolArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)boolReadOnlyCollectionColumnBase, manyTypes.FindProperty("BoolReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToStringConverterPropertyColumnBase, manyTypes.FindProperty("BoolToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToTwoValuesConverterPropertyColumnBase, manyTypes.FindProperty("BoolToTwoValuesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)boolToZeroOneConverterPropertyColumnBase, manyTypes.FindProperty("BoolToZeroOneConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -939,12 +950,14 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)guidToStringConverterPropertyColumnBase, manyTypes.FindProperty("GuidToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressColumnBase, manyTypes.FindProperty("IPAddress")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressArrayColumnBase, manyTypes.FindProperty("IPAddressArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)iPAddressReadOnlyCollectionColumnBase, manyTypes.FindProperty("IPAddressReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressToBytesConverterPropertyColumnBase, manyTypes.FindProperty("IPAddressToBytesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)iPAddressToStringConverterPropertyColumnBase, manyTypes.FindProperty("IPAddressToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int16ColumnBase, manyTypes.FindProperty("Int16")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int16ArrayColumnBase, manyTypes.FindProperty("Int16Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int32ColumnBase, manyTypes.FindProperty("Int32")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int32ArrayColumnBase, manyTypes.FindProperty("Int32Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)int32ReadOnlyCollectionColumnBase, manyTypes.FindProperty("Int32ReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int64ColumnBase, manyTypes.FindProperty("Int64")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int64ArrayColumnBase, manyTypes.FindProperty("Int64Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)int8ColumnBase, manyTypes.FindProperty("Int8")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -1052,6 +1065,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)physicalAddressToStringConverterPropertyColumnBase, manyTypes.FindProperty("PhysicalAddressToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringColumnBase, manyTypes.FindProperty("String")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringArrayColumnBase, manyTypes.FindProperty("StringArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)stringReadOnlyCollectionColumnBase, manyTypes.FindProperty("StringReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToBoolConverterPropertyColumnBase, manyTypes.FindProperty("StringToBoolConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToBytesConverterPropertyColumnBase, manyTypes.FindProperty("StringToBytesConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)stringToCharConverterPropertyColumnBase, manyTypes.FindProperty("StringToCharConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -1082,6 +1096,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping((ColumnBase)uInt64ArrayColumnBase, manyTypes.FindProperty("UInt64Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uInt8ColumnBase, manyTypes.FindProperty("UInt8")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uInt8ArrayColumnBase, manyTypes.FindProperty("UInt8Array")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); + RelationalModel.CreateColumnMapping((ColumnBase)uInt8ReadOnlyCollectionColumnBase, manyTypes.FindProperty("UInt8ReadOnlyCollection")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriColumnBase, manyTypes.FindProperty("Uri")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriArrayColumnBase, manyTypes.FindProperty("UriArray")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); RelationalModel.CreateColumnMapping((ColumnBase)uriToStringConverterPropertyColumnBase, manyTypes.FindProperty("UriToStringConverterProperty")!, microsoftEntityFrameworkCoreScaffoldingCompiledModelTestBaseManyTypesMappingBase); @@ -1098,6 +1113,9 @@ private IRelationalModel CreateRelationalModel() var boolArrayColumn = new Column("BoolArray", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("BoolArray", boolArrayColumn); boolArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolArrayColumn); + var boolReadOnlyCollectionColumn = new Column("BoolReadOnlyCollection", "TEXT", manyTypesTable); + manyTypesTable.Columns.Add("BoolReadOnlyCollection", boolReadOnlyCollectionColumn); + boolReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolReadOnlyCollectionColumn); var boolToStringConverterPropertyColumn = new Column("BoolToStringConverterProperty", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("BoolToStringConverterProperty", boolToStringConverterPropertyColumn); boolToStringConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(boolToStringConverterPropertyColumn); @@ -1359,6 +1377,9 @@ private IRelationalModel CreateRelationalModel() var iPAddressArrayColumn = new Column("IPAddressArray", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("IPAddressArray", iPAddressArrayColumn); iPAddressArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressArrayColumn); + var iPAddressReadOnlyCollectionColumn = new Column("IPAddressReadOnlyCollection", "TEXT", manyTypesTable); + manyTypesTable.Columns.Add("IPAddressReadOnlyCollection", iPAddressReadOnlyCollectionColumn); + iPAddressReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressReadOnlyCollectionColumn); var iPAddressToBytesConverterPropertyColumn = new Column("IPAddressToBytesConverterProperty", "BLOB", manyTypesTable); manyTypesTable.Columns.Add("IPAddressToBytesConverterProperty", iPAddressToBytesConverterPropertyColumn); iPAddressToBytesConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(iPAddressToBytesConverterPropertyColumn); @@ -1377,6 +1398,9 @@ private IRelationalModel CreateRelationalModel() var int32ArrayColumn = new Column("Int32Array", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("Int32Array", int32ArrayColumn); int32ArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(int32ArrayColumn); + var int32ReadOnlyCollectionColumn = new Column("Int32ReadOnlyCollection", "TEXT", manyTypesTable); + manyTypesTable.Columns.Add("Int32ReadOnlyCollection", int32ReadOnlyCollectionColumn); + int32ReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(int32ReadOnlyCollectionColumn); var int64Column = new Column("Int64", "INTEGER", manyTypesTable); manyTypesTable.Columns.Add("Int64", int64Column); int64Column.Accessors = ColumnAccessorsFactory.CreateGeneric(int64Column); @@ -1818,6 +1842,9 @@ private IRelationalModel CreateRelationalModel() var stringArrayColumn = new Column("StringArray", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("StringArray", stringArrayColumn); stringArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringArrayColumn); + var stringReadOnlyCollectionColumn = new Column("StringReadOnlyCollection", "TEXT", manyTypesTable); + manyTypesTable.Columns.Add("StringReadOnlyCollection", stringReadOnlyCollectionColumn); + stringReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringReadOnlyCollectionColumn); var stringToBoolConverterPropertyColumn = new Column("StringToBoolConverterProperty", "INTEGER", manyTypesTable); manyTypesTable.Columns.Add("StringToBoolConverterProperty", stringToBoolConverterPropertyColumn); stringToBoolConverterPropertyColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(stringToBoolConverterPropertyColumn); @@ -1911,6 +1938,9 @@ private IRelationalModel CreateRelationalModel() var uInt8ArrayColumn = new Column("UInt8Array", "BLOB", manyTypesTable); manyTypesTable.Columns.Add("UInt8Array", uInt8ArrayColumn); uInt8ArrayColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uInt8ArrayColumn); + var uInt8ReadOnlyCollectionColumn = new Column("UInt8ReadOnlyCollection", "TEXT", manyTypesTable); + manyTypesTable.Columns.Add("UInt8ReadOnlyCollection", uInt8ReadOnlyCollectionColumn); + uInt8ReadOnlyCollectionColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uInt8ReadOnlyCollectionColumn); var uriColumn = new Column("Uri", "TEXT", manyTypesTable); manyTypesTable.Columns.Add("Uri", uriColumn); uriColumn.Accessors = ColumnAccessorsFactory.CreateGeneric(uriColumn); @@ -1927,6 +1957,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(idColumn1, manyTypes.FindProperty("Id")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolColumn, manyTypes.FindProperty("Bool")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolArrayColumn, manyTypes.FindProperty("BoolArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(boolReadOnlyCollectionColumn, manyTypes.FindProperty("BoolReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToStringConverterPropertyColumn, manyTypes.FindProperty("BoolToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToTwoValuesConverterPropertyColumn, manyTypes.FindProperty("BoolToTwoValuesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(boolToZeroOneConverterPropertyColumn, manyTypes.FindProperty("BoolToZeroOneConverterProperty")!, manyTypesTableMapping); @@ -2014,12 +2045,14 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(guidToStringConverterPropertyColumn, manyTypes.FindProperty("GuidToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressColumn, manyTypes.FindProperty("IPAddress")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressArrayColumn, manyTypes.FindProperty("IPAddressArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(iPAddressReadOnlyCollectionColumn, manyTypes.FindProperty("IPAddressReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressToBytesConverterPropertyColumn, manyTypes.FindProperty("IPAddressToBytesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(iPAddressToStringConverterPropertyColumn, manyTypes.FindProperty("IPAddressToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int16Column, manyTypes.FindProperty("Int16")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int16ArrayColumn, manyTypes.FindProperty("Int16Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int32Column, manyTypes.FindProperty("Int32")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int32ArrayColumn, manyTypes.FindProperty("Int32Array")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(int32ReadOnlyCollectionColumn, manyTypes.FindProperty("Int32ReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int64Column, manyTypes.FindProperty("Int64")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int64ArrayColumn, manyTypes.FindProperty("Int64Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(int8Column, manyTypes.FindProperty("Int8")!, manyTypesTableMapping); @@ -2127,6 +2160,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(physicalAddressToStringConverterPropertyColumn, manyTypes.FindProperty("PhysicalAddressToStringConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringColumn, manyTypes.FindProperty("String")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringArrayColumn, manyTypes.FindProperty("StringArray")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(stringReadOnlyCollectionColumn, manyTypes.FindProperty("StringReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToBoolConverterPropertyColumn, manyTypes.FindProperty("StringToBoolConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToBytesConverterPropertyColumn, manyTypes.FindProperty("StringToBytesConverterProperty")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(stringToCharConverterPropertyColumn, manyTypes.FindProperty("StringToCharConverterProperty")!, manyTypesTableMapping); @@ -2157,6 +2191,7 @@ private IRelationalModel CreateRelationalModel() RelationalModel.CreateColumnMapping(uInt64ArrayColumn, manyTypes.FindProperty("UInt64Array")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uInt8Column, manyTypes.FindProperty("UInt8")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uInt8ArrayColumn, manyTypes.FindProperty("UInt8Array")!, manyTypesTableMapping); + RelationalModel.CreateColumnMapping(uInt8ReadOnlyCollectionColumn, manyTypes.FindProperty("UInt8ReadOnlyCollection")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriColumn, manyTypes.FindProperty("Uri")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriArrayColumn, manyTypes.FindProperty("UriArray")!, manyTypesTableMapping); RelationalModel.CreateColumnMapping(uriToStringConverterPropertyColumn, manyTypes.FindProperty("UriToStringConverterProperty")!, manyTypesTableMapping); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs index 20abdabdfbd..47a40af869a 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/DependentDerivedEntityType.cs @@ -96,7 +96,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); + var entity8 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), ((ValueComparer)(((IProperty)enumDiscriminator).GetValueComparer())).Snapshot(source.GetCurrentValue(enumDiscriminator)), (source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), (source.GetCurrentValue(data) == null ? null : ((ValueComparer)(((IProperty)data).GetValueComparer())).Snapshot(source.GetCurrentValue(data))), ((ValueComparer)(((IProperty)money).GetValueComparer())).Snapshot(source.GetCurrentValue(money))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -110,8 +110,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); - return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), DependentBaseUnsafeAccessors.Principal(entity7)))); + var entity8 = ((CompiledModelTestBase.DependentDerived)(source.Entity)); + return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalId)), ((ValueComparer)(((IProperty)principalAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalAlternateId)), DependentBaseUnsafeAccessors.Principal(entity8)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 6, diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs index af1a40407f3..2fec0bb509e 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesEntityType.cs @@ -35,7 +35,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes", typeof(CompiledModelTestBase.ManyTypes), baseEntityType, - propertyCount: 236, + propertyCount: 241, keyCount: 1); var id = runtimeEntityType.AddProperty( @@ -195,6 +195,65 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); + var boolReadOnlyCollection = runtimeEntityType.AddProperty( + "BoolReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_boolReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + boolReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(instance) == null); + boolReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) = ((List)(value))); + boolReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._boolReadOnlyCollection(entity) = ((List)(value))); + boolReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._boolReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(boolReadOnlyCollection, 3), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(boolReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[3]); + boolReadOnlyCollection.SetPropertyIndexes( + index: 3, + originalValueIndex: 3, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + boolReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, bool>(new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v)), + keyComparer: new ListOfValueTypesComparer, bool>(new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, bool>( + JsonBoolReaderWriter.Instance)), + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, bool>( + JsonBoolReaderWriter.Instance), + elementMapping: BoolTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + keyComparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + providerValueComparer: new ValueComparer( + bool (bool v1, bool v2) => v1 == v2, + int (bool v) => ((object)v).GetHashCode(), + bool (bool v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "INTEGER"))); + var boolToStringConverterProperty = runtimeEntityType.AddProperty( "BoolToStringConverterProperty", typeof(bool), @@ -212,12 +271,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToStringConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToStringConverterProperty, 3), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToStringConverterProperty, 4), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[3]); + object (ValueBuffer valueBuffer) => valueBuffer[4]); boolToStringConverterProperty.SetPropertyIndexes( - index: 3, - originalValueIndex: 3, + index: 4, + originalValueIndex: 4, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -263,12 +322,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToTwoValuesConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToTwoValuesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToTwoValuesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToTwoValuesConverterProperty, 4), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToTwoValuesConverterProperty, 5), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToTwoValuesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[4]); + object (ValueBuffer valueBuffer) => valueBuffer[5]); boolToTwoValuesConverterProperty.SetPropertyIndexes( - index: 4, - originalValueIndex: 4, + index: 5, + originalValueIndex: 5, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -315,12 +374,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas boolToZeroOneConverterProperty.SetAccessors( bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToZeroOneConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BoolToZeroOneConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToZeroOneConverterProperty, 5), + bool (InternalEntityEntry entry) => entry.ReadOriginalValue(boolToZeroOneConverterProperty, 6), bool (InternalEntityEntry entry) => entry.GetCurrentValue(boolToZeroOneConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[5]); + object (ValueBuffer valueBuffer) => valueBuffer[6]); boolToZeroOneConverterProperty.SetPropertyIndexes( - index: 5, - originalValueIndex: 5, + index: 6, + originalValueIndex: 6, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -366,12 +425,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytes.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Bytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Bytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytes, 6), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytes, 7), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(bytes), - object (ValueBuffer valueBuffer) => valueBuffer[6]); + object (ValueBuffer valueBuffer) => valueBuffer[7]); bytes.SetPropertyIndexes( - index: 6, - originalValueIndex: 6, + index: 7, + originalValueIndex: 7, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -406,12 +465,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytesArray.SetAccessors( byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesArray, 7), + byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesArray, 8), byte[][] (InternalEntityEntry entry) => entry.GetCurrentValue(bytesArray), - object (ValueBuffer valueBuffer) => valueBuffer[7]); + object (ValueBuffer valueBuffer) => valueBuffer[8]); bytesArray.SetPropertyIndexes( - index: 7, - originalValueIndex: 7, + index: 8, + originalValueIndex: 8, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -465,12 +524,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas bytesToStringConverterProperty.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.BytesToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesToStringConverterProperty, 8), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(bytesToStringConverterProperty, 9), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(bytesToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[8]); + object (ValueBuffer valueBuffer) => valueBuffer[9]); bytesToStringConverterProperty.SetPropertyIndexes( - index: 8, - originalValueIndex: 8, + index: 9, + originalValueIndex: 9, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -514,12 +573,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas castingConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CastingConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CastingConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(castingConverterProperty, 9), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(castingConverterProperty, 10), int (InternalEntityEntry entry) => entry.GetCurrentValue(castingConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[9]); + object (ValueBuffer valueBuffer) => valueBuffer[10]); castingConverterProperty.SetPropertyIndexes( - index: 9, - originalValueIndex: 9, + index: 10, + originalValueIndex: 10, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -564,12 +623,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @char.SetAccessors( char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Char(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Char(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char (InternalEntityEntry entry) => entry.ReadOriginalValue(@char, 10), + char (InternalEntityEntry entry) => entry.ReadOriginalValue(@char, 11), char (InternalEntityEntry entry) => entry.GetCurrentValue(@char), - object (ValueBuffer valueBuffer) => valueBuffer[10]); + object (ValueBuffer valueBuffer) => valueBuffer[11]); @char.SetPropertyIndexes( - index: 10, - originalValueIndex: 10, + index: 11, + originalValueIndex: 11, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -606,12 +665,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas charArray.SetAccessors( char[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char[] (InternalEntityEntry entry) => entry.ReadOriginalValue(charArray, 11), + char[] (InternalEntityEntry entry) => entry.ReadOriginalValue(charArray, 12), char[] (InternalEntityEntry entry) => entry.GetCurrentValue(charArray), - object (ValueBuffer valueBuffer) => valueBuffer[11]); + object (ValueBuffer valueBuffer) => valueBuffer[12]); charArray.SetPropertyIndexes( - index: 11, - originalValueIndex: 11, + index: 12, + originalValueIndex: 12, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -666,12 +725,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas charToStringConverterProperty.SetAccessors( char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.CharToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char (InternalEntityEntry entry) => entry.ReadOriginalValue(charToStringConverterProperty, 12), + char (InternalEntityEntry entry) => entry.ReadOriginalValue(charToStringConverterProperty, 13), char (InternalEntityEntry entry) => entry.GetCurrentValue(charToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[12]); + object (ValueBuffer valueBuffer) => valueBuffer[13]); charToStringConverterProperty.SetPropertyIndexes( - index: 12, - originalValueIndex: 12, + index: 13, + originalValueIndex: 13, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -718,12 +777,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnly.SetAccessors( DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnly, 13), + DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnly, 14), DateOnly (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnly), - object (ValueBuffer valueBuffer) => valueBuffer[13]); + object (ValueBuffer valueBuffer) => valueBuffer[14]); dateOnly.SetPropertyIndexes( - index: 13, - originalValueIndex: 13, + index: 14, + originalValueIndex: 14, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -746,12 +805,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnlyArray.SetAccessors( DateOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyArray, 14), + DateOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyArray, 15), DateOnly[] (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[14]); + object (ValueBuffer valueBuffer) => valueBuffer[15]); dateOnlyArray.SetPropertyIndexes( - index: 14, - originalValueIndex: 14, + index: 15, + originalValueIndex: 15, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -792,12 +851,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateOnlyToStringConverterProperty.SetAccessors( DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyToStringConverterProperty, 15), + DateOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(dateOnlyToStringConverterProperty, 16), DateOnly (InternalEntityEntry entry) => entry.GetCurrentValue(dateOnlyToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[15]); + object (ValueBuffer valueBuffer) => valueBuffer[16]); dateOnlyToStringConverterProperty.SetPropertyIndexes( - index: 15, - originalValueIndex: 15, + index: 16, + originalValueIndex: 16, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -844,12 +903,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTime.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTime, 16), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTime, 17), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTime), - object (ValueBuffer valueBuffer) => valueBuffer[16]); + object (ValueBuffer valueBuffer) => valueBuffer[17]); dateTime.SetPropertyIndexes( - index: 16, - originalValueIndex: 16, + index: 17, + originalValueIndex: 17, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -872,12 +931,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeArray.SetAccessors( DateTime[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeArray, 17), + DateTime[] (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeArray, 18), DateTime[] (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeArray), - object (ValueBuffer valueBuffer) => valueBuffer[17]); + object (ValueBuffer valueBuffer) => valueBuffer[18]); dateTimeArray.SetPropertyIndexes( - index: 17, - originalValueIndex: 17, + index: 18, + originalValueIndex: 18, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -918,12 +977,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToBinaryConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBinaryConverterProperty, 18), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBinaryConverterProperty, 19), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[18]); + object (ValueBuffer valueBuffer) => valueBuffer[19]); dateTimeOffsetToBinaryConverterProperty.SetPropertyIndexes( - index: 18, - originalValueIndex: 18, + index: 19, + originalValueIndex: 19, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -970,12 +1029,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToBytesConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBytesConverterProperty, 19), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToBytesConverterProperty, 20), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[19]); + object (ValueBuffer valueBuffer) => valueBuffer[20]); dateTimeOffsetToBytesConverterProperty.SetPropertyIndexes( - index: 19, - originalValueIndex: 19, + index: 20, + originalValueIndex: 20, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1022,12 +1081,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeOffsetToStringConverterProperty.SetAccessors( DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTimeOffset (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeOffsetToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToStringConverterProperty, 20), + DateTimeOffset (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeOffsetToStringConverterProperty, 21), DateTimeOffset (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeOffsetToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[20]); + object (ValueBuffer valueBuffer) => valueBuffer[21]); dateTimeOffsetToStringConverterProperty.SetPropertyIndexes( - index: 20, - originalValueIndex: 20, + index: 21, + originalValueIndex: 21, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1074,12 +1133,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToBinaryConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToBinaryConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToBinaryConverterProperty, 21), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToBinaryConverterProperty, 22), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToBinaryConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[21]); + object (ValueBuffer valueBuffer) => valueBuffer[22]); dateTimeToBinaryConverterProperty.SetPropertyIndexes( - index: 21, - originalValueIndex: 21, + index: 22, + originalValueIndex: 22, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1126,12 +1185,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToStringConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToStringConverterProperty, 22), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToStringConverterProperty, 23), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[22]); + object (ValueBuffer valueBuffer) => valueBuffer[23]); dateTimeToStringConverterProperty.SetPropertyIndexes( - index: 22, - originalValueIndex: 22, + index: 23, + originalValueIndex: 23, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1178,12 +1237,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas dateTimeToTicksConverterProperty.SetAccessors( DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DateTimeToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToTicksConverterProperty, 23), + DateTime (InternalEntityEntry entry) => entry.ReadOriginalValue(dateTimeToTicksConverterProperty, 24), DateTime (InternalEntityEntry entry) => entry.GetCurrentValue(dateTimeToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[23]); + object (ValueBuffer valueBuffer) => valueBuffer[24]); dateTimeToTicksConverterProperty.SetPropertyIndexes( - index: 23, - originalValueIndex: 23, + index: 24, + originalValueIndex: 24, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1207,12 +1266,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @decimal.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Decimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Decimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(@decimal, 24), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(@decimal, 25), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(@decimal), - object (ValueBuffer valueBuffer) => valueBuffer[24]); + object (ValueBuffer valueBuffer) => valueBuffer[25]); @decimal.SetPropertyIndexes( - index: 24, - originalValueIndex: 24, + index: 25, + originalValueIndex: 25, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1235,12 +1294,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalArray.SetAccessors( decimal[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal[] (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalArray, 25), + decimal[] (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalArray, 26), decimal[] (InternalEntityEntry entry) => entry.GetCurrentValue(decimalArray), - object (ValueBuffer valueBuffer) => valueBuffer[25]); + object (ValueBuffer valueBuffer) => valueBuffer[26]); decimalArray.SetPropertyIndexes( - index: 25, - originalValueIndex: 25, + index: 26, + originalValueIndex: 26, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1281,12 +1340,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalNumberToBytesConverterProperty.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToBytesConverterProperty, 26), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToBytesConverterProperty, 27), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(decimalNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[26]); + object (ValueBuffer valueBuffer) => valueBuffer[27]); decimalNumberToBytesConverterProperty.SetPropertyIndexes( - index: 26, - originalValueIndex: 26, + index: 27, + originalValueIndex: 27, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1333,12 +1392,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas decimalNumberToStringConverterProperty.SetAccessors( decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DecimalNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToStringConverterProperty, 27), + decimal (InternalEntityEntry entry) => entry.ReadOriginalValue(decimalNumberToStringConverterProperty, 28), decimal (InternalEntityEntry entry) => entry.GetCurrentValue(decimalNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[27]); + object (ValueBuffer valueBuffer) => valueBuffer[28]); decimalNumberToStringConverterProperty.SetPropertyIndexes( - index: 27, - originalValueIndex: 27, + index: 28, + originalValueIndex: 28, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1385,12 +1444,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @double.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Double(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Double(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(@double, 28), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(@double, 29), double (InternalEntityEntry entry) => entry.GetCurrentValue(@double), - object (ValueBuffer valueBuffer) => valueBuffer[28]); + object (ValueBuffer valueBuffer) => valueBuffer[29]); @double.SetPropertyIndexes( - index: 28, - originalValueIndex: 28, + index: 29, + originalValueIndex: 29, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1427,12 +1486,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleArray.SetAccessors( double[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double[] (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleArray, 29), + double[] (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleArray, 30), double[] (InternalEntityEntry entry) => entry.GetCurrentValue(doubleArray), - object (ValueBuffer valueBuffer) => valueBuffer[29]); + object (ValueBuffer valueBuffer) => valueBuffer[30]); doubleArray.SetPropertyIndexes( - index: 29, - originalValueIndex: 29, + index: 30, + originalValueIndex: 30, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1487,12 +1546,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleNumberToBytesConverterProperty.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToBytesConverterProperty, 30), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToBytesConverterProperty, 31), double (InternalEntityEntry entry) => entry.GetCurrentValue(doubleNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[30]); + object (ValueBuffer valueBuffer) => valueBuffer[31]); doubleNumberToBytesConverterProperty.SetPropertyIndexes( - index: 30, - originalValueIndex: 30, + index: 31, + originalValueIndex: 31, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1539,12 +1598,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas doubleNumberToStringConverterProperty.SetAccessors( double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.DoubleNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToStringConverterProperty, 31), + double (InternalEntityEntry entry) => entry.ReadOriginalValue(doubleNumberToStringConverterProperty, 32), double (InternalEntityEntry entry) => entry.GetCurrentValue(doubleNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[31]); + object (ValueBuffer valueBuffer) => valueBuffer[32]); doubleNumberToStringConverterProperty.SetPropertyIndexes( - index: 31, - originalValueIndex: 31, + index: 32, + originalValueIndex: 32, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1590,12 +1649,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16.SetAccessors( CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16, 32), + CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16, 33), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.GetCurrentValue(enum16), - object (ValueBuffer valueBuffer) => valueBuffer[32]); + object (ValueBuffer valueBuffer) => valueBuffer[33]); enum16.SetPropertyIndexes( - index: 32, - originalValueIndex: 32, + index: 33, + originalValueIndex: 33, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1641,12 +1700,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16Array.SetAccessors( CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16Array, 33), + CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16Array, 34), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum16Array), - object (ValueBuffer valueBuffer) => valueBuffer[33]); + object (ValueBuffer valueBuffer) => valueBuffer[34]); enum16Array.SetPropertyIndexes( - index: 33, - originalValueIndex: 33, + index: 34, + originalValueIndex: 34, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1717,12 +1776,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsString.SetAccessors( CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsString, 34), + CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsString, 35), CompiledModelTestBase.Enum16 (InternalEntityEntry entry) => entry.GetCurrentValue(enum16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[34]); + object (ValueBuffer valueBuffer) => valueBuffer[35]); enum16AsString.SetPropertyIndexes( - index: 34, - originalValueIndex: 34, + index: 35, + originalValueIndex: 35, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1766,12 +1825,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsStringArray.SetAccessors( CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsStringArray, 35), + CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum16AsStringArray, 36), CompiledModelTestBase.Enum16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[35]); + object (ValueBuffer valueBuffer) => valueBuffer[36]); enum16AsStringArray.SetPropertyIndexes( - index: 35, - originalValueIndex: 35, + index: 36, + originalValueIndex: 36, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1839,12 +1898,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16AsStringCollection, 36), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16AsStringCollection, 37), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[36]); + object (ValueBuffer valueBuffer) => valueBuffer[37]); enum16AsStringCollection.SetPropertyIndexes( - index: 36, - originalValueIndex: 36, + index: 37, + originalValueIndex: 37, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1912,12 +1971,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16Collection, 37), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum16Collection, 38), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[37]); + object (ValueBuffer valueBuffer) => valueBuffer[38]); enum16Collection.SetPropertyIndexes( - index: 37, - originalValueIndex: 37, + index: 38, + originalValueIndex: 38, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -1987,12 +2046,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32, 38), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32, 39), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enum32), - object (ValueBuffer valueBuffer) => valueBuffer[38]); + object (ValueBuffer valueBuffer) => valueBuffer[39]); enum32.SetPropertyIndexes( - index: 38, - originalValueIndex: 38, + index: 39, + originalValueIndex: 39, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2038,12 +2097,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32Array.SetAccessors( CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32Array, 39), + CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32Array, 40), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum32Array), - object (ValueBuffer valueBuffer) => valueBuffer[39]); + object (ValueBuffer valueBuffer) => valueBuffer[40]); enum32Array.SetPropertyIndexes( - index: 39, - originalValueIndex: 39, + index: 40, + originalValueIndex: 40, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2114,12 +2173,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsString.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsString, 40), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsString, 41), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enum32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[40]); + object (ValueBuffer valueBuffer) => valueBuffer[41]); enum32AsString.SetPropertyIndexes( - index: 40, - originalValueIndex: 40, + index: 41, + originalValueIndex: 41, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2163,12 +2222,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsStringArray.SetAccessors( CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsStringArray, 41), + CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum32AsStringArray, 42), CompiledModelTestBase.Enum32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[41]); + object (ValueBuffer valueBuffer) => valueBuffer[42]); enum32AsStringArray.SetPropertyIndexes( - index: 41, - originalValueIndex: 41, + index: 42, + originalValueIndex: 42, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2236,12 +2295,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32AsStringCollection, 42), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32AsStringCollection, 43), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[42]); + object (ValueBuffer valueBuffer) => valueBuffer[43]); enum32AsStringCollection.SetPropertyIndexes( - index: 42, - originalValueIndex: 42, + index: 43, + originalValueIndex: 43, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2309,12 +2368,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32Collection, 43), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum32Collection, 44), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[43]); + object (ValueBuffer valueBuffer) => valueBuffer[44]); enum32Collection.SetPropertyIndexes( - index: 43, - originalValueIndex: 43, + index: 44, + originalValueIndex: 44, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2384,12 +2443,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64.SetAccessors( CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64, 44), + CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64, 45), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.GetCurrentValue(enum64), - object (ValueBuffer valueBuffer) => valueBuffer[44]); + object (ValueBuffer valueBuffer) => valueBuffer[45]); enum64.SetPropertyIndexes( - index: 44, - originalValueIndex: 44, + index: 45, + originalValueIndex: 45, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2435,12 +2494,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64Array.SetAccessors( CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64Array, 45), + CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64Array, 46), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum64Array), - object (ValueBuffer valueBuffer) => valueBuffer[45]); + object (ValueBuffer valueBuffer) => valueBuffer[46]); enum64Array.SetPropertyIndexes( - index: 45, - originalValueIndex: 45, + index: 46, + originalValueIndex: 46, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2511,12 +2570,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsString.SetAccessors( CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsString, 46), + CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsString, 47), CompiledModelTestBase.Enum64 (InternalEntityEntry entry) => entry.GetCurrentValue(enum64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[46]); + object (ValueBuffer valueBuffer) => valueBuffer[47]); enum64AsString.SetPropertyIndexes( - index: 46, - originalValueIndex: 46, + index: 47, + originalValueIndex: 47, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2560,12 +2619,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsStringArray.SetAccessors( CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsStringArray, 47), + CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum64AsStringArray, 48), CompiledModelTestBase.Enum64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[47]); + object (ValueBuffer valueBuffer) => valueBuffer[48]); enum64AsStringArray.SetPropertyIndexes( - index: 47, - originalValueIndex: 47, + index: 48, + originalValueIndex: 48, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2633,12 +2692,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64AsStringCollection, 48), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64AsStringCollection, 49), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[48]); + object (ValueBuffer valueBuffer) => valueBuffer[49]); enum64AsStringCollection.SetPropertyIndexes( - index: 48, - originalValueIndex: 48, + index: 49, + originalValueIndex: 49, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2706,12 +2765,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64Collection, 49), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum64Collection, 50), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[49]); + object (ValueBuffer valueBuffer) => valueBuffer[50]); enum64Collection.SetPropertyIndexes( - index: 49, - originalValueIndex: 49, + index: 50, + originalValueIndex: 50, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2781,12 +2840,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8.SetAccessors( CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8, 50), + CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8, 51), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.GetCurrentValue(enum8), - object (ValueBuffer valueBuffer) => valueBuffer[50]); + object (ValueBuffer valueBuffer) => valueBuffer[51]); enum8.SetPropertyIndexes( - index: 50, - originalValueIndex: 50, + index: 51, + originalValueIndex: 51, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2832,12 +2891,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8Array.SetAccessors( CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8Array, 51), + CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8Array, 52), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum8Array), - object (ValueBuffer valueBuffer) => valueBuffer[51]); + object (ValueBuffer valueBuffer) => valueBuffer[52]); enum8Array.SetPropertyIndexes( - index: 51, - originalValueIndex: 51, + index: 52, + originalValueIndex: 52, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2908,12 +2967,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsString.SetAccessors( CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsString, 52), + CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsString, 53), CompiledModelTestBase.Enum8 (InternalEntityEntry entry) => entry.GetCurrentValue(enum8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[52]); + object (ValueBuffer valueBuffer) => valueBuffer[53]); enum8AsString.SetPropertyIndexes( - index: 52, - originalValueIndex: 52, + index: 53, + originalValueIndex: 53, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -2957,12 +3016,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsStringArray.SetAccessors( CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsStringArray, 53), + CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enum8AsStringArray, 54), CompiledModelTestBase.Enum8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enum8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[53]); + object (ValueBuffer valueBuffer) => valueBuffer[54]); enum8AsStringArray.SetPropertyIndexes( - index: 53, - originalValueIndex: 53, + index: 54, + originalValueIndex: 54, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3030,12 +3089,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8AsStringCollection, 54), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8AsStringCollection, 55), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[54]); + object (ValueBuffer valueBuffer) => valueBuffer[55]); enum8AsStringCollection.SetPropertyIndexes( - index: 54, - originalValueIndex: 54, + index: 55, + originalValueIndex: 55, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3103,12 +3162,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enum8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Enum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8Collection, 55), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enum8Collection, 56), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enum8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[55]); + object (ValueBuffer valueBuffer) => valueBuffer[56]); enum8Collection.SetPropertyIndexes( - index: 55, - originalValueIndex: 55, + index: 56, + originalValueIndex: 56, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3179,12 +3238,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumToNumberConverterProperty.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToNumberConverterProperty, 56), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToNumberConverterProperty, 57), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumToNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[56]); + object (ValueBuffer valueBuffer) => valueBuffer[57]); enumToNumberConverterProperty.SetPropertyIndexes( - index: 56, - originalValueIndex: 56, + index: 57, + originalValueIndex: 57, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3231,12 +3290,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumToStringConverterProperty.SetAccessors( CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToStringConverterProperty, 57), + CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumToStringConverterProperty, 58), CompiledModelTestBase.Enum32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[57]); + object (ValueBuffer valueBuffer) => valueBuffer[58]); enumToStringConverterProperty.SetPropertyIndexes( - index: 57, - originalValueIndex: 57, + index: 58, + originalValueIndex: 58, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3280,12 +3339,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16.SetAccessors( CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16, 58), + CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16, 59), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16), - object (ValueBuffer valueBuffer) => valueBuffer[58]); + object (ValueBuffer valueBuffer) => valueBuffer[59]); enumU16.SetPropertyIndexes( - index: 58, - originalValueIndex: 58, + index: 59, + originalValueIndex: 59, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3331,12 +3390,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16Array.SetAccessors( CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16Array, 59), + CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16Array, 60), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16Array), - object (ValueBuffer valueBuffer) => valueBuffer[59]); + object (ValueBuffer valueBuffer) => valueBuffer[60]); enumU16Array.SetPropertyIndexes( - index: 59, - originalValueIndex: 59, + index: 60, + originalValueIndex: 60, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3407,12 +3466,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsString.SetAccessors( CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsString, 60), + CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsString, 61), CompiledModelTestBase.EnumU16 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[60]); + object (ValueBuffer valueBuffer) => valueBuffer[61]); enumU16AsString.SetPropertyIndexes( - index: 60, - originalValueIndex: 60, + index: 61, + originalValueIndex: 61, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3456,12 +3515,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsStringArray.SetAccessors( CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsStringArray, 61), + CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU16AsStringArray, 62), CompiledModelTestBase.EnumU16[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[61]); + object (ValueBuffer valueBuffer) => valueBuffer[62]); enumU16AsStringArray.SetPropertyIndexes( - index: 61, - originalValueIndex: 61, + index: 62, + originalValueIndex: 62, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3529,12 +3588,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16AsStringCollection, 62), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16AsStringCollection, 63), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[62]); + object (ValueBuffer valueBuffer) => valueBuffer[63]); enumU16AsStringCollection.SetPropertyIndexes( - index: 62, - originalValueIndex: 62, + index: 63, + originalValueIndex: 63, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3602,12 +3661,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16Collection, 63), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU16Collection, 64), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[63]); + object (ValueBuffer valueBuffer) => valueBuffer[64]); enumU16Collection.SetPropertyIndexes( - index: 63, - originalValueIndex: 63, + index: 64, + originalValueIndex: 64, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3677,12 +3736,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32.SetAccessors( CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32, 64), + CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32, 65), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32), - object (ValueBuffer valueBuffer) => valueBuffer[64]); + object (ValueBuffer valueBuffer) => valueBuffer[65]); enumU32.SetPropertyIndexes( - index: 64, - originalValueIndex: 64, + index: 65, + originalValueIndex: 65, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3728,12 +3787,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32Array.SetAccessors( CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32Array, 65), + CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32Array, 66), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32Array), - object (ValueBuffer valueBuffer) => valueBuffer[65]); + object (ValueBuffer valueBuffer) => valueBuffer[66]); enumU32Array.SetPropertyIndexes( - index: 65, - originalValueIndex: 65, + index: 66, + originalValueIndex: 66, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3804,12 +3863,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsString.SetAccessors( CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsString, 66), + CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsString, 67), CompiledModelTestBase.EnumU32 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[66]); + object (ValueBuffer valueBuffer) => valueBuffer[67]); enumU32AsString.SetPropertyIndexes( - index: 66, - originalValueIndex: 66, + index: 67, + originalValueIndex: 67, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3853,12 +3912,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsStringArray.SetAccessors( CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsStringArray, 67), + CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU32AsStringArray, 68), CompiledModelTestBase.EnumU32[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[67]); + object (ValueBuffer valueBuffer) => valueBuffer[68]); enumU32AsStringArray.SetPropertyIndexes( - index: 67, - originalValueIndex: 67, + index: 68, + originalValueIndex: 68, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3926,12 +3985,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32AsStringCollection, 68), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32AsStringCollection, 69), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[68]); + object (ValueBuffer valueBuffer) => valueBuffer[69]); enumU32AsStringCollection.SetPropertyIndexes( - index: 68, - originalValueIndex: 68, + index: 69, + originalValueIndex: 69, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -3999,12 +4058,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32Collection, 69), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU32Collection, 70), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[69]); + object (ValueBuffer valueBuffer) => valueBuffer[70]); enumU32Collection.SetPropertyIndexes( - index: 69, - originalValueIndex: 69, + index: 70, + originalValueIndex: 70, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4074,12 +4133,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64.SetAccessors( CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64, 70), + CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64, 71), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64), - object (ValueBuffer valueBuffer) => valueBuffer[70]); + object (ValueBuffer valueBuffer) => valueBuffer[71]); enumU64.SetPropertyIndexes( - index: 70, - originalValueIndex: 70, + index: 71, + originalValueIndex: 71, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4123,12 +4182,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64Array.SetAccessors( CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64Array, 71), + CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64Array, 72), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64Array), - object (ValueBuffer valueBuffer) => valueBuffer[71]); + object (ValueBuffer valueBuffer) => valueBuffer[72]); enumU64Array.SetPropertyIndexes( - index: 71, - originalValueIndex: 71, + index: 72, + originalValueIndex: 72, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4197,12 +4256,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsString.SetAccessors( CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsString, 72), + CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsString, 73), CompiledModelTestBase.EnumU64 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[72]); + object (ValueBuffer valueBuffer) => valueBuffer[73]); enumU64AsString.SetPropertyIndexes( - index: 72, - originalValueIndex: 72, + index: 73, + originalValueIndex: 73, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4246,12 +4305,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsStringArray.SetAccessors( CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsStringArray, 73), + CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU64AsStringArray, 74), CompiledModelTestBase.EnumU64[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[73]); + object (ValueBuffer valueBuffer) => valueBuffer[74]); enumU64AsStringArray.SetPropertyIndexes( - index: 73, - originalValueIndex: 73, + index: 74, + originalValueIndex: 74, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4319,12 +4378,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64AsStringCollection, 74), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64AsStringCollection, 75), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[74]); + object (ValueBuffer valueBuffer) => valueBuffer[75]); enumU64AsStringCollection.SetPropertyIndexes( - index: 74, - originalValueIndex: 74, + index: 75, + originalValueIndex: 75, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4392,12 +4451,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64Collection, 75), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU64Collection, 76), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[75]); + object (ValueBuffer valueBuffer) => valueBuffer[76]); enumU64Collection.SetPropertyIndexes( - index: 75, - originalValueIndex: 75, + index: 76, + originalValueIndex: 76, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4465,12 +4524,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8.SetAccessors( CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8, 76), + CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8, 77), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8), - object (ValueBuffer valueBuffer) => valueBuffer[76]); + object (ValueBuffer valueBuffer) => valueBuffer[77]); enumU8.SetPropertyIndexes( - index: 76, - originalValueIndex: 76, + index: 77, + originalValueIndex: 77, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4516,12 +4575,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8Array.SetAccessors( CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8Array, 77), + CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8Array, 78), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8Array), - object (ValueBuffer valueBuffer) => valueBuffer[77]); + object (ValueBuffer valueBuffer) => valueBuffer[78]); enumU8Array.SetPropertyIndexes( - index: 77, - originalValueIndex: 77, + index: 78, + originalValueIndex: 78, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4592,12 +4651,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsString.SetAccessors( CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsString, 78), + CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsString, 79), CompiledModelTestBase.EnumU8 (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[78]); + object (ValueBuffer valueBuffer) => valueBuffer[79]); enumU8AsString.SetPropertyIndexes( - index: 78, - originalValueIndex: 78, + index: 79, + originalValueIndex: 79, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4641,12 +4700,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsStringArray.SetAccessors( CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsStringArray, 79), + CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.ReadOriginalValue(enumU8AsStringArray, 80), CompiledModelTestBase.EnumU8[] (InternalEntityEntry entry) => entry.GetCurrentValue(enumU8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[79]); + object (ValueBuffer valueBuffer) => valueBuffer[80]); enumU8AsStringArray.SetPropertyIndexes( - index: 79, - originalValueIndex: 79, + index: 80, + originalValueIndex: 80, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4714,12 +4773,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8AsStringCollection, 80), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8AsStringCollection, 81), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[80]); + object (ValueBuffer valueBuffer) => valueBuffer[81]); enumU8AsStringCollection.SetPropertyIndexes( - index: 80, - originalValueIndex: 80, + index: 81, + originalValueIndex: 81, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4787,12 +4846,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas enumU8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.EnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8Collection, 81), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(enumU8Collection, 82), List (InternalEntityEntry entry) => entry.GetCurrentValue>(enumU8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[81]); + object (ValueBuffer valueBuffer) => valueBuffer[82]); enumU8Collection.SetPropertyIndexes( - index: 81, - originalValueIndex: 81, + index: 82, + originalValueIndex: 82, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4863,12 +4922,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @float.SetAccessors( float (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Float(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Float(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float (InternalEntityEntry entry) => entry.ReadOriginalValue(@float, 82), + float (InternalEntityEntry entry) => entry.ReadOriginalValue(@float, 83), float (InternalEntityEntry entry) => entry.GetCurrentValue(@float), - object (ValueBuffer valueBuffer) => valueBuffer[82]); + object (ValueBuffer valueBuffer) => valueBuffer[83]); @float.SetPropertyIndexes( - index: 82, - originalValueIndex: 82, + index: 83, + originalValueIndex: 83, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4905,12 +4964,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas floatArray.SetAccessors( float[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.FloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.FloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float[] (InternalEntityEntry entry) => entry.ReadOriginalValue(floatArray, 83), + float[] (InternalEntityEntry entry) => entry.ReadOriginalValue(floatArray, 84), float[] (InternalEntityEntry entry) => entry.GetCurrentValue(floatArray), - object (ValueBuffer valueBuffer) => valueBuffer[83]); + object (ValueBuffer valueBuffer) => valueBuffer[84]); floatArray.SetPropertyIndexes( - index: 83, - originalValueIndex: 83, + index: 84, + originalValueIndex: 84, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4965,12 +5024,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guid.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Guid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Guid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guid, 84), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guid, 85), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guid), - object (ValueBuffer valueBuffer) => valueBuffer[84]); + object (ValueBuffer valueBuffer) => valueBuffer[85]); guid.SetPropertyIndexes( - index: 84, - originalValueIndex: 84, + index: 85, + originalValueIndex: 85, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -4993,12 +5052,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidArray.SetAccessors( Guid[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid[] (InternalEntityEntry entry) => entry.ReadOriginalValue(guidArray, 85), + Guid[] (InternalEntityEntry entry) => entry.ReadOriginalValue(guidArray, 86), Guid[] (InternalEntityEntry entry) => entry.GetCurrentValue(guidArray), - object (ValueBuffer valueBuffer) => valueBuffer[85]); + object (ValueBuffer valueBuffer) => valueBuffer[86]); guidArray.SetPropertyIndexes( - index: 85, - originalValueIndex: 85, + index: 86, + originalValueIndex: 86, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5039,12 +5098,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidToBytesConverterProperty.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToBytesConverterProperty, 86), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToBytesConverterProperty, 87), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guidToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[86]); + object (ValueBuffer valueBuffer) => valueBuffer[87]); guidToBytesConverterProperty.SetPropertyIndexes( - index: 86, - originalValueIndex: 86, + index: 87, + originalValueIndex: 87, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5091,12 +5150,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas guidToStringConverterProperty.SetAccessors( Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.GuidToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToStringConverterProperty, 87), + Guid (InternalEntityEntry entry) => entry.ReadOriginalValue(guidToStringConverterProperty, 88), Guid (InternalEntityEntry entry) => entry.GetCurrentValue(guidToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[87]); + object (ValueBuffer valueBuffer) => valueBuffer[88]); guidToStringConverterProperty.SetPropertyIndexes( - index: 87, - originalValueIndex: 87, + index: 88, + originalValueIndex: 88, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5142,12 +5201,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddress.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddress, 88), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddress, 89), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddress), - object (ValueBuffer valueBuffer) => valueBuffer[88]); + object (ValueBuffer valueBuffer) => valueBuffer[89]); iPAddress.SetPropertyIndexes( - index: 88, - originalValueIndex: 88, + index: 89, + originalValueIndex: 89, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5192,12 +5251,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressArray.SetAccessors( IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressArray, 89), + IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressArray, 90), IPAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[89]); + object (ValueBuffer valueBuffer) => valueBuffer[90]); iPAddressArray.SetPropertyIndexes( - index: 89, - originalValueIndex: 89, + index: 90, + originalValueIndex: 90, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5250,6 +5309,81 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas string (IPAddress v) => ((object)v).ToString(), IPAddress (string v) => IPAddress.Parse(v))))); + var iPAddressReadOnlyCollection = runtimeEntityType.AddProperty( + "IPAddressReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("IPAddressReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_ipAddressReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + iPAddressReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(instance) == null); + iPAddressReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) = ((List)(value))); + iPAddressReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(entity) = ((List)(value))); + iPAddressReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._ipAddressReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(iPAddressReadOnlyCollection, 91), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(iPAddressReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[91]); + iPAddressReadOnlyCollection.SetPropertyIndexes( + index: 91, + originalValueIndex: 91, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + iPAddressReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v)), + keyComparer: new ListOfReferenceTypesComparer, IPAddress>(new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, IPAddress>( + new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v))))), + jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, IPAddress>( + new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v)))), + elementMapping: SqliteStringTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v), + keyComparer: new ValueComparer( + bool (IPAddress v1, IPAddress v2) => v1 == null && v2 == null || v1 != null && v2 != null && v1.Equals(v2), + int (IPAddress v) => ((object)v).GetHashCode(), + IPAddress (IPAddress v) => v), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + mappingInfo: new RelationalTypeMappingInfo( + size: 45), + converter: new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v)), + jsonValueReaderWriter: new JsonConvertedValueReaderWriter( + JsonStringReaderWriter.Instance, + new ValueConverter( + string (IPAddress v) => ((object)v).ToString(), + IPAddress (string v) => IPAddress.Parse(v))))); + var iPAddressToBytesConverterProperty = runtimeEntityType.AddProperty( "IPAddressToBytesConverterProperty", typeof(IPAddress), @@ -5268,12 +5402,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressToBytesConverterProperty.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToBytesConverterProperty, 90), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToBytesConverterProperty, 92), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[90]); + object (ValueBuffer valueBuffer) => valueBuffer[92]); iPAddressToBytesConverterProperty.SetPropertyIndexes( - index: 90, - originalValueIndex: 90, + index: 92, + originalValueIndex: 92, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5319,12 +5453,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas iPAddressToStringConverterProperty.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IPAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToStringConverterProperty, 91), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(iPAddressToStringConverterProperty, 93), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(iPAddressToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[91]); + object (ValueBuffer valueBuffer) => valueBuffer[93]); iPAddressToStringConverterProperty.SetPropertyIndexes( - index: 91, - originalValueIndex: 91, + index: 93, + originalValueIndex: 93, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5370,12 +5504,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int16.SetAccessors( short (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short (InternalEntityEntry entry) => entry.ReadOriginalValue(int16, 92), + short (InternalEntityEntry entry) => entry.ReadOriginalValue(int16, 94), short (InternalEntityEntry entry) => entry.GetCurrentValue(int16), - object (ValueBuffer valueBuffer) => valueBuffer[92]); + object (ValueBuffer valueBuffer) => valueBuffer[94]); int16.SetPropertyIndexes( - index: 92, - originalValueIndex: 92, + index: 94, + originalValueIndex: 94, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5412,12 +5546,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int16Array.SetAccessors( short[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int16Array, 93), + short[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int16Array, 95), short[] (InternalEntityEntry entry) => entry.GetCurrentValue(int16Array), - object (ValueBuffer valueBuffer) => valueBuffer[93]); + object (ValueBuffer valueBuffer) => valueBuffer[95]); int16Array.SetPropertyIndexes( - index: 93, - originalValueIndex: 93, + index: 95, + originalValueIndex: 95, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5472,12 +5606,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int32.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(int32, 94), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(int32, 96), int (InternalEntityEntry entry) => entry.GetCurrentValue(int32), - object (ValueBuffer valueBuffer) => valueBuffer[94]); + object (ValueBuffer valueBuffer) => valueBuffer[96]); int32.SetPropertyIndexes( - index: 94, - originalValueIndex: 94, + index: 96, + originalValueIndex: 96, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5514,12 +5648,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int32Array.SetAccessors( int[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32Array, 95), + int[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int32Array, 97), int[] (InternalEntityEntry entry) => entry.GetCurrentValue(int32Array), - object (ValueBuffer valueBuffer) => valueBuffer[95]); + object (ValueBuffer valueBuffer) => valueBuffer[97]); int32Array.SetPropertyIndexes( - index: 95, - originalValueIndex: 95, + index: 97, + originalValueIndex: 97, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5556,6 +5690,65 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas mappingInfo: new RelationalTypeMappingInfo( storeTypeName: "INTEGER"))); + var int32ReadOnlyCollection = runtimeEntityType.AddProperty( + "Int32ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_int32ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + int32ReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(instance) == null); + int32ReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) = ((List)(value))); + int32ReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._int32ReadOnlyCollection(entity) = ((List)(value))); + int32ReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._int32ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(int32ReadOnlyCollection, 98), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(int32ReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[98]); + int32ReadOnlyCollection.SetPropertyIndexes( + index: 98, + originalValueIndex: 98, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + int32ReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, int>(new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v)), + keyComparer: new ListOfValueTypesComparer, int>(new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, int>( + JsonInt32ReaderWriter.Instance)), + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, int>( + JsonInt32ReaderWriter.Instance), + elementMapping: IntTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + keyComparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + providerValueComparer: new ValueComparer( + bool (int v1, int v2) => v1 == v2, + int (int v) => v, + int (int v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "INTEGER"))); + var int64 = runtimeEntityType.AddProperty( "Int64", typeof(long), @@ -5574,12 +5767,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int64.SetAccessors( long (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long (InternalEntityEntry entry) => entry.ReadOriginalValue(int64, 96), + long (InternalEntityEntry entry) => entry.ReadOriginalValue(int64, 99), long (InternalEntityEntry entry) => entry.GetCurrentValue(int64), - object (ValueBuffer valueBuffer) => valueBuffer[96]); + object (ValueBuffer valueBuffer) => valueBuffer[99]); int64.SetPropertyIndexes( - index: 96, - originalValueIndex: 96, + index: 99, + originalValueIndex: 99, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5616,12 +5809,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int64Array.SetAccessors( long[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int64Array, 97), + long[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int64Array, 100), long[] (InternalEntityEntry entry) => entry.GetCurrentValue(int64Array), - object (ValueBuffer valueBuffer) => valueBuffer[97]); + object (ValueBuffer valueBuffer) => valueBuffer[100]); int64Array.SetPropertyIndexes( - index: 97, - originalValueIndex: 97, + index: 100, + originalValueIndex: 100, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5676,12 +5869,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int8.SetAccessors( sbyte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte (InternalEntityEntry entry) => entry.ReadOriginalValue(int8, 98), + sbyte (InternalEntityEntry entry) => entry.ReadOriginalValue(int8, 101), sbyte (InternalEntityEntry entry) => entry.GetCurrentValue(int8), - object (ValueBuffer valueBuffer) => valueBuffer[98]); + object (ValueBuffer valueBuffer) => valueBuffer[101]); int8.SetPropertyIndexes( - index: 98, - originalValueIndex: 98, + index: 101, + originalValueIndex: 101, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5718,12 +5911,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int8Array.SetAccessors( sbyte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Int8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8Array, 99), + sbyte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(int8Array, 102), sbyte[] (InternalEntityEntry entry) => entry.GetCurrentValue(int8Array), - object (ValueBuffer valueBuffer) => valueBuffer[99]); + object (ValueBuffer valueBuffer) => valueBuffer[102]); int8Array.SetPropertyIndexes( - index: 99, - originalValueIndex: 99, + index: 102, + originalValueIndex: 102, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5778,12 +5971,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas intNumberToBytesConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToBytesConverterProperty, 100), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToBytesConverterProperty, 103), int (InternalEntityEntry entry) => entry.GetCurrentValue(intNumberToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[100]); + object (ValueBuffer valueBuffer) => valueBuffer[103]); intNumberToBytesConverterProperty.SetPropertyIndexes( - index: 100, - originalValueIndex: 100, + index: 103, + originalValueIndex: 103, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5830,12 +6023,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas intNumberToStringConverterProperty.SetAccessors( int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.IntNumberToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToStringConverterProperty, 101), + int (InternalEntityEntry entry) => entry.ReadOriginalValue(intNumberToStringConverterProperty, 104), int (InternalEntityEntry entry) => entry.GetCurrentValue(intNumberToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[101]); + object (ValueBuffer valueBuffer) => valueBuffer[104]); intNumberToStringConverterProperty.SetPropertyIndexes( - index: 101, - originalValueIndex: 101, + index: 104, + originalValueIndex: 104, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5883,12 +6076,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullIntToNullStringConverterProperty.SetAccessors( int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullIntToNullStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullIntToNullStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullIntToNullStringConverterProperty, 102), + int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullIntToNullStringConverterProperty, 105), int? (InternalEntityEntry entry) => entry.GetCurrentValue(nullIntToNullStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[102]); + object (ValueBuffer valueBuffer) => valueBuffer[105]); nullIntToNullStringConverterProperty.SetPropertyIndexes( - index: 102, - originalValueIndex: 102, + index: 105, + originalValueIndex: 105, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5934,12 +6127,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBool.SetAccessors( bool? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBool(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBool(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBool, 103), + bool? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBool, 106), bool? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBool), - object (ValueBuffer valueBuffer) => valueBuffer[103]); + object (ValueBuffer valueBuffer) => valueBuffer[106]); nullableBool.SetPropertyIndexes( - index: 103, - originalValueIndex: 103, + index: 106, + originalValueIndex: 106, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -5978,12 +6171,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBoolArray.SetAccessors( bool? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBoolArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), bool? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBoolArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - bool? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBoolArray, 104), + bool? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBoolArray, 107), bool? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBoolArray), - object (ValueBuffer valueBuffer) => valueBuffer[104]); + object (ValueBuffer valueBuffer) => valueBuffer[107]); nullableBoolArray.SetPropertyIndexes( - index: 104, - originalValueIndex: 104, + index: 107, + originalValueIndex: 107, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6038,12 +6231,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBytes.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytes(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytes, 105), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytes, 108), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBytes), - object (ValueBuffer valueBuffer) => valueBuffer[105]); + object (ValueBuffer valueBuffer) => valueBuffer[108]); nullableBytes.SetPropertyIndexes( - index: 105, - originalValueIndex: 105, + index: 108, + originalValueIndex: 108, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6078,12 +6271,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableBytesArray.SetAccessors( byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[][] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableBytesArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytesArray, 106), + byte[][] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableBytesArray, 109), byte[][] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableBytesArray), - object (ValueBuffer valueBuffer) => valueBuffer[106]); + object (ValueBuffer valueBuffer) => valueBuffer[109]); nullableBytesArray.SetPropertyIndexes( - index: 106, - originalValueIndex: 106, + index: 109, + originalValueIndex: 109, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6136,12 +6329,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableChar.SetAccessors( char? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableChar(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableChar(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableChar, 107), + char? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableChar, 110), char? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableChar), - object (ValueBuffer valueBuffer) => valueBuffer[107]); + object (ValueBuffer valueBuffer) => valueBuffer[110]); nullableChar.SetPropertyIndexes( - index: 107, - originalValueIndex: 107, + index: 110, + originalValueIndex: 110, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6180,12 +6373,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableCharArray.SetAccessors( char? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableCharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), char? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableCharArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - char? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableCharArray, 108), + char? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableCharArray, 111), char? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableCharArray), - object (ValueBuffer valueBuffer) => valueBuffer[108]); + object (ValueBuffer valueBuffer) => valueBuffer[111]); nullableCharArray.SetPropertyIndexes( - index: 108, - originalValueIndex: 108, + index: 111, + originalValueIndex: 111, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6240,12 +6433,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateOnly.SetAccessors( DateOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnly, 109), + DateOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnly, 112), DateOnly? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateOnly), - object (ValueBuffer valueBuffer) => valueBuffer[109]); + object (ValueBuffer valueBuffer) => valueBuffer[112]); nullableDateOnly.SetPropertyIndexes( - index: 109, - originalValueIndex: 109, + index: 112, + originalValueIndex: 112, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6270,12 +6463,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateOnlyArray.SetAccessors( DateOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnlyArray, 110), + DateOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateOnlyArray, 113), DateOnly? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[110]); + object (ValueBuffer valueBuffer) => valueBuffer[113]); nullableDateOnlyArray.SetPropertyIndexes( - index: 110, - originalValueIndex: 110, + index: 113, + originalValueIndex: 113, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6316,12 +6509,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateTime.SetAccessors( DateTime? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTime(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTime, 111), + DateTime? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTime, 114), DateTime? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateTime), - object (ValueBuffer valueBuffer) => valueBuffer[111]); + object (ValueBuffer valueBuffer) => valueBuffer[114]); nullableDateTime.SetPropertyIndexes( - index: 111, - originalValueIndex: 111, + index: 114, + originalValueIndex: 114, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6346,12 +6539,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDateTimeArray.SetAccessors( DateTime? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), DateTime? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDateTimeArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - DateTime? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTimeArray, 112), + DateTime? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDateTimeArray, 115), DateTime? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDateTimeArray), - object (ValueBuffer valueBuffer) => valueBuffer[112]); + object (ValueBuffer valueBuffer) => valueBuffer[115]); nullableDateTimeArray.SetPropertyIndexes( - index: 112, - originalValueIndex: 112, + index: 115, + originalValueIndex: 115, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6392,12 +6585,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDecimal.SetAccessors( decimal? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimal(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimal, 113), + decimal? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimal, 116), decimal? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDecimal), - object (ValueBuffer valueBuffer) => valueBuffer[113]); + object (ValueBuffer valueBuffer) => valueBuffer[116]); nullableDecimal.SetPropertyIndexes( - index: 113, - originalValueIndex: 113, + index: 116, + originalValueIndex: 116, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6422,12 +6615,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDecimalArray.SetAccessors( decimal? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), decimal? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDecimalArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - decimal? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimalArray, 114), + decimal? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDecimalArray, 117), decimal? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDecimalArray), - object (ValueBuffer valueBuffer) => valueBuffer[114]); + object (ValueBuffer valueBuffer) => valueBuffer[117]); nullableDecimalArray.SetPropertyIndexes( - index: 114, - originalValueIndex: 114, + index: 117, + originalValueIndex: 117, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6468,12 +6661,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDouble.SetAccessors( double? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDouble(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDouble(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDouble, 115), + double? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDouble, 118), double? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDouble), - object (ValueBuffer valueBuffer) => valueBuffer[115]); + object (ValueBuffer valueBuffer) => valueBuffer[118]); nullableDouble.SetPropertyIndexes( - index: 115, - originalValueIndex: 115, + index: 118, + originalValueIndex: 118, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6512,12 +6705,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableDoubleArray.SetAccessors( double? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), double? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableDoubleArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - double? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDoubleArray, 116), + double? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableDoubleArray, 119), double? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableDoubleArray), - object (ValueBuffer valueBuffer) => valueBuffer[116]); + object (ValueBuffer valueBuffer) => valueBuffer[119]); nullableDoubleArray.SetPropertyIndexes( - index: 116, - originalValueIndex: 116, + index: 119, + originalValueIndex: 119, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6572,12 +6765,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16.SetAccessors( CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16, 117), + CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16, 120), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16), - object (ValueBuffer valueBuffer) => valueBuffer[117]); + object (ValueBuffer valueBuffer) => valueBuffer[120]); nullableEnum16.SetPropertyIndexes( - index: 117, - originalValueIndex: 117, + index: 120, + originalValueIndex: 120, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6624,12 +6817,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16Array.SetAccessors( CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16Array, 118), + CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16Array, 121), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16Array), - object (ValueBuffer valueBuffer) => valueBuffer[118]); + object (ValueBuffer valueBuffer) => valueBuffer[121]); nullableEnum16Array.SetPropertyIndexes( - index: 118, - originalValueIndex: 118, + index: 121, + originalValueIndex: 121, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6700,12 +6893,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsString.SetAccessors( CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsString, 119), + CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsString, 122), CompiledModelTestBase.Enum16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[119]); + object (ValueBuffer valueBuffer) => valueBuffer[122]); nullableEnum16AsString.SetPropertyIndexes( - index: 119, - originalValueIndex: 119, + index: 122, + originalValueIndex: 122, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6752,12 +6945,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsStringArray.SetAccessors( CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsStringArray, 120), + CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum16AsStringArray, 123), CompiledModelTestBase.Enum16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[120]); + object (ValueBuffer valueBuffer) => valueBuffer[123]); nullableEnum16AsStringArray.SetPropertyIndexes( - index: 120, - originalValueIndex: 120, + index: 123, + originalValueIndex: 123, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6827,12 +7020,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16AsStringCollection, 121), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16AsStringCollection, 124), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[121]); + object (ValueBuffer valueBuffer) => valueBuffer[124]); nullableEnum16AsStringCollection.SetPropertyIndexes( - index: 121, - originalValueIndex: 121, + index: 124, + originalValueIndex: 124, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6902,12 +7095,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16Collection, 122), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum16Collection, 125), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[122]); + object (ValueBuffer valueBuffer) => valueBuffer[125]); nullableEnum16Collection.SetPropertyIndexes( - index: 122, - originalValueIndex: 122, + index: 125, + originalValueIndex: 125, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -6978,12 +7171,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32.SetAccessors( CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32, 123), + CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32, 126), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32), - object (ValueBuffer valueBuffer) => valueBuffer[123]); + object (ValueBuffer valueBuffer) => valueBuffer[126]); nullableEnum32.SetPropertyIndexes( - index: 123, - originalValueIndex: 123, + index: 126, + originalValueIndex: 126, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7030,12 +7223,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32Array.SetAccessors( CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32Array, 124), + CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32Array, 127), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32Array), - object (ValueBuffer valueBuffer) => valueBuffer[124]); + object (ValueBuffer valueBuffer) => valueBuffer[127]); nullableEnum32Array.SetPropertyIndexes( - index: 124, - originalValueIndex: 124, + index: 127, + originalValueIndex: 127, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7106,12 +7299,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsString.SetAccessors( CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsString, 125), + CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsString, 128), CompiledModelTestBase.Enum32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[125]); + object (ValueBuffer valueBuffer) => valueBuffer[128]); nullableEnum32AsString.SetPropertyIndexes( - index: 125, - originalValueIndex: 125, + index: 128, + originalValueIndex: 128, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7158,12 +7351,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsStringArray.SetAccessors( CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsStringArray, 126), + CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum32AsStringArray, 129), CompiledModelTestBase.Enum32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[126]); + object (ValueBuffer valueBuffer) => valueBuffer[129]); nullableEnum32AsStringArray.SetPropertyIndexes( - index: 126, - originalValueIndex: 126, + index: 129, + originalValueIndex: 129, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7233,12 +7426,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32AsStringCollection, 127), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32AsStringCollection, 130), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[127]); + object (ValueBuffer valueBuffer) => valueBuffer[130]); nullableEnum32AsStringCollection.SetPropertyIndexes( - index: 127, - originalValueIndex: 127, + index: 130, + originalValueIndex: 130, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7308,12 +7501,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32Collection, 128), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum32Collection, 131), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[128]); + object (ValueBuffer valueBuffer) => valueBuffer[131]); nullableEnum32Collection.SetPropertyIndexes( - index: 128, - originalValueIndex: 128, + index: 131, + originalValueIndex: 131, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7384,12 +7577,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64.SetAccessors( CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64, 129), + CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64, 132), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64), - object (ValueBuffer valueBuffer) => valueBuffer[129]); + object (ValueBuffer valueBuffer) => valueBuffer[132]); nullableEnum64.SetPropertyIndexes( - index: 129, - originalValueIndex: 129, + index: 132, + originalValueIndex: 132, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7436,12 +7629,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64Array.SetAccessors( CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64Array, 130), + CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64Array, 133), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64Array), - object (ValueBuffer valueBuffer) => valueBuffer[130]); + object (ValueBuffer valueBuffer) => valueBuffer[133]); nullableEnum64Array.SetPropertyIndexes( - index: 130, - originalValueIndex: 130, + index: 133, + originalValueIndex: 133, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7512,12 +7705,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsString.SetAccessors( CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsString, 131), + CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsString, 134), CompiledModelTestBase.Enum64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[131]); + object (ValueBuffer valueBuffer) => valueBuffer[134]); nullableEnum64AsString.SetPropertyIndexes( - index: 131, - originalValueIndex: 131, + index: 134, + originalValueIndex: 134, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7564,12 +7757,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsStringArray.SetAccessors( CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsStringArray, 132), + CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum64AsStringArray, 135), CompiledModelTestBase.Enum64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[132]); + object (ValueBuffer valueBuffer) => valueBuffer[135]); nullableEnum64AsStringArray.SetPropertyIndexes( - index: 132, - originalValueIndex: 132, + index: 135, + originalValueIndex: 135, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7639,12 +7832,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64AsStringCollection, 133), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64AsStringCollection, 136), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[133]); + object (ValueBuffer valueBuffer) => valueBuffer[136]); nullableEnum64AsStringCollection.SetPropertyIndexes( - index: 133, - originalValueIndex: 133, + index: 136, + originalValueIndex: 136, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7714,12 +7907,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64Collection, 134), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum64Collection, 137), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[134]); + object (ValueBuffer valueBuffer) => valueBuffer[137]); nullableEnum64Collection.SetPropertyIndexes( - index: 134, - originalValueIndex: 134, + index: 137, + originalValueIndex: 137, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7790,12 +7983,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8.SetAccessors( CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8, 135), + CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8, 138), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8), - object (ValueBuffer valueBuffer) => valueBuffer[135]); + object (ValueBuffer valueBuffer) => valueBuffer[138]); nullableEnum8.SetPropertyIndexes( - index: 135, - originalValueIndex: 135, + index: 138, + originalValueIndex: 138, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7842,12 +8035,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8Array.SetAccessors( CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8Array, 136), + CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8Array, 139), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8Array), - object (ValueBuffer valueBuffer) => valueBuffer[136]); + object (ValueBuffer valueBuffer) => valueBuffer[139]); nullableEnum8Array.SetPropertyIndexes( - index: 136, - originalValueIndex: 136, + index: 139, + originalValueIndex: 139, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7918,12 +8111,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsString.SetAccessors( CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsString, 137), + CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsString, 140), CompiledModelTestBase.Enum8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[137]); + object (ValueBuffer valueBuffer) => valueBuffer[140]); nullableEnum8AsString.SetPropertyIndexes( - index: 137, - originalValueIndex: 137, + index: 140, + originalValueIndex: 140, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -7970,12 +8163,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsStringArray.SetAccessors( CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsStringArray, 138), + CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnum8AsStringArray, 141), CompiledModelTestBase.Enum8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnum8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[138]); + object (ValueBuffer valueBuffer) => valueBuffer[141]); nullableEnum8AsStringArray.SetPropertyIndexes( - index: 138, - originalValueIndex: 138, + index: 141, + originalValueIndex: 141, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8045,12 +8238,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8AsStringCollection, 139), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8AsStringCollection, 142), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[139]); + object (ValueBuffer valueBuffer) => valueBuffer[142]); nullableEnum8AsStringCollection.SetPropertyIndexes( - index: 139, - originalValueIndex: 139, + index: 142, + originalValueIndex: 142, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8120,12 +8313,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnum8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnum8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8Collection, 140), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnum8Collection, 143), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnum8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[140]); + object (ValueBuffer valueBuffer) => valueBuffer[143]); nullableEnum8Collection.SetPropertyIndexes( - index: 140, - originalValueIndex: 140, + index: 143, + originalValueIndex: 143, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8196,12 +8389,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16.SetAccessors( CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16, 141), + CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16, 144), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16), - object (ValueBuffer valueBuffer) => valueBuffer[141]); + object (ValueBuffer valueBuffer) => valueBuffer[144]); nullableEnumU16.SetPropertyIndexes( - index: 141, - originalValueIndex: 141, + index: 144, + originalValueIndex: 144, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8248,12 +8441,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16Array.SetAccessors( CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16Array, 142), + CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16Array, 145), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16Array), - object (ValueBuffer valueBuffer) => valueBuffer[142]); + object (ValueBuffer valueBuffer) => valueBuffer[145]); nullableEnumU16Array.SetPropertyIndexes( - index: 142, - originalValueIndex: 142, + index: 145, + originalValueIndex: 145, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8324,12 +8517,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsString.SetAccessors( CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsString, 143), + CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsString, 146), CompiledModelTestBase.EnumU16? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16AsString), - object (ValueBuffer valueBuffer) => valueBuffer[143]); + object (ValueBuffer valueBuffer) => valueBuffer[146]); nullableEnumU16AsString.SetPropertyIndexes( - index: 143, - originalValueIndex: 143, + index: 146, + originalValueIndex: 146, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8376,12 +8569,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsStringArray.SetAccessors( CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsStringArray, 144), + CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU16AsStringArray, 147), CompiledModelTestBase.EnumU16? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU16AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[144]); + object (ValueBuffer valueBuffer) => valueBuffer[147]); nullableEnumU16AsStringArray.SetPropertyIndexes( - index: 144, - originalValueIndex: 144, + index: 147, + originalValueIndex: 147, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8451,12 +8644,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16AsStringCollection, 145), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16AsStringCollection, 148), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU16AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[145]); + object (ValueBuffer valueBuffer) => valueBuffer[148]); nullableEnumU16AsStringCollection.SetPropertyIndexes( - index: 145, - originalValueIndex: 145, + index: 148, + originalValueIndex: 148, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8526,12 +8719,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU16Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU16Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16Collection, 146), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU16Collection, 149), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU16Collection), - object (ValueBuffer valueBuffer) => valueBuffer[146]); + object (ValueBuffer valueBuffer) => valueBuffer[149]); nullableEnumU16Collection.SetPropertyIndexes( - index: 146, - originalValueIndex: 146, + index: 149, + originalValueIndex: 149, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8602,12 +8795,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32.SetAccessors( CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32, 147), + CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32, 150), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32), - object (ValueBuffer valueBuffer) => valueBuffer[147]); + object (ValueBuffer valueBuffer) => valueBuffer[150]); nullableEnumU32.SetPropertyIndexes( - index: 147, - originalValueIndex: 147, + index: 150, + originalValueIndex: 150, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8654,12 +8847,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32Array.SetAccessors( CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32Array, 148), + CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32Array, 151), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32Array), - object (ValueBuffer valueBuffer) => valueBuffer[148]); + object (ValueBuffer valueBuffer) => valueBuffer[151]); nullableEnumU32Array.SetPropertyIndexes( - index: 148, - originalValueIndex: 148, + index: 151, + originalValueIndex: 151, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8730,12 +8923,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsString.SetAccessors( CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsString, 149), + CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsString, 152), CompiledModelTestBase.EnumU32? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32AsString), - object (ValueBuffer valueBuffer) => valueBuffer[149]); + object (ValueBuffer valueBuffer) => valueBuffer[152]); nullableEnumU32AsString.SetPropertyIndexes( - index: 149, - originalValueIndex: 149, + index: 152, + originalValueIndex: 152, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8782,12 +8975,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsStringArray.SetAccessors( CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsStringArray, 150), + CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU32AsStringArray, 153), CompiledModelTestBase.EnumU32? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU32AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[150]); + object (ValueBuffer valueBuffer) => valueBuffer[153]); nullableEnumU32AsStringArray.SetPropertyIndexes( - index: 150, - originalValueIndex: 150, + index: 153, + originalValueIndex: 153, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8857,12 +9050,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32AsStringCollection, 151), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32AsStringCollection, 154), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU32AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[151]); + object (ValueBuffer valueBuffer) => valueBuffer[154]); nullableEnumU32AsStringCollection.SetPropertyIndexes( - index: 151, - originalValueIndex: 151, + index: 154, + originalValueIndex: 154, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -8932,12 +9125,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU32Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU32Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32Collection, 152), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU32Collection, 155), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU32Collection), - object (ValueBuffer valueBuffer) => valueBuffer[152]); + object (ValueBuffer valueBuffer) => valueBuffer[155]); nullableEnumU32Collection.SetPropertyIndexes( - index: 152, - originalValueIndex: 152, + index: 155, + originalValueIndex: 155, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9008,12 +9201,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64.SetAccessors( CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64, 153), + CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64, 156), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64), - object (ValueBuffer valueBuffer) => valueBuffer[153]); + object (ValueBuffer valueBuffer) => valueBuffer[156]); nullableEnumU64.SetPropertyIndexes( - index: 153, - originalValueIndex: 153, + index: 156, + originalValueIndex: 156, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9058,12 +9251,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64Array.SetAccessors( CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64Array, 154), + CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64Array, 157), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64Array), - object (ValueBuffer valueBuffer) => valueBuffer[154]); + object (ValueBuffer valueBuffer) => valueBuffer[157]); nullableEnumU64Array.SetPropertyIndexes( - index: 154, - originalValueIndex: 154, + index: 157, + originalValueIndex: 157, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9132,12 +9325,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsString.SetAccessors( CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsString, 155), + CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsString, 158), CompiledModelTestBase.EnumU64? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64AsString), - object (ValueBuffer valueBuffer) => valueBuffer[155]); + object (ValueBuffer valueBuffer) => valueBuffer[158]); nullableEnumU64AsString.SetPropertyIndexes( - index: 155, - originalValueIndex: 155, + index: 158, + originalValueIndex: 158, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9182,12 +9375,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsStringArray.SetAccessors( CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsStringArray, 156), + CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU64AsStringArray, 159), CompiledModelTestBase.EnumU64? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU64AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[156]); + object (ValueBuffer valueBuffer) => valueBuffer[159]); nullableEnumU64AsStringArray.SetPropertyIndexes( - index: 156, - originalValueIndex: 156, + index: 159, + originalValueIndex: 159, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9255,12 +9448,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64AsStringCollection, 157), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64AsStringCollection, 160), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU64AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[157]); + object (ValueBuffer valueBuffer) => valueBuffer[160]); nullableEnumU64AsStringCollection.SetPropertyIndexes( - index: 157, - originalValueIndex: 157, + index: 160, + originalValueIndex: 160, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9328,12 +9521,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU64Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU64Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64Collection, 158), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU64Collection, 161), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU64Collection), - object (ValueBuffer valueBuffer) => valueBuffer[158]); + object (ValueBuffer valueBuffer) => valueBuffer[161]); nullableEnumU64Collection.SetPropertyIndexes( - index: 158, - originalValueIndex: 158, + index: 161, + originalValueIndex: 161, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9402,12 +9595,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8.SetAccessors( CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8, 159), + CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8, 162), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8), - object (ValueBuffer valueBuffer) => valueBuffer[159]); + object (ValueBuffer valueBuffer) => valueBuffer[162]); nullableEnumU8.SetPropertyIndexes( - index: 159, - originalValueIndex: 159, + index: 162, + originalValueIndex: 162, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9454,12 +9647,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8Array.SetAccessors( CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8Array, 160), + CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8Array, 163), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8Array), - object (ValueBuffer valueBuffer) => valueBuffer[160]); + object (ValueBuffer valueBuffer) => valueBuffer[163]); nullableEnumU8Array.SetPropertyIndexes( - index: 160, - originalValueIndex: 160, + index: 163, + originalValueIndex: 163, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9530,12 +9723,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsString.SetAccessors( CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsString, 161), + CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsString, 164), CompiledModelTestBase.EnumU8? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8AsString), - object (ValueBuffer valueBuffer) => valueBuffer[161]); + object (ValueBuffer valueBuffer) => valueBuffer[164]); nullableEnumU8AsString.SetPropertyIndexes( - index: 161, - originalValueIndex: 161, + index: 164, + originalValueIndex: 164, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9582,12 +9775,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsStringArray.SetAccessors( CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsStringArray, 162), + CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableEnumU8AsStringArray, 165), CompiledModelTestBase.EnumU8? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableEnumU8AsStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[162]); + object (ValueBuffer valueBuffer) => valueBuffer[165]); nullableEnumU8AsStringArray.SetPropertyIndexes( - index: 162, - originalValueIndex: 162, + index: 165, + originalValueIndex: 165, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9657,12 +9850,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8AsStringCollection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8AsStringCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8AsStringCollection, 163), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8AsStringCollection, 166), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU8AsStringCollection), - object (ValueBuffer valueBuffer) => valueBuffer[163]); + object (ValueBuffer valueBuffer) => valueBuffer[166]); nullableEnumU8AsStringCollection.SetPropertyIndexes( - index: 163, - originalValueIndex: 163, + index: 166, + originalValueIndex: 166, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9732,12 +9925,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableEnumU8Collection.SetAccessors( List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), List (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableEnumU8Collection(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8Collection, 164), + List (InternalEntityEntry entry) => entry.ReadOriginalValue>(nullableEnumU8Collection, 167), List (InternalEntityEntry entry) => entry.GetCurrentValue>(nullableEnumU8Collection), - object (ValueBuffer valueBuffer) => valueBuffer[164]); + object (ValueBuffer valueBuffer) => valueBuffer[167]); nullableEnumU8Collection.SetPropertyIndexes( - index: 164, - originalValueIndex: 164, + index: 167, + originalValueIndex: 167, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9808,12 +10001,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableFloat.SetAccessors( float? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloat(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloat(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloat, 165), + float? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloat, 168), float? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableFloat), - object (ValueBuffer valueBuffer) => valueBuffer[165]); + object (ValueBuffer valueBuffer) => valueBuffer[168]); nullableFloat.SetPropertyIndexes( - index: 165, - originalValueIndex: 165, + index: 168, + originalValueIndex: 168, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9852,12 +10045,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableFloatArray.SetAccessors( float? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), float? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableFloatArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - float? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloatArray, 166), + float? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableFloatArray, 169), float? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableFloatArray), - object (ValueBuffer valueBuffer) => valueBuffer[166]); + object (ValueBuffer valueBuffer) => valueBuffer[169]); nullableFloatArray.SetPropertyIndexes( - index: 166, - originalValueIndex: 166, + index: 169, + originalValueIndex: 169, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9912,12 +10105,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableGuid.SetAccessors( Guid? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuid(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuid, 167), + Guid? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuid, 170), Guid? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableGuid), - object (ValueBuffer valueBuffer) => valueBuffer[167]); + object (ValueBuffer valueBuffer) => valueBuffer[170]); nullableGuid.SetPropertyIndexes( - index: 167, - originalValueIndex: 167, + index: 170, + originalValueIndex: 170, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9942,12 +10135,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableGuidArray.SetAccessors( Guid? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Guid? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableGuidArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Guid? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuidArray, 168), + Guid? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableGuidArray, 171), Guid? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableGuidArray), - object (ValueBuffer valueBuffer) => valueBuffer[168]); + object (ValueBuffer valueBuffer) => valueBuffer[171]); nullableGuidArray.SetPropertyIndexes( - index: 168, - originalValueIndex: 168, + index: 171, + originalValueIndex: 171, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -9988,12 +10181,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableIPAddress.SetAccessors( IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddress, 169), + IPAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddress, 172), IPAddress (InternalEntityEntry entry) => entry.GetCurrentValue(nullableIPAddress), - object (ValueBuffer valueBuffer) => valueBuffer[169]); + object (ValueBuffer valueBuffer) => valueBuffer[172]); nullableIPAddress.SetPropertyIndexes( - index: 169, - originalValueIndex: 169, + index: 172, + originalValueIndex: 172, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10038,12 +10231,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableIPAddressArray.SetAccessors( IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), IPAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableIPAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddressArray, 170), + IPAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableIPAddressArray, 173), IPAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableIPAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[170]); + object (ValueBuffer valueBuffer) => valueBuffer[173]); nullableIPAddressArray.SetPropertyIndexes( - index: 170, - originalValueIndex: 170, + index: 173, + originalValueIndex: 173, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10114,12 +10307,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt16.SetAccessors( short? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16, 171), + short? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16, 174), short? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt16), - object (ValueBuffer valueBuffer) => valueBuffer[171]); + object (ValueBuffer valueBuffer) => valueBuffer[174]); nullableInt16.SetPropertyIndexes( - index: 171, - originalValueIndex: 171, + index: 174, + originalValueIndex: 174, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10158,12 +10351,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt16Array.SetAccessors( short? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), short? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - short? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16Array, 172), + short? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt16Array, 175), short? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[172]); + object (ValueBuffer valueBuffer) => valueBuffer[175]); nullableInt16Array.SetPropertyIndexes( - index: 172, - originalValueIndex: 172, + index: 175, + originalValueIndex: 175, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10218,12 +10411,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt32.SetAccessors( int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32, 173), + int? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32, 176), int? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt32), - object (ValueBuffer valueBuffer) => valueBuffer[173]); + object (ValueBuffer valueBuffer) => valueBuffer[176]); nullableInt32.SetPropertyIndexes( - index: 173, - originalValueIndex: 173, + index: 176, + originalValueIndex: 176, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10262,12 +10455,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt32Array.SetAccessors( int? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), int? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - int? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32Array, 174), + int? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt32Array, 177), int? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[174]); + object (ValueBuffer valueBuffer) => valueBuffer[177]); nullableInt32Array.SetPropertyIndexes( - index: 174, - originalValueIndex: 174, + index: 177, + originalValueIndex: 177, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10322,12 +10515,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt64.SetAccessors( long? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64, 175), + long? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64, 178), long? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt64), - object (ValueBuffer valueBuffer) => valueBuffer[175]); + object (ValueBuffer valueBuffer) => valueBuffer[178]); nullableInt64.SetPropertyIndexes( - index: 175, - originalValueIndex: 175, + index: 178, + originalValueIndex: 178, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10366,12 +10559,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt64Array.SetAccessors( long? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), long? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - long? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64Array, 176), + long? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt64Array, 179), long? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[176]); + object (ValueBuffer valueBuffer) => valueBuffer[179]); nullableInt64Array.SetPropertyIndexes( - index: 176, - originalValueIndex: 176, + index: 179, + originalValueIndex: 179, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10426,12 +10619,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt8.SetAccessors( sbyte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8, 177), + sbyte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8, 180), sbyte? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt8), - object (ValueBuffer valueBuffer) => valueBuffer[177]); + object (ValueBuffer valueBuffer) => valueBuffer[180]); nullableInt8.SetPropertyIndexes( - index: 177, - originalValueIndex: 177, + index: 180, + originalValueIndex: 180, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10470,12 +10663,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableInt8Array.SetAccessors( sbyte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), sbyte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - sbyte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8Array, 178), + sbyte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableInt8Array, 181), sbyte? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[178]); + object (ValueBuffer valueBuffer) => valueBuffer[181]); nullableInt8Array.SetPropertyIndexes( - index: 178, - originalValueIndex: 178, + index: 181, + originalValueIndex: 181, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10530,12 +10723,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullablePhysicalAddress.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddress, 179), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddress, 182), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(nullablePhysicalAddress), - object (ValueBuffer valueBuffer) => valueBuffer[179]); + object (ValueBuffer valueBuffer) => valueBuffer[182]); nullablePhysicalAddress.SetPropertyIndexes( - index: 179, - originalValueIndex: 179, + index: 182, + originalValueIndex: 182, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10580,12 +10773,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullablePhysicalAddressArray.SetAccessors( PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullablePhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddressArray, 180), + PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullablePhysicalAddressArray, 183), PhysicalAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullablePhysicalAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[180]); + object (ValueBuffer valueBuffer) => valueBuffer[183]); nullablePhysicalAddressArray.SetPropertyIndexes( - index: 180, - originalValueIndex: 180, + index: 183, + originalValueIndex: 183, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10656,12 +10849,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableString.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableString(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableString, 181), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableString, 184), string (InternalEntityEntry entry) => entry.GetCurrentValue(nullableString), - object (ValueBuffer valueBuffer) => valueBuffer[181]); + object (ValueBuffer valueBuffer) => valueBuffer[184]); nullableString.SetPropertyIndexes( - index: 181, - originalValueIndex: 181, + index: 184, + originalValueIndex: 184, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10684,12 +10877,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableStringArray.SetAccessors( string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableStringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringArray, 182), + string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableStringArray, 185), string[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableStringArray), - object (ValueBuffer valueBuffer) => valueBuffer[182]); + object (ValueBuffer valueBuffer) => valueBuffer[185]); nullableStringArray.SetPropertyIndexes( - index: 182, - originalValueIndex: 182, + index: 185, + originalValueIndex: 185, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10730,12 +10923,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeOnly.SetAccessors( TimeOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnly, 183), + TimeOnly? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnly, 186), TimeOnly? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeOnly), - object (ValueBuffer valueBuffer) => valueBuffer[183]); + object (ValueBuffer valueBuffer) => valueBuffer[186]); nullableTimeOnly.SetPropertyIndexes( - index: 183, - originalValueIndex: 183, + index: 186, + originalValueIndex: 186, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10760,12 +10953,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeOnlyArray.SetAccessors( TimeOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnlyArray, 184), + TimeOnly? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeOnlyArray, 187), TimeOnly? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[184]); + object (ValueBuffer valueBuffer) => valueBuffer[187]); nullableTimeOnlyArray.SetPropertyIndexes( - index: 184, - originalValueIndex: 184, + index: 187, + originalValueIndex: 187, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10806,12 +10999,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeSpan.SetAccessors( TimeSpan? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpan, 185), + TimeSpan? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpan, 188), TimeSpan? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeSpan), - object (ValueBuffer valueBuffer) => valueBuffer[185]); + object (ValueBuffer valueBuffer) => valueBuffer[188]); nullableTimeSpan.SetPropertyIndexes( - index: 185, - originalValueIndex: 185, + index: 188, + originalValueIndex: 188, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10850,12 +11043,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableTimeSpanArray.SetAccessors( TimeSpan? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableTimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpanArray, 186), + TimeSpan? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableTimeSpanArray, 189), TimeSpan? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableTimeSpanArray), - object (ValueBuffer valueBuffer) => valueBuffer[186]); + object (ValueBuffer valueBuffer) => valueBuffer[189]); nullableTimeSpanArray.SetPropertyIndexes( - index: 186, - originalValueIndex: 186, + index: 189, + originalValueIndex: 189, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10910,12 +11103,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt16.SetAccessors( ushort? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16, 187), + ushort? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16, 190), ushort? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt16), - object (ValueBuffer valueBuffer) => valueBuffer[187]); + object (ValueBuffer valueBuffer) => valueBuffer[190]); nullableUInt16.SetPropertyIndexes( - index: 187, - originalValueIndex: 187, + index: 190, + originalValueIndex: 190, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -10954,12 +11147,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt16Array.SetAccessors( ushort? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16Array, 188), + ushort? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt16Array, 191), ushort? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[188]); + object (ValueBuffer valueBuffer) => valueBuffer[191]); nullableUInt16Array.SetPropertyIndexes( - index: 188, - originalValueIndex: 188, + index: 191, + originalValueIndex: 191, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11014,12 +11207,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt32.SetAccessors( uint? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32, 189), + uint? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32, 192), uint? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt32), - object (ValueBuffer valueBuffer) => valueBuffer[189]); + object (ValueBuffer valueBuffer) => valueBuffer[192]); nullableUInt32.SetPropertyIndexes( - index: 189, - originalValueIndex: 189, + index: 192, + originalValueIndex: 192, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11058,12 +11251,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt32Array.SetAccessors( uint? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32Array, 190), + uint? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt32Array, 193), uint? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[190]); + object (ValueBuffer valueBuffer) => valueBuffer[193]); nullableUInt32Array.SetPropertyIndexes( - index: 190, - originalValueIndex: 190, + index: 193, + originalValueIndex: 193, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11118,12 +11311,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt64.SetAccessors( ulong? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64, 191), + ulong? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64, 194), ulong? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt64), - object (ValueBuffer valueBuffer) => valueBuffer[191]); + object (ValueBuffer valueBuffer) => valueBuffer[194]); nullableUInt64.SetPropertyIndexes( - index: 191, - originalValueIndex: 191, + index: 194, + originalValueIndex: 194, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11148,12 +11341,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt64Array.SetAccessors( ulong? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64Array, 192), + ulong? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt64Array, 195), ulong? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[192]); + object (ValueBuffer valueBuffer) => valueBuffer[195]); nullableUInt64Array.SetPropertyIndexes( - index: 192, - originalValueIndex: 192, + index: 195, + originalValueIndex: 195, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11194,12 +11387,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt8.SetAccessors( byte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte? (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8, 193), + byte? (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8, 196), byte? (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt8), - object (ValueBuffer valueBuffer) => valueBuffer[193]); + object (ValueBuffer valueBuffer) => valueBuffer[196]); nullableUInt8.SetPropertyIndexes( - index: 193, - originalValueIndex: 193, + index: 196, + originalValueIndex: 196, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11238,12 +11431,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUInt8Array.SetAccessors( byte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte? [] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8Array, 194), + byte? [] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUInt8Array, 197), byte? [] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[194]); + object (ValueBuffer valueBuffer) => valueBuffer[197]); nullableUInt8Array.SetPropertyIndexes( - index: 194, - originalValueIndex: 194, + index: 197, + originalValueIndex: 197, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11298,12 +11491,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUri.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUri, 195), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUri, 198), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUri), - object (ValueBuffer valueBuffer) => valueBuffer[195]); + object (ValueBuffer valueBuffer) => valueBuffer[198]); nullableUri.SetPropertyIndexes( - index: 195, - originalValueIndex: 195, + index: 198, + originalValueIndex: 198, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11346,12 +11539,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas nullableUriArray.SetAccessors( Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.NullableUriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUriArray, 196), + Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(nullableUriArray, 199), Uri[] (InternalEntityEntry entry) => entry.GetCurrentValue(nullableUriArray), - object (ValueBuffer valueBuffer) => valueBuffer[196]); + object (ValueBuffer valueBuffer) => valueBuffer[199]); nullableUriArray.SetPropertyIndexes( - index: 196, - originalValueIndex: 196, + index: 199, + originalValueIndex: 199, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11419,12 +11612,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddress.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddress(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddress, 197), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddress, 200), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddress), - object (ValueBuffer valueBuffer) => valueBuffer[197]); + object (ValueBuffer valueBuffer) => valueBuffer[200]); physicalAddress.SetPropertyIndexes( - index: 197, - originalValueIndex: 197, + index: 200, + originalValueIndex: 200, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11469,12 +11662,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressArray.SetAccessors( PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressArray, 198), + PhysicalAddress[] (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressArray, 201), PhysicalAddress[] (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressArray), - object (ValueBuffer valueBuffer) => valueBuffer[198]); + object (ValueBuffer valueBuffer) => valueBuffer[201]); physicalAddressArray.SetPropertyIndexes( - index: 198, - originalValueIndex: 198, + index: 201, + originalValueIndex: 201, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11545,12 +11738,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressToBytesConverterProperty.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToBytesConverterProperty, 199), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToBytesConverterProperty, 202), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[199]); + object (ValueBuffer valueBuffer) => valueBuffer[202]); physicalAddressToBytesConverterProperty.SetPropertyIndexes( - index: 199, - originalValueIndex: 199, + index: 202, + originalValueIndex: 202, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11596,12 +11789,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas physicalAddressToStringConverterProperty.SetAccessors( PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), PhysicalAddress (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.PhysicalAddressToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToStringConverterProperty, 200), + PhysicalAddress (InternalEntityEntry entry) => entry.ReadOriginalValue(physicalAddressToStringConverterProperty, 203), PhysicalAddress (InternalEntityEntry entry) => entry.GetCurrentValue(physicalAddressToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[200]); + object (ValueBuffer valueBuffer) => valueBuffer[203]); physicalAddressToStringConverterProperty.SetPropertyIndexes( - index: 200, - originalValueIndex: 200, + index: 203, + originalValueIndex: 203, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11646,12 +11839,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas @string.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.String(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.String(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(@string, 201), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(@string, 204), string (InternalEntityEntry entry) => entry.GetCurrentValue(@string), - object (ValueBuffer valueBuffer) => valueBuffer[201]); + object (ValueBuffer valueBuffer) => valueBuffer[204]); @string.SetPropertyIndexes( - index: 201, - originalValueIndex: 201, + index: 204, + originalValueIndex: 204, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11674,12 +11867,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringArray.SetAccessors( string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringArray, 202), + string[] (InternalEntityEntry entry) => entry.ReadOriginalValue(stringArray, 205), string[] (InternalEntityEntry entry) => entry.GetCurrentValue(stringArray), - object (ValueBuffer valueBuffer) => valueBuffer[202]); + object (ValueBuffer valueBuffer) => valueBuffer[205]); stringArray.SetPropertyIndexes( - index: 202, - originalValueIndex: 202, + index: 205, + originalValueIndex: 205, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11702,6 +11895,51 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas JsonStringReaderWriter.Instance), elementMapping: SqliteStringTypeMapping.Default); + var stringReadOnlyCollection = runtimeEntityType.AddProperty( + "StringReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_stringReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + stringReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(instance) == null); + stringReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) = ((List)(value))); + stringReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._stringReadOnlyCollection(entity) = ((List)(value))); + stringReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._stringReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(stringReadOnlyCollection, 206), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(stringReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[206]); + stringReadOnlyCollection.SetPropertyIndexes( + index: 206, + originalValueIndex: 206, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + stringReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( + comparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v)), + keyComparer: new ListOfReferenceTypesComparer, string>(new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfReferencesReaderWriter, string>( + JsonStringReaderWriter.Instance)), + jsonValueReaderWriter: new JsonCollectionOfReferencesReaderWriter, string>( + JsonStringReaderWriter.Instance), + elementMapping: SqliteStringTypeMapping.Default); + var stringToBoolConverterProperty = runtimeEntityType.AddProperty( "StringToBoolConverterProperty", typeof(string), @@ -11720,12 +11958,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToBoolConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBoolConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBoolConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBoolConverterProperty, 203), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBoolConverterProperty, 207), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToBoolConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[203]); + object (ValueBuffer valueBuffer) => valueBuffer[207]); stringToBoolConverterProperty.SetPropertyIndexes( - index: 203, - originalValueIndex: 203, + index: 207, + originalValueIndex: 207, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11771,12 +12009,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToBytesConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToBytesConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBytesConverterProperty, 204), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToBytesConverterProperty, 208), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToBytesConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[204]); + object (ValueBuffer valueBuffer) => valueBuffer[208]); stringToBytesConverterProperty.SetPropertyIndexes( - index: 204, - originalValueIndex: 204, + index: 208, + originalValueIndex: 208, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11820,12 +12058,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToCharConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToCharConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToCharConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToCharConverterProperty, 205), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToCharConverterProperty, 209), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToCharConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[205]); + object (ValueBuffer valueBuffer) => valueBuffer[209]); stringToCharConverterProperty.SetPropertyIndexes( - index: 205, - originalValueIndex: 205, + index: 209, + originalValueIndex: 209, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11872,12 +12110,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateOnlyConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateOnlyConverterProperty, 206), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateOnlyConverterProperty, 210), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateOnlyConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[206]); + object (ValueBuffer valueBuffer) => valueBuffer[210]); stringToDateOnlyConverterProperty.SetPropertyIndexes( - index: 206, - originalValueIndex: 206, + index: 210, + originalValueIndex: 210, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11923,12 +12161,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateTimeConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeConverterProperty, 207), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeConverterProperty, 211), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateTimeConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[207]); + object (ValueBuffer valueBuffer) => valueBuffer[211]); stringToDateTimeConverterProperty.SetPropertyIndexes( - index: 207, - originalValueIndex: 207, + index: 211, + originalValueIndex: 211, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -11974,12 +12212,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDateTimeOffsetConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeOffsetConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDateTimeOffsetConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeOffsetConverterProperty, 208), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDateTimeOffsetConverterProperty, 212), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDateTimeOffsetConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[208]); + object (ValueBuffer valueBuffer) => valueBuffer[212]); stringToDateTimeOffsetConverterProperty.SetPropertyIndexes( - index: 208, - originalValueIndex: 208, + index: 212, + originalValueIndex: 212, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12025,12 +12263,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDecimalNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDecimalNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDecimalNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDecimalNumberConverterProperty, 209), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDecimalNumberConverterProperty, 213), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDecimalNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[209]); + object (ValueBuffer valueBuffer) => valueBuffer[213]); stringToDecimalNumberConverterProperty.SetPropertyIndexes( - index: 209, - originalValueIndex: 209, + index: 213, + originalValueIndex: 213, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12076,12 +12314,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToDoubleNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDoubleNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToDoubleNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDoubleNumberConverterProperty, 210), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToDoubleNumberConverterProperty, 214), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToDoubleNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[210]); + object (ValueBuffer valueBuffer) => valueBuffer[214]); stringToDoubleNumberConverterProperty.SetPropertyIndexes( - index: 210, - originalValueIndex: 210, + index: 214, + originalValueIndex: 214, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12128,12 +12366,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToEnumConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToEnumConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToEnumConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToEnumConverterProperty, 211), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToEnumConverterProperty, 215), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToEnumConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[211]); + object (ValueBuffer valueBuffer) => valueBuffer[215]); stringToEnumConverterProperty.SetPropertyIndexes( - index: 211, - originalValueIndex: 211, + index: 215, + originalValueIndex: 215, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12178,12 +12416,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToGuidConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToGuidConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToGuidConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToGuidConverterProperty, 212), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToGuidConverterProperty, 216), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToGuidConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[212]); + object (ValueBuffer valueBuffer) => valueBuffer[216]); stringToGuidConverterProperty.SetPropertyIndexes( - index: 212, - originalValueIndex: 212, + index: 216, + originalValueIndex: 216, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12207,12 +12445,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToIntNumberConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToIntNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToIntNumberConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToIntNumberConverterProperty, 213), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToIntNumberConverterProperty, 217), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToIntNumberConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[213]); + object (ValueBuffer valueBuffer) => valueBuffer[217]); stringToIntNumberConverterProperty.SetPropertyIndexes( - index: 213, - originalValueIndex: 213, + index: 217, + originalValueIndex: 217, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12259,12 +12497,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToTimeOnlyConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeOnlyConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeOnlyConverterProperty, 214), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeOnlyConverterProperty, 218), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToTimeOnlyConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[214]); + object (ValueBuffer valueBuffer) => valueBuffer[218]); stringToTimeOnlyConverterProperty.SetPropertyIndexes( - index: 214, - originalValueIndex: 214, + index: 218, + originalValueIndex: 218, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12310,12 +12548,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToTimeSpanConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeSpanConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToTimeSpanConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeSpanConverterProperty, 215), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToTimeSpanConverterProperty, 219), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToTimeSpanConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[215]); + object (ValueBuffer valueBuffer) => valueBuffer[219]); stringToTimeSpanConverterProperty.SetPropertyIndexes( - index: 215, - originalValueIndex: 215, + index: 219, + originalValueIndex: 219, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12362,12 +12600,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas stringToUriConverterProperty.SetAccessors( string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToUriConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), string (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.StringToUriConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToUriConverterProperty, 216), + string (InternalEntityEntry entry) => entry.ReadOriginalValue(stringToUriConverterProperty, 220), string (InternalEntityEntry entry) => entry.GetCurrentValue(stringToUriConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[216]); + object (ValueBuffer valueBuffer) => valueBuffer[220]); stringToUriConverterProperty.SetPropertyIndexes( - index: 216, - originalValueIndex: 216, + index: 220, + originalValueIndex: 220, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12411,12 +12649,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnly.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnly(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnly, 217), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnly, 221), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnly), - object (ValueBuffer valueBuffer) => valueBuffer[217]); + object (ValueBuffer valueBuffer) => valueBuffer[221]); timeOnly.SetPropertyIndexes( - index: 217, - originalValueIndex: 217, + index: 221, + originalValueIndex: 221, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12439,12 +12677,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyArray.SetAccessors( TimeOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyArray, 218), + TimeOnly[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyArray, 222), TimeOnly[] (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyArray), - object (ValueBuffer valueBuffer) => valueBuffer[218]); + object (ValueBuffer valueBuffer) => valueBuffer[222]); timeOnlyArray.SetPropertyIndexes( - index: 218, - originalValueIndex: 218, + index: 222, + originalValueIndex: 222, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12485,12 +12723,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyToStringConverterProperty.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToStringConverterProperty, 219), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToStringConverterProperty, 223), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[219]); + object (ValueBuffer valueBuffer) => valueBuffer[223]); timeOnlyToStringConverterProperty.SetPropertyIndexes( - index: 219, - originalValueIndex: 219, + index: 223, + originalValueIndex: 223, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12537,12 +12775,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeOnlyToTicksConverterProperty.SetAccessors( TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeOnly (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeOnlyToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToTicksConverterProperty, 220), + TimeOnly (InternalEntityEntry entry) => entry.ReadOriginalValue(timeOnlyToTicksConverterProperty, 224), TimeOnly (InternalEntityEntry entry) => entry.GetCurrentValue(timeOnlyToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[220]); + object (ValueBuffer valueBuffer) => valueBuffer[224]); timeOnlyToTicksConverterProperty.SetPropertyIndexes( - index: 220, - originalValueIndex: 220, + index: 224, + originalValueIndex: 224, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12589,12 +12827,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpan.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpan(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpan, 221), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpan, 225), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpan), - object (ValueBuffer valueBuffer) => valueBuffer[221]); + object (ValueBuffer valueBuffer) => valueBuffer[225]); timeSpan.SetPropertyIndexes( - index: 221, - originalValueIndex: 221, + index: 225, + originalValueIndex: 225, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12631,12 +12869,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanArray.SetAccessors( TimeSpan[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanArray, 222), + TimeSpan[] (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanArray, 226), TimeSpan[] (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanArray), - object (ValueBuffer valueBuffer) => valueBuffer[222]); + object (ValueBuffer valueBuffer) => valueBuffer[226]); timeSpanArray.SetPropertyIndexes( - index: 222, - originalValueIndex: 222, + index: 226, + originalValueIndex: 226, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12691,12 +12929,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanToStringConverterProperty.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToStringConverterProperty, 223), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToStringConverterProperty, 227), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[223]); + object (ValueBuffer valueBuffer) => valueBuffer[227]); timeSpanToStringConverterProperty.SetPropertyIndexes( - index: 223, - originalValueIndex: 223, + index: 227, + originalValueIndex: 227, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12743,12 +12981,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas timeSpanToTicksConverterProperty.SetAccessors( TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), TimeSpan (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.TimeSpanToTicksConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToTicksConverterProperty, 224), + TimeSpan (InternalEntityEntry entry) => entry.ReadOriginalValue(timeSpanToTicksConverterProperty, 228), TimeSpan (InternalEntityEntry entry) => entry.GetCurrentValue(timeSpanToTicksConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[224]); + object (ValueBuffer valueBuffer) => valueBuffer[228]); timeSpanToTicksConverterProperty.SetPropertyIndexes( - index: 224, - originalValueIndex: 224, + index: 228, + originalValueIndex: 228, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12795,12 +13033,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt16.SetAccessors( ushort (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16, 225), + ushort (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16, 229), ushort (InternalEntityEntry entry) => entry.GetCurrentValue(uInt16), - object (ValueBuffer valueBuffer) => valueBuffer[225]); + object (ValueBuffer valueBuffer) => valueBuffer[229]); uInt16.SetPropertyIndexes( - index: 225, - originalValueIndex: 225, + index: 229, + originalValueIndex: 229, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12837,12 +13075,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt16Array.SetAccessors( ushort[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ushort[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt16Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ushort[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16Array, 226), + ushort[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt16Array, 230), ushort[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt16Array), - object (ValueBuffer valueBuffer) => valueBuffer[226]); + object (ValueBuffer valueBuffer) => valueBuffer[230]); uInt16Array.SetPropertyIndexes( - index: 226, - originalValueIndex: 226, + index: 230, + originalValueIndex: 230, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12897,12 +13135,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt32.SetAccessors( uint (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32, 227), + uint (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32, 231), uint (InternalEntityEntry entry) => entry.GetCurrentValue(uInt32), - object (ValueBuffer valueBuffer) => valueBuffer[227]); + object (ValueBuffer valueBuffer) => valueBuffer[231]); uInt32.SetPropertyIndexes( - index: 227, - originalValueIndex: 227, + index: 231, + originalValueIndex: 231, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12939,12 +13177,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt32Array.SetAccessors( uint[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), uint[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt32Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - uint[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32Array, 228), + uint[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt32Array, 232), uint[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt32Array), - object (ValueBuffer valueBuffer) => valueBuffer[228]); + object (ValueBuffer valueBuffer) => valueBuffer[232]); uInt32Array.SetPropertyIndexes( - index: 228, - originalValueIndex: 228, + index: 232, + originalValueIndex: 232, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -12999,12 +13237,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt64.SetAccessors( ulong (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64, 229), + ulong (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64, 233), ulong (InternalEntityEntry entry) => entry.GetCurrentValue(uInt64), - object (ValueBuffer valueBuffer) => valueBuffer[229]); + object (ValueBuffer valueBuffer) => valueBuffer[233]); uInt64.SetPropertyIndexes( - index: 229, - originalValueIndex: 229, + index: 233, + originalValueIndex: 233, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13027,12 +13265,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt64Array.SetAccessors( ulong[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), ulong[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt64Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - ulong[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64Array, 230), + ulong[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt64Array, 234), ulong[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt64Array), - object (ValueBuffer valueBuffer) => valueBuffer[230]); + object (ValueBuffer valueBuffer) => valueBuffer[234]); uInt64Array.SetPropertyIndexes( - index: 230, - originalValueIndex: 230, + index: 234, + originalValueIndex: 234, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13073,12 +13311,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt8.SetAccessors( byte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8, 231), + byte (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8, 235), byte (InternalEntityEntry entry) => entry.GetCurrentValue(uInt8), - object (ValueBuffer valueBuffer) => valueBuffer[231]); + object (ValueBuffer valueBuffer) => valueBuffer[235]); uInt8.SetPropertyIndexes( - index: 231, - originalValueIndex: 231, + index: 235, + originalValueIndex: 235, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13115,12 +13353,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uInt8Array.SetAccessors( byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), byte[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UInt8Array(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8Array, 232), + byte[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uInt8Array, 236), byte[] (InternalEntityEntry entry) => entry.GetCurrentValue(uInt8Array), - object (ValueBuffer valueBuffer) => valueBuffer[232]); + object (ValueBuffer valueBuffer) => valueBuffer[236]); uInt8Array.SetPropertyIndexes( - index: 232, - originalValueIndex: 232, + index: 236, + originalValueIndex: 236, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13138,6 +13376,65 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas int (byte[] v) => StructuralComparisons.StructuralEqualityComparer.GetHashCode(((object)(v))), byte[] (byte[] source) => source.ToArray())); + var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( + "UInt8ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_uInt8ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + uInt8ReadOnlyCollection.SetGetter( + IReadOnlyCollection (CompiledModelTestBase.ManyTypes entity) => (ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity)))), + bool (CompiledModelTestBase.ManyTypes entity) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) == null, + IReadOnlyCollection (CompiledModelTestBase.ManyTypes instance) => (ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance) == null ? null : ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance)))), + bool (CompiledModelTestBase.ManyTypes instance) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(instance) == null); + uInt8ReadOnlyCollection.SetSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) = ((List)(value))); + uInt8ReadOnlyCollection.SetMaterializationSetter( + (CompiledModelTestBase.ManyTypes entity, IReadOnlyCollection value) => ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(entity) = ((List)(value))); + uInt8ReadOnlyCollection.SetAccessors( + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => ((IReadOnlyCollection)(ManyTypesUnsafeAccessors._uInt8ReadOnlyCollection(((CompiledModelTestBase.ManyTypes)(entry.Entity))))), + IReadOnlyCollection (InternalEntityEntry entry) => entry.ReadOriginalValue>(uInt8ReadOnlyCollection, 237), + IReadOnlyCollection (InternalEntityEntry entry) => entry.GetCurrentValue>(uInt8ReadOnlyCollection), + object (ValueBuffer valueBuffer) => valueBuffer[237]); + uInt8ReadOnlyCollection.SetPropertyIndexes( + index: 237, + originalValueIndex: 237, + shadowIndex: -1, + relationshipIndex: -1, + storeGenerationIndex: -1); + uInt8ReadOnlyCollection.TypeMapping = SqliteStringTypeMapping.Default.Clone( + comparer: new ListOfValueTypesComparer, byte>(new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v)), + keyComparer: new ListOfValueTypesComparer, byte>(new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v)), + providerValueComparer: new ValueComparer( + bool (string v1, string v2) => v1 == v2, + int (string v) => ((object)v).GetHashCode(), + string (string v) => v), + converter: new CollectionToJsonStringConverter(new JsonCollectionOfStructsReaderWriter, byte>( + JsonByteReaderWriter.Instance)), + jsonValueReaderWriter: new JsonCollectionOfStructsReaderWriter, byte>( + JsonByteReaderWriter.Instance), + elementMapping: ByteTypeMapping.Default.Clone( + comparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + keyComparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + providerValueComparer: new ValueComparer( + bool (byte v1, byte v2) => v1 == v2, + int (byte v) => ((int)(v)), + byte (byte v) => v), + mappingInfo: new RelationalTypeMappingInfo( + storeTypeName: "INTEGER"))); + var uri = runtimeEntityType.AddProperty( "Uri", typeof(Uri), @@ -13155,12 +13452,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uri.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Uri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.Uri(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uri, 233), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uri, 238), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(uri), - object (ValueBuffer valueBuffer) => valueBuffer[233]); + object (ValueBuffer valueBuffer) => valueBuffer[238]); uri.SetPropertyIndexes( - index: 233, - originalValueIndex: 233, + index: 238, + originalValueIndex: 238, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13203,12 +13500,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uriArray.SetAccessors( Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri[] (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriArray(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uriArray, 234), + Uri[] (InternalEntityEntry entry) => entry.ReadOriginalValue(uriArray, 239), Uri[] (InternalEntityEntry entry) => entry.GetCurrentValue(uriArray), - object (ValueBuffer valueBuffer) => valueBuffer[234]); + object (ValueBuffer valueBuffer) => valueBuffer[239]); uriArray.SetPropertyIndexes( - index: 234, - originalValueIndex: 234, + index: 239, + originalValueIndex: 239, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13277,12 +13574,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas uriToStringConverterProperty.SetAccessors( Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), Uri (InternalEntityEntry entry) => ManyTypesUnsafeAccessors.UriToStringConverterProperty(((CompiledModelTestBase.ManyTypes)(entry.Entity))), - Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uriToStringConverterProperty, 235), + Uri (InternalEntityEntry entry) => entry.ReadOriginalValue(uriToStringConverterProperty, 240), Uri (InternalEntityEntry entry) => entry.GetCurrentValue(uriToStringConverterProperty), - object (ValueBuffer valueBuffer) => valueBuffer[235]); + object (ValueBuffer valueBuffer) => valueBuffer[240]); uriToStringConverterProperty.SetPropertyIndexes( - index: 235, - originalValueIndex: 235, + index: 240, + originalValueIndex: 240, shadowIndex: -1, relationshipIndex: -1, storeGenerationIndex: -1); @@ -13320,6 +13617,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var id = runtimeEntityType.FindProperty("Id"); var @bool = runtimeEntityType.FindProperty("Bool"); var boolArray = runtimeEntityType.FindProperty("BoolArray"); + var boolReadOnlyCollection = runtimeEntityType.FindProperty("BoolReadOnlyCollection"); var boolToStringConverterProperty = runtimeEntityType.FindProperty("BoolToStringConverterProperty"); var boolToTwoValuesConverterProperty = runtimeEntityType.FindProperty("BoolToTwoValuesConverterProperty"); var boolToZeroOneConverterProperty = runtimeEntityType.FindProperty("BoolToZeroOneConverterProperty"); @@ -13407,12 +13705,14 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var guidToStringConverterProperty = runtimeEntityType.FindProperty("GuidToStringConverterProperty"); var iPAddress = runtimeEntityType.FindProperty("IPAddress"); var iPAddressArray = runtimeEntityType.FindProperty("IPAddressArray"); + var iPAddressReadOnlyCollection = runtimeEntityType.FindProperty("IPAddressReadOnlyCollection"); var iPAddressToBytesConverterProperty = runtimeEntityType.FindProperty("IPAddressToBytesConverterProperty"); var iPAddressToStringConverterProperty = runtimeEntityType.FindProperty("IPAddressToStringConverterProperty"); var int16 = runtimeEntityType.FindProperty("Int16"); var int16Array = runtimeEntityType.FindProperty("Int16Array"); var int32 = runtimeEntityType.FindProperty("Int32"); var int32Array = runtimeEntityType.FindProperty("Int32Array"); + var int32ReadOnlyCollection = runtimeEntityType.FindProperty("Int32ReadOnlyCollection"); var int64 = runtimeEntityType.FindProperty("Int64"); var int64Array = runtimeEntityType.FindProperty("Int64Array"); var int8 = runtimeEntityType.FindProperty("Int8"); @@ -13520,6 +13820,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var physicalAddressToStringConverterProperty = runtimeEntityType.FindProperty("PhysicalAddressToStringConverterProperty"); var @string = runtimeEntityType.FindProperty("String"); var stringArray = runtimeEntityType.FindProperty("StringArray"); + var stringReadOnlyCollection = runtimeEntityType.FindProperty("StringReadOnlyCollection"); var stringToBoolConverterProperty = runtimeEntityType.FindProperty("StringToBoolConverterProperty"); var stringToBytesConverterProperty = runtimeEntityType.FindProperty("StringToBytesConverterProperty"); var stringToCharConverterProperty = runtimeEntityType.FindProperty("StringToCharConverterProperty"); @@ -13550,6 +13851,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) var uInt64Array = runtimeEntityType.FindProperty("UInt64Array"); var uInt8 = runtimeEntityType.FindProperty("UInt8"); var uInt8Array = runtimeEntityType.FindProperty("UInt8Array"); + var uInt8ReadOnlyCollection = runtimeEntityType.FindProperty("UInt8ReadOnlyCollection"); var uri = runtimeEntityType.FindProperty("Uri"); var uriArray = runtimeEntityType.FindProperty("UriArray"); var uriToStringConverterProperty = runtimeEntityType.FindProperty("UriToStringConverterProperty"); @@ -13560,21 +13862,23 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) ISnapshot (InternalEntityEntry source) => { var entity = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg = ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), ((ValueComparer)(((IProperty)@bool).GetValueComparer())).Snapshot(source.GetCurrentValue(@bool)), (((IEnumerable)(source.GetCurrentValue(boolArray))) == null ? null : ((bool[])(((ValueComparer>)(((IProperty)boolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(boolArray))))))), ((ValueComparer)(((IProperty)boolToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToStringConverterProperty)), ((ValueComparer)(((IProperty)boolToTwoValuesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToTwoValuesConverterProperty)), ((ValueComparer)(((IProperty)boolToZeroOneConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToZeroOneConverterProperty)), (source.GetCurrentValue(bytes) == null ? null : ((ValueComparer)(((IProperty)bytes).GetValueComparer())).Snapshot(source.GetCurrentValue(bytes))), (((object)(source.GetCurrentValue(bytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)bytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(bytesArray))))))), (source.GetCurrentValue(bytesToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)bytesToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(bytesToStringConverterProperty))), ((ValueComparer)(((IProperty)castingConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(castingConverterProperty)), ((ValueComparer)(((IProperty)@char).GetValueComparer())).Snapshot(source.GetCurrentValue(@char)), (((IEnumerable)(source.GetCurrentValue(charArray))) == null ? null : ((char[])(((ValueComparer>)(((IProperty)charArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(charArray))))))), ((ValueComparer)(((IProperty)charToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(charToStringConverterProperty)), ((ValueComparer)(((IProperty)dateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnly)), (((IEnumerable)(source.GetCurrentValue(dateOnlyArray))) == null ? null : ((DateOnly[])(((ValueComparer>)(((IProperty)dateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateOnlyArray))))))), ((ValueComparer)(((IProperty)dateOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTime)), (((IEnumerable)(source.GetCurrentValue(dateTimeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)dateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateTimeArray))))))), ((ValueComparer)(((IProperty)dateTimeOffsetToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBytesConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToTicksConverterProperty)), ((ValueComparer)(((IProperty)@decimal).GetValueComparer())).Snapshot(source.GetCurrentValue(@decimal)), (((IEnumerable)(source.GetCurrentValue(decimalArray))) == null ? null : ((decimal[])(((ValueComparer>)(((IProperty)decimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(decimalArray))))))), ((ValueComparer)(((IProperty)decimalNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)decimalNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)@double).GetValueComparer())).Snapshot(source.GetCurrentValue(@double)), (((IEnumerable)(source.GetCurrentValue(doubleArray))) == null ? null : ((double[])(((ValueComparer>)(((IProperty)doubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(doubleArray)))))))))); + var liftedArg = ((ISnapshot)(new Snapshot, bool, bool, bool, byte[], byte[][], byte[], int, char, char[], char, DateOnly, DateOnly[], DateOnly, DateTime, DateTime[], DateTimeOffset, DateTimeOffset, DateTimeOffset, DateTime, DateTime, DateTime, decimal, decimal[], decimal, decimal, double>(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id)), ((ValueComparer)(((IProperty)@bool).GetValueComparer())).Snapshot(source.GetCurrentValue(@bool)), (((IEnumerable)(source.GetCurrentValue(boolArray))) == null ? null : ((bool[])(((ValueComparer>)(((IProperty)boolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(boolArray))))))), (((IEnumerable)(source.GetCurrentValue>(boolReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)boolReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(boolReadOnlyCollection))))))), ((ValueComparer)(((IProperty)boolToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToStringConverterProperty)), ((ValueComparer)(((IProperty)boolToTwoValuesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToTwoValuesConverterProperty)), ((ValueComparer)(((IProperty)boolToZeroOneConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(boolToZeroOneConverterProperty)), (source.GetCurrentValue(bytes) == null ? null : ((ValueComparer)(((IProperty)bytes).GetValueComparer())).Snapshot(source.GetCurrentValue(bytes))), (((object)(source.GetCurrentValue(bytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)bytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(bytesArray))))))), (source.GetCurrentValue(bytesToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)bytesToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(bytesToStringConverterProperty))), ((ValueComparer)(((IProperty)castingConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(castingConverterProperty)), ((ValueComparer)(((IProperty)@char).GetValueComparer())).Snapshot(source.GetCurrentValue(@char)), (((IEnumerable)(source.GetCurrentValue(charArray))) == null ? null : ((char[])(((ValueComparer>)(((IProperty)charArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(charArray))))))), ((ValueComparer)(((IProperty)charToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(charToStringConverterProperty)), ((ValueComparer)(((IProperty)dateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnly)), (((IEnumerable)(source.GetCurrentValue(dateOnlyArray))) == null ? null : ((DateOnly[])(((ValueComparer>)(((IProperty)dateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateOnlyArray))))))), ((ValueComparer)(((IProperty)dateOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTime)), (((IEnumerable)(source.GetCurrentValue(dateTimeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)dateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(dateTimeArray))))))), ((ValueComparer)(((IProperty)dateTimeOffsetToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToBytesConverterProperty)), ((ValueComparer)(((IProperty)dateTimeOffsetToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeOffsetToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToBinaryConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToBinaryConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToStringConverterProperty)), ((ValueComparer)(((IProperty)dateTimeToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(dateTimeToTicksConverterProperty)), ((ValueComparer)(((IProperty)@decimal).GetValueComparer())).Snapshot(source.GetCurrentValue(@decimal)), (((IEnumerable)(source.GetCurrentValue(decimalArray))) == null ? null : ((decimal[])(((ValueComparer>)(((IProperty)decimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(decimalArray))))))), ((ValueComparer)(((IProperty)decimalNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)decimalNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(decimalNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)@double).GetValueComparer())).Snapshot(source.GetCurrentValue(@double))))); var entity0 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg0 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], List, List, CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], List, List, CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], List, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32, CompiledModelTestBase.EnumU16, CompiledModelTestBase.EnumU16[]>(((ValueComparer)(((IProperty)doubleNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)doubleNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)enum16).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16)), (((IEnumerable)(source.GetCurrentValue(enum16Array))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16Array))))))), ((ValueComparer)(((IProperty)enum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16AsString)), (((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16Collection))))))), ((ValueComparer)(((IProperty)enum32).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32)), (((IEnumerable)(source.GetCurrentValue(enum32Array))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32Array))))))), ((ValueComparer)(((IProperty)enum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32AsString)), (((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32Collection))))))), ((ValueComparer)(((IProperty)enum64).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64)), (((IEnumerable)(source.GetCurrentValue(enum64Array))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64Array))))))), ((ValueComparer)(((IProperty)enum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64AsString)), (((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64Collection))))))), ((ValueComparer)(((IProperty)enum8).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8)), (((IEnumerable)(source.GetCurrentValue(enum8Array))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8Array))))))), ((ValueComparer)(((IProperty)enum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8AsString)), (((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8Collection))))))), ((ValueComparer)(((IProperty)enumToNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToNumberConverterProperty)), ((ValueComparer)(((IProperty)enumToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToStringConverterProperty)), ((ValueComparer)(((IProperty)enumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16)), (((IEnumerable)(source.GetCurrentValue(enumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16Array)))))))))); + var liftedArg0 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32[], List, List, CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], CompiledModelTestBase.Enum64, CompiledModelTestBase.Enum64[], List, List, CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], CompiledModelTestBase.Enum8, CompiledModelTestBase.Enum8[], List, List, CompiledModelTestBase.Enum32, CompiledModelTestBase.Enum32, CompiledModelTestBase.EnumU16>((((IEnumerable)(source.GetCurrentValue(doubleArray))) == null ? null : ((double[])(((ValueComparer>)(((IProperty)doubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(doubleArray))))))), ((ValueComparer)(((IProperty)doubleNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)doubleNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(doubleNumberToStringConverterProperty)), ((ValueComparer)(((IProperty)enum16).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16)), (((IEnumerable)(source.GetCurrentValue(enum16Array))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16Array))))))), ((ValueComparer)(((IProperty)enum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum16AsString)), (((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16[])(((ValueComparer>)(((IProperty)enum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum16Collection))))))), ((ValueComparer)(((IProperty)enum32).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32)), (((IEnumerable)(source.GetCurrentValue(enum32Array))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32Array))))))), ((ValueComparer)(((IProperty)enum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum32AsString)), (((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32[])(((ValueComparer>)(((IProperty)enum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum32Collection))))))), ((ValueComparer)(((IProperty)enum64).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64)), (((IEnumerable)(source.GetCurrentValue(enum64Array))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64Array))))))), ((ValueComparer)(((IProperty)enum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum64AsString)), (((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64[])(((ValueComparer>)(((IProperty)enum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum64Collection))))))), ((ValueComparer)(((IProperty)enum8).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8)), (((IEnumerable)(source.GetCurrentValue(enum8Array))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8Array))))))), ((ValueComparer)(((IProperty)enum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enum8AsString)), (((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8[])(((ValueComparer>)(((IProperty)enum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enum8Collection))))))), ((ValueComparer)(((IProperty)enumToNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToNumberConverterProperty)), ((ValueComparer)(((IProperty)enumToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(enumToStringConverterProperty)), ((ValueComparer)(((IProperty)enumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16))))); var entity1 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg1 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], List, List, CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], List, List, CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], List, List, float, float[], Guid, Guid[], Guid, Guid, IPAddress, IPAddress[]>(((ValueComparer)(((IProperty)enumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16AsString)), (((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16Collection))))))), ((ValueComparer)(((IProperty)enumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32)), (((IEnumerable)(source.GetCurrentValue(enumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32Array))))))), ((ValueComparer)(((IProperty)enumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32AsString)), (((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32Collection))))))), ((ValueComparer)(((IProperty)enumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64)), (((IEnumerable)(source.GetCurrentValue(enumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64Array))))))), ((ValueComparer)(((IProperty)enumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64AsString)), (((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64Collection))))))), ((ValueComparer)(((IProperty)enumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8)), (((IEnumerable)(source.GetCurrentValue(enumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8Array))))))), ((ValueComparer)(((IProperty)enumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8AsString)), (((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8Collection))))))), ((ValueComparer)(((IProperty)@float).GetValueComparer())).Snapshot(source.GetCurrentValue(@float)), (((IEnumerable)(source.GetCurrentValue(floatArray))) == null ? null : ((float[])(((ValueComparer>)(((IProperty)floatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(floatArray))))))), ((ValueComparer)(((IProperty)guid).GetValueComparer())).Snapshot(source.GetCurrentValue(guid)), (((IEnumerable)(source.GetCurrentValue(guidArray))) == null ? null : ((Guid[])(((ValueComparer>)(((IProperty)guidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(guidArray))))))), ((ValueComparer)(((IProperty)guidToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToBytesConverterProperty)), ((ValueComparer)(((IProperty)guidToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToStringConverterProperty)), (source.GetCurrentValue(iPAddress) == null ? null : ((ValueComparer)(((IProperty)iPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddress))), (((object)(source.GetCurrentValue(iPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)iPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(iPAddressArray)))))))))); + var liftedArg1 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], CompiledModelTestBase.EnumU32, CompiledModelTestBase.EnumU32[], List, List, CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], CompiledModelTestBase.EnumU64, CompiledModelTestBase.EnumU64[], List, List, CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], CompiledModelTestBase.EnumU8, CompiledModelTestBase.EnumU8[], List, List, float, float[], Guid, Guid[], Guid, Guid, IPAddress>((((IEnumerable)(source.GetCurrentValue(enumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16Array))))))), ((ValueComparer)(((IProperty)enumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU16AsString)), (((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16[])(((ValueComparer>)(((IProperty)enumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU16Collection))))))), ((ValueComparer)(((IProperty)enumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32)), (((IEnumerable)(source.GetCurrentValue(enumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32Array))))))), ((ValueComparer)(((IProperty)enumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU32AsString)), (((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32[])(((ValueComparer>)(((IProperty)enumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU32Collection))))))), ((ValueComparer)(((IProperty)enumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64)), (((IEnumerable)(source.GetCurrentValue(enumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64Array))))))), ((ValueComparer)(((IProperty)enumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU64AsString)), (((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64[])(((ValueComparer>)(((IProperty)enumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU64Collection))))))), ((ValueComparer)(((IProperty)enumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8)), (((IEnumerable)(source.GetCurrentValue(enumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8Array))))))), ((ValueComparer)(((IProperty)enumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(enumU8AsString)), (((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8[])(((ValueComparer>)(((IProperty)enumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(enumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(enumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)enumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(enumU8Collection))))))), ((ValueComparer)(((IProperty)@float).GetValueComparer())).Snapshot(source.GetCurrentValue(@float)), (((IEnumerable)(source.GetCurrentValue(floatArray))) == null ? null : ((float[])(((ValueComparer>)(((IProperty)floatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(floatArray))))))), ((ValueComparer)(((IProperty)guid).GetValueComparer())).Snapshot(source.GetCurrentValue(guid)), (((IEnumerable)(source.GetCurrentValue(guidArray))) == null ? null : ((Guid[])(((ValueComparer>)(((IProperty)guidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(guidArray))))))), ((ValueComparer)(((IProperty)guidToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToBytesConverterProperty)), ((ValueComparer)(((IProperty)guidToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(guidToStringConverterProperty)), (source.GetCurrentValue(iPAddress) == null ? null : ((ValueComparer)(((IProperty)iPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddress)))))); var entity2 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg2 = ((ISnapshot)(new Snapshot((source.GetCurrentValue(iPAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToBytesConverterProperty))), (source.GetCurrentValue(iPAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToStringConverterProperty))), ((ValueComparer)(((IProperty)int16).GetValueComparer())).Snapshot(source.GetCurrentValue(int16)), (((IEnumerable)(source.GetCurrentValue(int16Array))) == null ? null : ((short[])(((ValueComparer>)(((IProperty)int16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int16Array))))))), ((ValueComparer)(((IProperty)int32).GetValueComparer())).Snapshot(source.GetCurrentValue(int32)), (((IEnumerable)(source.GetCurrentValue(int32Array))) == null ? null : ((int[])(((ValueComparer>)(((IProperty)int32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int32Array))))))), ((ValueComparer)(((IProperty)int64).GetValueComparer())).Snapshot(source.GetCurrentValue(int64)), (((IEnumerable)(source.GetCurrentValue(int64Array))) == null ? null : ((long[])(((ValueComparer>)(((IProperty)int64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int64Array))))))), ((ValueComparer)(((IProperty)int8).GetValueComparer())).Snapshot(source.GetCurrentValue(int8)), (((IEnumerable)(source.GetCurrentValue(int8Array))) == null ? null : ((sbyte[])(((ValueComparer>)(((IProperty)int8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int8Array))))))), ((ValueComparer)(((IProperty)intNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)intNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToStringConverterProperty)), (source.GetCurrentValue(nullIntToNullStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)nullIntToNullStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(nullIntToNullStringConverterProperty))), (source.GetCurrentValue(nullableBool) == null ? null : ((ValueComparer)(((IProperty)nullableBool).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBool))), (((IEnumerable)(source.GetCurrentValue(nullableBoolArray))) == null ? null : ((bool? [])(((ValueComparer>)(((IProperty)nullableBoolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableBoolArray))))))), (source.GetCurrentValue(nullableBytes) == null ? null : ((ValueComparer)(((IProperty)nullableBytes).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBytes))), (((object)(source.GetCurrentValue(nullableBytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)nullableBytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableBytesArray))))))), (source.GetCurrentValue(nullableChar) == null ? null : ((ValueComparer)(((IProperty)nullableChar).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableChar))), (((IEnumerable)(source.GetCurrentValue(nullableCharArray))) == null ? null : ((char? [])(((ValueComparer>)(((IProperty)nullableCharArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableCharArray))))))), (source.GetCurrentValue(nullableDateOnly) == null ? null : ((ValueComparer)(((IProperty)nullableDateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateOnly))), (((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))) == null ? null : ((DateOnly? [])(((ValueComparer>)(((IProperty)nullableDateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))))))), (source.GetCurrentValue(nullableDateTime) == null ? null : ((ValueComparer)(((IProperty)nullableDateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateTime))), (((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))) == null ? null : ((DateTime? [])(((ValueComparer>)(((IProperty)nullableDateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))))))), (source.GetCurrentValue(nullableDecimal) == null ? null : ((ValueComparer)(((IProperty)nullableDecimal).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDecimal))), (((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))) == null ? null : ((decimal? [])(((ValueComparer>)(((IProperty)nullableDecimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))))))), (source.GetCurrentValue(nullableDouble) == null ? null : ((ValueComparer)(((IProperty)nullableDouble).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDouble))), (((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))) == null ? null : ((double? [])(((ValueComparer>)(((IProperty)nullableDoubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))))))), (source.GetCurrentValue(nullableEnum16) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))))))), (source.GetCurrentValue(nullableEnum16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16AsString)))))); + var liftedArg2 = ((ISnapshot)(new Snapshot, IPAddress, IPAddress, short, short[], int, int[], IReadOnlyCollection, long, long[], sbyte, sbyte[], int, int, int?, bool?, bool? [], byte[], byte[][], char?, char? [], DateOnly?, DateOnly? [], DateTime?, DateTime? [], decimal?, decimal? [], double?, double? []>((((object)(source.GetCurrentValue(iPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)iPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(iPAddressArray))))))), (((object)(source.GetCurrentValue>(iPAddressReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer)(((IProperty)iPAddressReadOnlyCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(iPAddressReadOnlyCollection))))))), (source.GetCurrentValue(iPAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToBytesConverterProperty))), (source.GetCurrentValue(iPAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)iPAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(iPAddressToStringConverterProperty))), ((ValueComparer)(((IProperty)int16).GetValueComparer())).Snapshot(source.GetCurrentValue(int16)), (((IEnumerable)(source.GetCurrentValue(int16Array))) == null ? null : ((short[])(((ValueComparer>)(((IProperty)int16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int16Array))))))), ((ValueComparer)(((IProperty)int32).GetValueComparer())).Snapshot(source.GetCurrentValue(int32)), (((IEnumerable)(source.GetCurrentValue(int32Array))) == null ? null : ((int[])(((ValueComparer>)(((IProperty)int32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int32Array))))))), (((IEnumerable)(source.GetCurrentValue>(int32ReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)int32ReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(int32ReadOnlyCollection))))))), ((ValueComparer)(((IProperty)int64).GetValueComparer())).Snapshot(source.GetCurrentValue(int64)), (((IEnumerable)(source.GetCurrentValue(int64Array))) == null ? null : ((long[])(((ValueComparer>)(((IProperty)int64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int64Array))))))), ((ValueComparer)(((IProperty)int8).GetValueComparer())).Snapshot(source.GetCurrentValue(int8)), (((IEnumerable)(source.GetCurrentValue(int8Array))) == null ? null : ((sbyte[])(((ValueComparer>)(((IProperty)int8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(int8Array))))))), ((ValueComparer)(((IProperty)intNumberToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToBytesConverterProperty)), ((ValueComparer)(((IProperty)intNumberToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(intNumberToStringConverterProperty)), (source.GetCurrentValue(nullIntToNullStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)nullIntToNullStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(nullIntToNullStringConverterProperty))), (source.GetCurrentValue(nullableBool) == null ? null : ((ValueComparer)(((IProperty)nullableBool).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBool))), (((IEnumerable)(source.GetCurrentValue(nullableBoolArray))) == null ? null : ((bool? [])(((ValueComparer>)(((IProperty)nullableBoolArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableBoolArray))))))), (source.GetCurrentValue(nullableBytes) == null ? null : ((ValueComparer)(((IProperty)nullableBytes).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableBytes))), (((object)(source.GetCurrentValue(nullableBytesArray))) == null ? null : ((byte[][])(((ValueComparer)(((IProperty)nullableBytesArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableBytesArray))))))), (source.GetCurrentValue(nullableChar) == null ? null : ((ValueComparer)(((IProperty)nullableChar).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableChar))), (((IEnumerable)(source.GetCurrentValue(nullableCharArray))) == null ? null : ((char? [])(((ValueComparer>)(((IProperty)nullableCharArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableCharArray))))))), (source.GetCurrentValue(nullableDateOnly) == null ? null : ((ValueComparer)(((IProperty)nullableDateOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateOnly))), (((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))) == null ? null : ((DateOnly? [])(((ValueComparer>)(((IProperty)nullableDateOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateOnlyArray))))))), (source.GetCurrentValue(nullableDateTime) == null ? null : ((ValueComparer)(((IProperty)nullableDateTime).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDateTime))), (((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))) == null ? null : ((DateTime? [])(((ValueComparer>)(((IProperty)nullableDateTimeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDateTimeArray))))))), (source.GetCurrentValue(nullableDecimal) == null ? null : ((ValueComparer)(((IProperty)nullableDecimal).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDecimal))), (((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))) == null ? null : ((decimal? [])(((ValueComparer>)(((IProperty)nullableDecimalArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDecimalArray))))))), (source.GetCurrentValue(nullableDouble) == null ? null : ((ValueComparer)(((IProperty)nullableDouble).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableDouble))), (((IEnumerable)(source.GetCurrentValue(nullableDoubleArray))) == null ? null : ((double? [])(((ValueComparer>)(((IProperty)nullableDoubleArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableDoubleArray)))))))))); var entity3 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg3 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], List, List, CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], List, List, CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], List, List, CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], List, List, CompiledModelTestBase.EnumU32?, CompiledModelTestBase.EnumU32? [], CompiledModelTestBase.EnumU32?>((((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))))))), (source.GetCurrentValue(nullableEnum32) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))))))), (source.GetCurrentValue(nullableEnum32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))))))), (source.GetCurrentValue(nullableEnum64) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))))))), (source.GetCurrentValue(nullableEnum64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))))))), (source.GetCurrentValue(nullableEnum8) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))))))), (source.GetCurrentValue(nullableEnum8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))))))), (source.GetCurrentValue(nullableEnumU16) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))))))), (source.GetCurrentValue(nullableEnumU16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))))))), (source.GetCurrentValue(nullableEnumU32) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))))))), (source.GetCurrentValue(nullableEnumU32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32AsString)))))); + var liftedArg3 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], CompiledModelTestBase.Enum32?, CompiledModelTestBase.Enum32? [], List, List, CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], CompiledModelTestBase.Enum64?, CompiledModelTestBase.Enum64? [], List, List, CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], CompiledModelTestBase.Enum8?, CompiledModelTestBase.Enum8? [], List, List, CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], CompiledModelTestBase.EnumU16?, CompiledModelTestBase.EnumU16? [], List, List>((source.GetCurrentValue(nullableEnum16) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16Array))))))), (source.GetCurrentValue(nullableEnum16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum16? [])(((ValueComparer>)(((IProperty)nullableEnum16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum16Collection))))))), (source.GetCurrentValue(nullableEnum32) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32Array))))))), (source.GetCurrentValue(nullableEnum32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum32? [])(((ValueComparer>)(((IProperty)nullableEnum32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum32Collection))))))), (source.GetCurrentValue(nullableEnum64) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64Array))))))), (source.GetCurrentValue(nullableEnum64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum64? [])(((ValueComparer>)(((IProperty)nullableEnum64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum64Collection))))))), (source.GetCurrentValue(nullableEnum8) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8Array))))))), (source.GetCurrentValue(nullableEnum8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnum8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnum8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))) == null ? null : ((CompiledModelTestBase.Enum8? [])(((ValueComparer>)(((IProperty)nullableEnum8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnum8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnum8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnum8Collection))))))), (source.GetCurrentValue(nullableEnumU16) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16Array))))))), (source.GetCurrentValue(nullableEnumU16AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU16AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU16AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU16? [])(((ValueComparer>)(((IProperty)nullableEnumU16AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU16AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU16Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU16Collection)))))))))); var entity4 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg4 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], List, List, CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], List, List, float?, float? [], Guid?, Guid? [], IPAddress, IPAddress[], short?, short? [], int?, int? [], long?, long? [], sbyte?, sbyte? [], PhysicalAddress>((((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))))))), (source.GetCurrentValue(nullableEnumU64) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))))))), (source.GetCurrentValue(nullableEnumU64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))))))), (source.GetCurrentValue(nullableEnumU8) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))))))), (source.GetCurrentValue(nullableEnumU8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))))))), (source.GetCurrentValue(nullableFloat) == null ? null : ((ValueComparer)(((IProperty)nullableFloat).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableFloat))), (((IEnumerable)(source.GetCurrentValue(nullableFloatArray))) == null ? null : ((float? [])(((ValueComparer>)(((IProperty)nullableFloatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableFloatArray))))))), (source.GetCurrentValue(nullableGuid) == null ? null : ((ValueComparer)(((IProperty)nullableGuid).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableGuid))), (((IEnumerable)(source.GetCurrentValue(nullableGuidArray))) == null ? null : ((Guid? [])(((ValueComparer>)(((IProperty)nullableGuidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableGuidArray))))))), (source.GetCurrentValue(nullableIPAddress) == null ? null : ((ValueComparer)(((IProperty)nullableIPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableIPAddress))), (((object)(source.GetCurrentValue(nullableIPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)nullableIPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableIPAddressArray))))))), (source.GetCurrentValue(nullableInt16) == null ? null : ((ValueComparer)(((IProperty)nullableInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt16))), (((IEnumerable)(source.GetCurrentValue(nullableInt16Array))) == null ? null : ((short? [])(((ValueComparer>)(((IProperty)nullableInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt16Array))))))), (source.GetCurrentValue(nullableInt32) == null ? null : ((ValueComparer)(((IProperty)nullableInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt32))), (((IEnumerable)(source.GetCurrentValue(nullableInt32Array))) == null ? null : ((int? [])(((ValueComparer>)(((IProperty)nullableInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt32Array))))))), (source.GetCurrentValue(nullableInt64) == null ? null : ((ValueComparer)(((IProperty)nullableInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt64))), (((IEnumerable)(source.GetCurrentValue(nullableInt64Array))) == null ? null : ((long? [])(((ValueComparer>)(((IProperty)nullableInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt64Array))))))), (source.GetCurrentValue(nullableInt8) == null ? null : ((ValueComparer)(((IProperty)nullableInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt8))), (((IEnumerable)(source.GetCurrentValue(nullableInt8Array))) == null ? null : ((sbyte? [])(((ValueComparer>)(((IProperty)nullableInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt8Array))))))), (source.GetCurrentValue(nullablePhysicalAddress) == null ? null : ((ValueComparer)(((IProperty)nullablePhysicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullablePhysicalAddress)))))); + var liftedArg4 = ((ISnapshot)(new Snapshot, List, CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], CompiledModelTestBase.EnumU64?, CompiledModelTestBase.EnumU64? [], List, List, CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], CompiledModelTestBase.EnumU8?, CompiledModelTestBase.EnumU8? [], List, List, float?, float? [], Guid?, Guid? [], IPAddress, IPAddress[], short?, short? [], int?, int? [], long?, long? []>((source.GetCurrentValue(nullableEnumU32) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32Array))))))), (source.GetCurrentValue(nullableEnumU32AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU32AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU32AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU32? [])(((ValueComparer>)(((IProperty)nullableEnumU32AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU32AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU32Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU32Collection))))))), (source.GetCurrentValue(nullableEnumU64) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64Array))))))), (source.GetCurrentValue(nullableEnumU64AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU64AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU64AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU64? [])(((ValueComparer>)(((IProperty)nullableEnumU64AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU64AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU64Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU64Collection))))))), (source.GetCurrentValue(nullableEnumU8) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8Array))))))), (source.GetCurrentValue(nullableEnumU8AsString) == null ? null : ((ValueComparer)(((IProperty)nullableEnumU8AsString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableEnumU8AsString))), (((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))) == null ? null : ((CompiledModelTestBase.EnumU8? [])(((ValueComparer>)(((IProperty)nullableEnumU8AsStringArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableEnumU8AsStringArray))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8AsStringCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8AsStringCollection))))))), (((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))) == null ? null : ((List)(((ValueComparer>)(((IProperty)nullableEnumU8Collection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(nullableEnumU8Collection))))))), (source.GetCurrentValue(nullableFloat) == null ? null : ((ValueComparer)(((IProperty)nullableFloat).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableFloat))), (((IEnumerable)(source.GetCurrentValue(nullableFloatArray))) == null ? null : ((float? [])(((ValueComparer>)(((IProperty)nullableFloatArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableFloatArray))))))), (source.GetCurrentValue(nullableGuid) == null ? null : ((ValueComparer)(((IProperty)nullableGuid).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableGuid))), (((IEnumerable)(source.GetCurrentValue(nullableGuidArray))) == null ? null : ((Guid? [])(((ValueComparer>)(((IProperty)nullableGuidArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableGuidArray))))))), (source.GetCurrentValue(nullableIPAddress) == null ? null : ((ValueComparer)(((IProperty)nullableIPAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableIPAddress))), (((object)(source.GetCurrentValue(nullableIPAddressArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)nullableIPAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableIPAddressArray))))))), (source.GetCurrentValue(nullableInt16) == null ? null : ((ValueComparer)(((IProperty)nullableInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt16))), (((IEnumerable)(source.GetCurrentValue(nullableInt16Array))) == null ? null : ((short? [])(((ValueComparer>)(((IProperty)nullableInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt16Array))))))), (source.GetCurrentValue(nullableInt32) == null ? null : ((ValueComparer)(((IProperty)nullableInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt32))), (((IEnumerable)(source.GetCurrentValue(nullableInt32Array))) == null ? null : ((int? [])(((ValueComparer>)(((IProperty)nullableInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt32Array))))))), (source.GetCurrentValue(nullableInt64) == null ? null : ((ValueComparer)(((IProperty)nullableInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt64))), (((IEnumerable)(source.GetCurrentValue(nullableInt64Array))) == null ? null : ((long? [])(((ValueComparer>)(((IProperty)nullableInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt64Array)))))))))); var entity5 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - var liftedArg5 = ((ISnapshot)(new Snapshot((((object)(source.GetCurrentValue(nullablePhysicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)nullablePhysicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullablePhysicalAddressArray))))))), (source.GetCurrentValue(nullableString) == null ? null : ((ValueComparer)(((IProperty)nullableString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableString))), (((object)(source.GetCurrentValue(nullableStringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)nullableStringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringArray))))))), (source.GetCurrentValue(nullableTimeOnly) == null ? null : ((ValueComparer)(((IProperty)nullableTimeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeOnly))), (((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))) == null ? null : ((TimeOnly? [])(((ValueComparer>)(((IProperty)nullableTimeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))))))), (source.GetCurrentValue(nullableTimeSpan) == null ? null : ((ValueComparer)(((IProperty)nullableTimeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeSpan))), (((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))) == null ? null : ((TimeSpan? [])(((ValueComparer>)(((IProperty)nullableTimeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))))))), (source.GetCurrentValue(nullableUInt16) == null ? null : ((ValueComparer)(((IProperty)nullableUInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt16))), (((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))) == null ? null : ((ushort? [])(((ValueComparer>)(((IProperty)nullableUInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))))))), (source.GetCurrentValue(nullableUInt32) == null ? null : ((ValueComparer)(((IProperty)nullableUInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt32))), (((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))) == null ? null : ((uint? [])(((ValueComparer>)(((IProperty)nullableUInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))))))), (source.GetCurrentValue(nullableUInt64) == null ? null : ((ValueComparer)(((IProperty)nullableUInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt64))), (((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))) == null ? null : ((ulong? [])(((ValueComparer>)(((IProperty)nullableUInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))))))), (source.GetCurrentValue(nullableUInt8) == null ? null : ((ValueComparer)(((IProperty)nullableUInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt8))), (((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))) == null ? null : ((byte? [])(((ValueComparer>)(((IProperty)nullableUInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))))))), (source.GetCurrentValue(nullableUri) == null ? null : ((ValueComparer)(((IProperty)nullableUri).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUri))), (((object)(source.GetCurrentValue(nullableUriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)nullableUriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableUriArray))))))), (source.GetCurrentValue(physicalAddress) == null ? null : ((ValueComparer)(((IProperty)physicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddress))), (((object)(source.GetCurrentValue(physicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)physicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(physicalAddressArray))))))), (source.GetCurrentValue(physicalAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToBytesConverterProperty))), (source.GetCurrentValue(physicalAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToStringConverterProperty))), (source.GetCurrentValue(@string) == null ? null : ((ValueComparer)(((IProperty)@string).GetValueComparer())).Snapshot(source.GetCurrentValue(@string))), (((object)(source.GetCurrentValue(stringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)stringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringArray))))))), (source.GetCurrentValue(stringToBoolConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBoolConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBoolConverterProperty))), (source.GetCurrentValue(stringToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBytesConverterProperty))), (source.GetCurrentValue(stringToCharConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToCharConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToCharConverterProperty))), (source.GetCurrentValue(stringToDateOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateOnlyConverterProperty))), (source.GetCurrentValue(stringToDateTimeConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeConverterProperty))), (source.GetCurrentValue(stringToDateTimeOffsetConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeOffsetConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeOffsetConverterProperty))), (source.GetCurrentValue(stringToDecimalNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDecimalNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDecimalNumberConverterProperty)))))); + var liftedArg5 = ((ISnapshot)(new Snapshot, string, string, string>((source.GetCurrentValue(nullableInt8) == null ? null : ((ValueComparer)(((IProperty)nullableInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableInt8))), (((IEnumerable)(source.GetCurrentValue(nullableInt8Array))) == null ? null : ((sbyte? [])(((ValueComparer>)(((IProperty)nullableInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableInt8Array))))))), (source.GetCurrentValue(nullablePhysicalAddress) == null ? null : ((ValueComparer)(((IProperty)nullablePhysicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(nullablePhysicalAddress))), (((object)(source.GetCurrentValue(nullablePhysicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)nullablePhysicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullablePhysicalAddressArray))))))), (source.GetCurrentValue(nullableString) == null ? null : ((ValueComparer)(((IProperty)nullableString).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableString))), (((object)(source.GetCurrentValue(nullableStringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)nullableStringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableStringArray))))))), (source.GetCurrentValue(nullableTimeOnly) == null ? null : ((ValueComparer)(((IProperty)nullableTimeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeOnly))), (((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))) == null ? null : ((TimeOnly? [])(((ValueComparer>)(((IProperty)nullableTimeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeOnlyArray))))))), (source.GetCurrentValue(nullableTimeSpan) == null ? null : ((ValueComparer)(((IProperty)nullableTimeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableTimeSpan))), (((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))) == null ? null : ((TimeSpan? [])(((ValueComparer>)(((IProperty)nullableTimeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableTimeSpanArray))))))), (source.GetCurrentValue(nullableUInt16) == null ? null : ((ValueComparer)(((IProperty)nullableUInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt16))), (((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))) == null ? null : ((ushort? [])(((ValueComparer>)(((IProperty)nullableUInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt16Array))))))), (source.GetCurrentValue(nullableUInt32) == null ? null : ((ValueComparer)(((IProperty)nullableUInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt32))), (((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))) == null ? null : ((uint? [])(((ValueComparer>)(((IProperty)nullableUInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt32Array))))))), (source.GetCurrentValue(nullableUInt64) == null ? null : ((ValueComparer)(((IProperty)nullableUInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt64))), (((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))) == null ? null : ((ulong? [])(((ValueComparer>)(((IProperty)nullableUInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt64Array))))))), (source.GetCurrentValue(nullableUInt8) == null ? null : ((ValueComparer)(((IProperty)nullableUInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUInt8))), (((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))) == null ? null : ((byte? [])(((ValueComparer>)(((IProperty)nullableUInt8Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(nullableUInt8Array))))))), (source.GetCurrentValue(nullableUri) == null ? null : ((ValueComparer)(((IProperty)nullableUri).GetValueComparer())).Snapshot(source.GetCurrentValue(nullableUri))), (((object)(source.GetCurrentValue(nullableUriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)nullableUriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(nullableUriArray))))))), (source.GetCurrentValue(physicalAddress) == null ? null : ((ValueComparer)(((IProperty)physicalAddress).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddress))), (((object)(source.GetCurrentValue(physicalAddressArray))) == null ? null : ((PhysicalAddress[])(((ValueComparer)(((IProperty)physicalAddressArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(physicalAddressArray))))))), (source.GetCurrentValue(physicalAddressToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToBytesConverterProperty))), (source.GetCurrentValue(physicalAddressToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)physicalAddressToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(physicalAddressToStringConverterProperty))), (source.GetCurrentValue(@string) == null ? null : ((ValueComparer)(((IProperty)@string).GetValueComparer())).Snapshot(source.GetCurrentValue(@string))), (((object)(source.GetCurrentValue(stringArray))) == null ? null : ((string[])(((ValueComparer)(((IProperty)stringArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(stringArray))))))), (((object)(source.GetCurrentValue>(stringReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer)(((IProperty)stringReadOnlyCollection).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(stringReadOnlyCollection))))))), (source.GetCurrentValue(stringToBoolConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBoolConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBoolConverterProperty))), (source.GetCurrentValue(stringToBytesConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToBytesConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToBytesConverterProperty))), (source.GetCurrentValue(stringToCharConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToCharConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToCharConverterProperty)))))); var entity6 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); - return ((ISnapshot)(new MultiSnapshot(new ISnapshot[] { liftedArg, liftedArg0, liftedArg1, liftedArg2, liftedArg3, liftedArg4, liftedArg5, ((ISnapshot)(new Snapshot((source.GetCurrentValue(stringToDoubleNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDoubleNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDoubleNumberConverterProperty))), (source.GetCurrentValue(stringToEnumConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToEnumConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToEnumConverterProperty))), (source.GetCurrentValue(stringToGuidConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToGuidConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToGuidConverterProperty))), (source.GetCurrentValue(stringToIntNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToIntNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToIntNumberConverterProperty))), (source.GetCurrentValue(stringToTimeOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeOnlyConverterProperty))), (source.GetCurrentValue(stringToTimeSpanConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeSpanConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeSpanConverterProperty))), (source.GetCurrentValue(stringToUriConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToUriConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToUriConverterProperty))), ((ValueComparer)(((IProperty)timeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnly)), (((IEnumerable)(source.GetCurrentValue(timeOnlyArray))) == null ? null : ((TimeOnly[])(((ValueComparer>)(((IProperty)timeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeOnlyArray))))))), ((ValueComparer)(((IProperty)timeOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)timeOnlyToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToTicksConverterProperty)), ((ValueComparer)(((IProperty)timeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpan)), (((IEnumerable)(source.GetCurrentValue(timeSpanArray))) == null ? null : ((TimeSpan[])(((ValueComparer>)(((IProperty)timeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeSpanArray))))))), ((ValueComparer)(((IProperty)timeSpanToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToStringConverterProperty)), ((ValueComparer)(((IProperty)timeSpanToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToTicksConverterProperty)), ((ValueComparer)(((IProperty)uInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt16)), (((IEnumerable)(source.GetCurrentValue(uInt16Array))) == null ? null : ((ushort[])(((ValueComparer>)(((IProperty)uInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt16Array))))))), ((ValueComparer)(((IProperty)uInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt32)), (((IEnumerable)(source.GetCurrentValue(uInt32Array))) == null ? null : ((uint[])(((ValueComparer>)(((IProperty)uInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt32Array))))))), ((ValueComparer)(((IProperty)uInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt64)), (((IEnumerable)(source.GetCurrentValue(uInt64Array))) == null ? null : ((ulong[])(((ValueComparer>)(((IProperty)uInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt64Array))))))), ((ValueComparer)(((IProperty)uInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8)), (source.GetCurrentValue(uInt8Array) == null ? null : ((ValueComparer)(((IProperty)uInt8Array).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8Array))), (source.GetCurrentValue(uri) == null ? null : ((ValueComparer)(((IProperty)uri).GetValueComparer())).Snapshot(source.GetCurrentValue(uri))), (((object)(source.GetCurrentValue(uriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)uriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(uriArray))))))), (source.GetCurrentValue(uriToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)uriToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(uriToStringConverterProperty)))))) }))); + var liftedArg6 = ((ISnapshot)(new Snapshot, Uri, Uri[]>((source.GetCurrentValue(stringToDateOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateOnlyConverterProperty))), (source.GetCurrentValue(stringToDateTimeConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeConverterProperty))), (source.GetCurrentValue(stringToDateTimeOffsetConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDateTimeOffsetConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDateTimeOffsetConverterProperty))), (source.GetCurrentValue(stringToDecimalNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDecimalNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDecimalNumberConverterProperty))), (source.GetCurrentValue(stringToDoubleNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToDoubleNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToDoubleNumberConverterProperty))), (source.GetCurrentValue(stringToEnumConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToEnumConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToEnumConverterProperty))), (source.GetCurrentValue(stringToGuidConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToGuidConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToGuidConverterProperty))), (source.GetCurrentValue(stringToIntNumberConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToIntNumberConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToIntNumberConverterProperty))), (source.GetCurrentValue(stringToTimeOnlyConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeOnlyConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeOnlyConverterProperty))), (source.GetCurrentValue(stringToTimeSpanConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToTimeSpanConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToTimeSpanConverterProperty))), (source.GetCurrentValue(stringToUriConverterProperty) == null ? null : ((ValueComparer)(((IProperty)stringToUriConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(stringToUriConverterProperty))), ((ValueComparer)(((IProperty)timeOnly).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnly)), (((IEnumerable)(source.GetCurrentValue(timeOnlyArray))) == null ? null : ((TimeOnly[])(((ValueComparer>)(((IProperty)timeOnlyArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeOnlyArray))))))), ((ValueComparer)(((IProperty)timeOnlyToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToStringConverterProperty)), ((ValueComparer)(((IProperty)timeOnlyToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeOnlyToTicksConverterProperty)), ((ValueComparer)(((IProperty)timeSpan).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpan)), (((IEnumerable)(source.GetCurrentValue(timeSpanArray))) == null ? null : ((TimeSpan[])(((ValueComparer>)(((IProperty)timeSpanArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(timeSpanArray))))))), ((ValueComparer)(((IProperty)timeSpanToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToStringConverterProperty)), ((ValueComparer)(((IProperty)timeSpanToTicksConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(timeSpanToTicksConverterProperty)), ((ValueComparer)(((IProperty)uInt16).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt16)), (((IEnumerable)(source.GetCurrentValue(uInt16Array))) == null ? null : ((ushort[])(((ValueComparer>)(((IProperty)uInt16Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt16Array))))))), ((ValueComparer)(((IProperty)uInt32).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt32)), (((IEnumerable)(source.GetCurrentValue(uInt32Array))) == null ? null : ((uint[])(((ValueComparer>)(((IProperty)uInt32Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt32Array))))))), ((ValueComparer)(((IProperty)uInt64).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt64)), (((IEnumerable)(source.GetCurrentValue(uInt64Array))) == null ? null : ((ulong[])(((ValueComparer>)(((IProperty)uInt64Array).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(uInt64Array))))))), ((ValueComparer)(((IProperty)uInt8).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8)), (source.GetCurrentValue(uInt8Array) == null ? null : ((ValueComparer)(((IProperty)uInt8Array).GetValueComparer())).Snapshot(source.GetCurrentValue(uInt8Array))), (((IEnumerable)(source.GetCurrentValue>(uInt8ReadOnlyCollection))) == null ? null : ((IReadOnlyCollection)(((ValueComparer>)(((IProperty)uInt8ReadOnlyCollection).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(uInt8ReadOnlyCollection))))))), (source.GetCurrentValue(uri) == null ? null : ((ValueComparer)(((IProperty)uri).GetValueComparer())).Snapshot(source.GetCurrentValue(uri))), (((object)(source.GetCurrentValue(uriArray))) == null ? null : ((Uri[])(((ValueComparer)(((IProperty)uriArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(uriArray)))))))))); + var entity7 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); + return ((ISnapshot)(new MultiSnapshot(new ISnapshot[] { liftedArg, liftedArg0, liftedArg1, liftedArg2, liftedArg3, liftedArg4, liftedArg5, liftedArg6, ((ISnapshot)(new Snapshot((source.GetCurrentValue(uriToStringConverterProperty) == null ? null : ((ValueComparer)(((IProperty)uriToStringConverterProperty).GetValueComparer())).Snapshot(source.GetCurrentValue(uriToStringConverterProperty)))))) }))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( ISnapshot () => ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(default(CompiledModelTestBase.ManyTypesId)))))); @@ -13587,14 +13891,14 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); + var entity8 = ((CompiledModelTestBase.ManyTypes)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))))); }); runtimeEntityType.Counts = new PropertyCounts( - propertyCount: 236, + propertyCount: 241, navigationCount: 0, complexPropertyCount: 0, - originalValueCount: 236, + originalValueCount: 241, shadowCount: 0, relationshipCount: 1, storeGeneratedCount: 1); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesUnsafeAccessors.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesUnsafeAccessors.cs index 8212477912e..48de8dc1ceb 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesUnsafeAccessors.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/ManyTypesUnsafeAccessors.cs @@ -22,6 +22,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref bool[] BoolArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_boolReadOnlyCollection")] + public static extern ref List _boolReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref bool BoolToStringConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -283,6 +286,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref IPAddress[] IPAddressArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_ipAddressReadOnlyCollection")] + public static extern ref List _ipAddressReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref IPAddress IPAddressToBytesConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -301,6 +307,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref int[] Int32Array(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_int32ReadOnlyCollection")] + public static extern ref List _int32ReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref long Int64(CompiledModelTestBase.ManyTypes @this); @@ -622,6 +631,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref string[] StringArray(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_stringReadOnlyCollection")] + public static extern ref List _stringReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref string StringToBoolConverterProperty(CompiledModelTestBase.ManyTypes @this); @@ -712,6 +724,9 @@ public static class ManyTypesUnsafeAccessors [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref byte[] UInt8Array(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "_uInt8ReadOnlyCollection")] + public static extern ref List _uInt8ReadOnlyCollection(CompiledModelTestBase.ManyTypes @this); + [UnsafeAccessor(UnsafeAccessorKind.Field, Name = "k__BackingField")] public static extern ref Uri Uri(CompiledModelTestBase.ManyTypes @this); diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs index 4418c95a5e3..ea942c6faa9 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedType0EntityType.cs @@ -753,7 +753,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>(((ValueComparer)(((IProperty)principalDerivedId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedId)), ((ValueComparer)(((IProperty)principalDerivedAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedAlternateId)), ((ValueComparer)(((IProperty)__synthesizedOrdinal).GetValueComparer())).Snapshot(source.GetCurrentValue(__synthesizedOrdinal)), (source.GetCurrentValue(details) == null ? null : ((ValueComparer)(((IProperty)details).GetValueComparer())).Snapshot(source.GetCurrentValue(details))), ((ValueComparer)(((IProperty)number).GetValueComparer())).Snapshot(source.GetCurrentValue(number)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -767,7 +767,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalDerivedId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedId)), ((ValueComparer)(((IProperty)principalDerivedAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalDerivedAlternateId)), ((ValueComparer)(((IProperty)__synthesizedOrdinal).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(__synthesizedOrdinal))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs index 302a3c48557..0be37f0f609 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/OwnedTypeEntityType.cs @@ -727,7 +727,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>(((ValueComparer)(((IProperty)principalBaseId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalBaseId)), ((ValueComparer)(((IProperty)principalBaseAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalBaseAlternateId)), (source.GetCurrentValue(details) == null ? null : ((ValueComparer)(((IProperty)details).GetValueComparer())).Snapshot(source.GetCurrentValue(details))), ((ValueComparer)(((IProperty)number).GetValueComparer())).Snapshot(source.GetCurrentValue(number)), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -741,7 +741,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.OwnedType)(source.Entity)); + var entity8 = ((CompiledModelTestBase.OwnedType)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)principalBaseId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalBaseId)), ((ValueComparer)(((IProperty)principalBaseAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalBaseAlternateId))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs index d16e1bfa60f..8455fd3e24b 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBaseEntityType.cs @@ -934,7 +934,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); + var entity8 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), (source.GetCurrentValue(discriminator) == null ? null : ((ValueComparer)(((IProperty)discriminator).GetValueComparer())).Snapshot(source.GetCurrentValue(discriminator))), ((ValueComparer)(((IProperty)enum1).GetValueComparer())).Snapshot(source.GetCurrentValue(enum1)), (source.GetCurrentValue(enum2) == null ? null : ((ValueComparer)(((IProperty)enum2).GetValueComparer())).Snapshot(source.GetCurrentValue(enum2))), ((ValueComparer)(((IProperty)flagsEnum1).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum1)), ((ValueComparer)(((IProperty)flagsEnum2).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum2)), (source.GetCurrentValue(point) == null ? null : ((ValueComparer)(((IProperty)point).GetValueComparer())).Snapshot(source.GetCurrentValue(point))), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -948,8 +948,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); - return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity7), (object)(null)))); + var entity8 = ((CompiledModelTestBase.PrincipalBase)(source.Entity)); + return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity8), (object)(null)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 16, diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs index f2b9562ce0d..4220d8c41d7 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalBasePrincipalDerivedDependentBasebyteEntityType.cs @@ -364,7 +364,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((Dictionary)(source.Entity)); + var entity8 = ((Dictionary)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)derivedsId).GetValueComparer())).Snapshot(source.GetCurrentValue(derivedsId)), ((ValueComparer)(((IProperty)derivedsAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(derivedsAlternateId)), ((ValueComparer)(((IProperty)principalsId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalsId)), ((ValueComparer)(((IProperty)principalsAlternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(principalsAlternateId)), (source.GetCurrentValue(rowid) == null ? null : ((ValueComparer)(((IProperty)rowid).GetValueComparer())).Snapshot(source.GetCurrentValue(rowid)))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -378,7 +378,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((Dictionary)(source.Entity)); + var entity8 = ((Dictionary)(source.Entity)); return ((ISnapshot)(new Snapshot(((ValueComparer)(((IProperty)derivedsId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(derivedsId)), ((ValueComparer)(((IProperty)derivedsAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(derivedsAlternateId)), ((ValueComparer)(((IProperty)principalsId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalsId)), ((ValueComparer)(((IProperty)principalsAlternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(principalsAlternateId))))); }); runtimeEntityType.Counts = new PropertyCounts( diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalDerivedEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalDerivedEntityType.cs index 26073ee6b59..fd655ea1519 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalDerivedEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/BigModel_with_JSON_columns/PrincipalDerivedEntityType.cs @@ -110,7 +110,7 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetOriginalValuesFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); + var entity8 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); return ((ISnapshot)(new Snapshot, IList, List, DateTime[], IEnumerable, IList, List>((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), (source.GetCurrentValue(discriminator) == null ? null : ((ValueComparer)(((IProperty)discriminator).GetValueComparer())).Snapshot(source.GetCurrentValue(discriminator))), ((ValueComparer)(((IProperty)enum1).GetValueComparer())).Snapshot(source.GetCurrentValue(enum1)), (source.GetCurrentValue(enum2) == null ? null : ((ValueComparer)(((IProperty)enum2).GetValueComparer())).Snapshot(source.GetCurrentValue(enum2))), ((ValueComparer)(((IProperty)flagsEnum1).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum1)), ((ValueComparer)(((IProperty)flagsEnum2).GetValueComparer())).Snapshot(source.GetCurrentValue(flagsEnum2)), (source.GetCurrentValue(point) == null ? null : ((ValueComparer)(((IProperty)point).GetValueComparer())).Snapshot(source.GetCurrentValue(point))), (((object)(source.GetCurrentValue(refTypeArray))) == null ? null : ((IPAddress[])(((ValueComparer)(((IProperty)refTypeArray).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue(refTypeArray))))))), (((object)(source.GetCurrentValue>(refTypeEnumerable))) == null ? null : ((IEnumerable)(((ValueComparer)(((IProperty)refTypeEnumerable).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeEnumerable))))))), (((object)(source.GetCurrentValue>(refTypeIList))) == null ? null : ((IList)(((ValueComparer)(((IProperty)refTypeIList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeIList))))))), (((object)(source.GetCurrentValue>(refTypeList))) == null ? null : ((List)(((ValueComparer)(((IProperty)refTypeList).GetValueComparer())).Snapshot(((object)(source.GetCurrentValue>(refTypeList))))))), (((IEnumerable)(source.GetCurrentValue(valueTypeArray))) == null ? null : ((DateTime[])(((ValueComparer>)(((IProperty)valueTypeArray).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue(valueTypeArray))))))), (source.GetCurrentValue>(valueTypeEnumerable) == null ? null : ((ValueComparer>)(((IProperty)valueTypeEnumerable).GetValueComparer())).Snapshot(source.GetCurrentValue>(valueTypeEnumerable))), (((IEnumerable)(source.GetCurrentValue>(valueTypeIList))) == null ? null : ((IList)(((ValueComparer>)(((IProperty)valueTypeIList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeIList))))))), (((IEnumerable)(source.GetCurrentValue>(valueTypeList))) == null ? null : ((List)(((ValueComparer>)(((IProperty)valueTypeList).GetValueComparer())).Snapshot(((IEnumerable)(source.GetCurrentValue>(valueTypeList)))))))))); }); runtimeEntityType.SetStoreGeneratedValuesFactory( @@ -124,8 +124,8 @@ public static void CreateAnnotations(RuntimeEntityType runtimeEntityType) runtimeEntityType.SetRelationshipSnapshotFactory( ISnapshot (InternalEntityEntry source) => { - var entity7 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); - return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity7), (object)(null), PrincipalDerivedUnsafeAccessors>.Dependent(entity7), SnapshotFactoryFactory.SnapshotCollection(PrincipalDerivedUnsafeAccessors>.ManyOwned(entity7)), (object)(null)))); + var entity8 = ((CompiledModelTestBase.PrincipalDerived>)(source.Entity)); + return ((ISnapshot)(new Snapshot((source.GetCurrentValue(id) == null ? null : ((ValueComparer)(((IProperty)id).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(id))), ((ValueComparer)(((IProperty)alternateId).GetKeyValueComparer())).Snapshot(source.GetCurrentValue(alternateId)), PrincipalBaseUnsafeAccessors._ownedField(entity8), (object)(null), PrincipalDerivedUnsafeAccessors>.Dependent(entity8), SnapshotFactoryFactory.SnapshotCollection(PrincipalDerivedUnsafeAccessors>.ManyOwned(entity8)), (object)(null)))); }); runtimeEntityType.Counts = new PropertyCounts( propertyCount: 16, diff --git a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs index ddf70ed1e99..f6777a1fcc7 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Scaffolding/Baselines/No_NativeAOT/ManyTypesEntityType.cs @@ -28,7 +28,7 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas "Microsoft.EntityFrameworkCore.Scaffolding.CompiledModelTestBase+ManyTypes", typeof(CompiledModelTestBase.ManyTypes), baseEntityType, - propertyCount: 236, + propertyCount: 241, keyCount: 1); var id = runtimeEntityType.AddProperty( @@ -54,6 +54,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolArray", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var boolReadOnlyCollection = runtimeEntityType.AddProperty( + "BoolReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("BoolReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_boolReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var boolToStringConverterProperty = runtimeEntityType.AddProperty( "BoolToStringConverterProperty", typeof(bool), @@ -672,6 +678,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("IPAddressArray", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var iPAddressReadOnlyCollection = runtimeEntityType.AddProperty( + "IPAddressReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("IPAddressReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_ipAddressReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var iPAddressToBytesConverterProperty = runtimeEntityType.AddProperty( "IPAddressToBytesConverterProperty", typeof(IPAddress), @@ -712,6 +724,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32Array", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var int32ReadOnlyCollection = runtimeEntityType.AddProperty( + "Int32ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("Int32ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_int32ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var int64 = runtimeEntityType.AddProperty( "Int64", typeof(long), @@ -1403,6 +1421,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringArray", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var stringReadOnlyCollection = runtimeEntityType.AddProperty( + "StringReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("StringReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_stringReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var stringToBoolConverterProperty = runtimeEntityType.AddProperty( "StringToBoolConverterProperty", typeof(string), @@ -1613,6 +1637,12 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8Array", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var uInt8ReadOnlyCollection = runtimeEntityType.AddProperty( + "UInt8ReadOnlyCollection", + typeof(IReadOnlyCollection), + propertyInfo: typeof(CompiledModelTestBase.ManyTypes).GetProperty("UInt8ReadOnlyCollection", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly), + fieldInfo: typeof(CompiledModelTestBase.ManyTypes).GetField("_uInt8ReadOnlyCollection", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly)); + var uri = runtimeEntityType.AddProperty( "Uri", typeof(Uri), From d6af2df76c953d3140f1c67caa1d18c548f53892 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Tue, 7 Jan 2025 11:51:26 -0800 Subject: [PATCH 09/79] Update branding to 8.0.13 (#35427) --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 47d3f514c2f..745f7f5dd10 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 8.0.12 + 8.0.13 servicing From ca340086e5769a43dc6976d4daa6bef56a955b73 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Tue, 7 Jan 2025 13:49:52 -0800 Subject: [PATCH 10/79] Update branding to 9.0.2 (#35428) --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 3e4d0febabe..c6a937fa0b4 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 9.0.1 + 9.0.2 rtm From 8b0e059149f6fb0e8d0352991d63d24c013d60f6 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 06:37:30 +0000 Subject: [PATCH 11/79] Update dependencies from https://github.com/dotnet/arcade build 20250108.5 (#35460) [release/9.0] Update dependencies from dotnet/arcade --- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- global.json | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3d511d9df3a..740ac2c7a4f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - e0e05154656254a735ebf19ffa5a37a8b915039b + 8cc6ecd76c24ef6665579a5c5e386a211a1e7c54 - + https://github.com/dotnet/arcade - e0e05154656254a735ebf19ffa5a37a8b915039b + 8cc6ecd76c24ef6665579a5c5e386a211a1e7c54 - + https://github.com/dotnet/arcade - e0e05154656254a735ebf19ffa5a37a8b915039b + 8cc6ecd76c24ef6665579a5c5e386a211a1e7c54 diff --git a/eng/Versions.props b/eng/Versions.props index c6a937fa0b4..ba40f2e5944 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.0 - 9.0.0-beta.24623.3 + 9.0.0-beta.25058.5 17.8.3 diff --git a/global.json b/global.json index 8ce92f09ed2..724b88e9ed9 100644 --- a/global.json +++ b/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24623.3", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24623.3" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25058.5", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25058.5" } } From 4185501e1ac07c2b02e1c4a95de20c53a0d096bf Mon Sep 17 00:00:00 2001 From: Maurycy Markowski Date: Tue, 14 Jan 2025 01:06:51 -0800 Subject: [PATCH 12/79] [release/9.0-staging] Fix to #35393 - GroupJoin in EF Core 9 Returns Null for Joined Entities Fixes #35393 Description In EF9 we refactored some optimizations we performed on generated SQL - we are now applying them earlier (as part of SqlExpressionFactory. However, one of those optimizations is only correct for non-nullable arguments, and at the time we apply them we don't have full nullability information. Fix is to only apply this optimization when we know the argument is non-nullable. Customer impact Data corruption. Queries comparing nullable boolean property to a constant (true/false) produced incorrect results (data corruption). Workaround is to rewrite the query to add missing null checks, but this is not intuitive at all. How found Customer report on 9.0.0 Regression Yes, from 8.0. Testing Added tests for the scenarios affected as well as test that brute-forces all combinations of comparisons between nullable arguments in variety of scenarios. Risk Low, we are just removing the optimization that was incorrect. After removal, the queries produced are the same as in EF8. Quirk added, just in case. --- .../Query/SqlExpressionFactory.cs | 30 +- .../Query/SqlNullabilityProcessor.cs | 5 +- .../Query/NullSemanticsQueryTestBase.cs | 73 +- .../Query/NorthwindJoinQueryTestBase.cs | 18 + .../Query/GearsOfWarQuerySqlServerTest.cs | 6 +- .../Query/NorthwindJoinQuerySqlServerTest.cs | 16 + .../Query/NullSemanticsQuerySqlServerTest.cs | 1100 ++++++++++++++--- .../Query/TPCGearsOfWarQuerySqlServerTest.cs | 6 +- .../Query/TPTGearsOfWarQuerySqlServerTest.cs | 6 +- .../TemporalGearsOfWarQuerySqlServerTest.cs | 6 +- .../Query/GearsOfWarQuerySqliteTest.cs | 6 +- .../Query/NorthwindJoinQuerySqliteTest.cs | 6 + .../Query/NullSemanticsQuerySqliteTest.cs | 864 +++++++++++-- 13 files changed, 1860 insertions(+), 282 deletions(-) diff --git a/src/EFCore.Relational/Query/SqlExpressionFactory.cs b/src/EFCore.Relational/Query/SqlExpressionFactory.cs index 47f94f1d78b..31553d0e9db 100644 --- a/src/EFCore.Relational/Query/SqlExpressionFactory.cs +++ b/src/EFCore.Relational/Query/SqlExpressionFactory.cs @@ -9,6 +9,9 @@ namespace Microsoft.EntityFrameworkCore.Query; /// public class SqlExpressionFactory : ISqlExpressionFactory { + private static readonly bool UseOldBehavior35393 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35393", out var enabled35393) && enabled35393; + private readonly IRelationalTypeMappingSource _typeMappingSource; private readonly RelationalTypeMapping _boolTypeMapping; @@ -660,20 +663,45 @@ private SqlExpression Not(SqlExpression operand, SqlExpression? existingExpressi SqlBinaryExpression { OperatorType: ExpressionType.OrElse } binary => AndAlso(Not(binary.Left), Not(binary.Right)), - // use equality where possible + // use equality where possible - we can only do this when we know a is not null + // at this point we are limited to constants, parameters and columns + // see issue #35393 // !(a == true) -> a == false // !(a == false) -> a == true SqlBinaryExpression { OperatorType: ExpressionType.Equal, Right: SqlConstantExpression { Value: bool } } binary + when UseOldBehavior35393 + => Equal(binary.Left, Not(binary.Right)), + + SqlBinaryExpression + { + OperatorType: ExpressionType.Equal, + Right: SqlConstantExpression { Value: bool }, + Left: SqlConstantExpression { Value: bool } + or SqlParameterExpression { IsNullable: false } + or ColumnExpression { IsNullable: false } + } binary => Equal(binary.Left, Not(binary.Right)), // !(true == a) -> false == a // !(false == a) -> true == a SqlBinaryExpression { OperatorType: ExpressionType.Equal, Left: SqlConstantExpression { Value: bool } } binary + when UseOldBehavior35393 + => Equal(Not(binary.Left), binary.Right), + + SqlBinaryExpression + { + OperatorType: ExpressionType.Equal, + Left: SqlConstantExpression { Value: bool }, + Right: SqlConstantExpression { Value: bool } + or SqlParameterExpression { IsNullable: false } + or ColumnExpression { IsNullable: false } + } binary => Equal(Not(binary.Left), binary.Right), // !(a == b) -> a != b SqlBinaryExpression { OperatorType: ExpressionType.Equal } sqlBinaryOperand => NotEqual( sqlBinaryOperand.Left, sqlBinaryOperand.Right), + // !(a != b) -> a == b SqlBinaryExpression { OperatorType: ExpressionType.NotEqual } sqlBinaryOperand => Equal( sqlBinaryOperand.Left, sqlBinaryOperand.Right), diff --git a/src/EFCore.Relational/Query/SqlNullabilityProcessor.cs b/src/EFCore.Relational/Query/SqlNullabilityProcessor.cs index 407826342f2..95b79bfe9a7 100644 --- a/src/EFCore.Relational/Query/SqlNullabilityProcessor.cs +++ b/src/EFCore.Relational/Query/SqlNullabilityProcessor.cs @@ -19,6 +19,9 @@ namespace Microsoft.EntityFrameworkCore.Query; /// public class SqlNullabilityProcessor { + private static readonly bool UseOldBehavior35393 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35393", out var enabled35393) && enabled35393; + private readonly List _nonNullableColumns; private readonly List _nullValueColumns; private readonly ISqlExpressionFactory _sqlExpressionFactory; @@ -1343,7 +1346,7 @@ protected virtual SqlExpression VisitSqlBinary( // we assume that NullSemantics rewrite is only needed (on the current level) // if the optimization didn't make any changes. // Reason is that optimization can/will change the nullability of the resulting expression - // and that inforation is not tracked/stored anywhere + // and that information is not tracked/stored anywhere // so we can no longer rely on nullabilities that we computed earlier (leftNullable, rightNullable) // when performing null semantics rewrite. // It should be fine because current optimizations *radically* change the expression diff --git a/test/EFCore.Relational.Specification.Tests/Query/NullSemanticsQueryTestBase.cs b/test/EFCore.Relational.Specification.Tests/Query/NullSemanticsQueryTestBase.cs index 4ac99509883..629ec36e194 100644 --- a/test/EFCore.Relational.Specification.Tests/Query/NullSemanticsQueryTestBase.cs +++ b/test/EFCore.Relational.Specification.Tests/Query/NullSemanticsQueryTestBase.cs @@ -92,6 +92,7 @@ public virtual async Task Rewrite_compare_int_with_int(bool async) public virtual async Task Rewrite_compare_bool_with_bool(bool async) { var bools = new[] { false, true }; + var onetwothree = new[] { 1, 2, 3 }; foreach (var neq in bools) { @@ -99,15 +100,18 @@ public virtual async Task Rewrite_compare_bool_with_bool(bool async) { foreach (var negateB in bools) { - foreach (var nullableA in bools) + foreach (var nullableA in onetwothree) { foreach (var negateA in bools) { - foreach (var nullableB in bools) + foreach (var nullableB in onetwothree) { + // filter out tests comparing two constants + if (nullableA == 3 && nullableB == 3) continue; + var queryBuilder = (ISetSource ss) => { - var data = nullableA + var data = nullableA == 2 ? ss.Set().Select( e => new { @@ -116,16 +120,25 @@ public virtual async Task Rewrite_compare_bool_with_bool(bool async) e.BoolB, e.NullableBoolB }) - : ss.Set().Select( - e => new - { - e.Id, - A = (bool?)e.BoolA, - e.BoolB, - e.NullableBoolB - }); - - var query = nullableB + : nullableA == 1 + ? ss.Set().Select( + e => new + { + e.Id, + A = (bool?)e.BoolA, + e.BoolB, + e.NullableBoolB + }) + : ss.Set().Select( + e => new + { + e.Id, + A = (bool?)true, + e.BoolB, + e.NullableBoolB + }); + + var query = nullableB == 2 ? data.Select( e => new { @@ -133,13 +146,21 @@ public virtual async Task Rewrite_compare_bool_with_bool(bool async) e.A, B = e.NullableBoolB }) - : data.Select( - e => new - { - e.Id, - e.A, - B = (bool?)e.BoolB - }); + : nullableB == 1 + ? data.Select( + e => new + { + e.Id, + e.A, + B = (bool?)e.BoolB + }) + : data.Select( + e => new + { + e.Id, + e.A, + B = (bool?)true + }); query = negateA ? query.Select( @@ -2462,6 +2483,18 @@ await AssertQueryScalar( ss => ss.Set().Where(e => true).Select(e => e.Id)); } + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual async Task Compare_constant_true_to_expression_which_evaluates_to_null(bool async) + { + var prm = default(bool?); + + await AssertQueryScalar( + async, + ss => ss.Set().Where(x => x.NullableBoolA != null + && !object.Equals(true, x.NullableBoolA == null ? null : prm)).Select(x => x.Id)); + } + // We can't client-evaluate Like (for the expected results). // However, since the test data has no LIKE wildcards, it effectively functions like equality - except that 'null like null' returns // false instead of true. So we have this "lite" implementation which doesn't support wildcards. diff --git a/test/EFCore.Specification.Tests/Query/NorthwindJoinQueryTestBase.cs b/test/EFCore.Specification.Tests/Query/NorthwindJoinQueryTestBase.cs index 6f3350b748f..571d9fcbac9 100644 --- a/test/EFCore.Specification.Tests/Query/NorthwindJoinQueryTestBase.cs +++ b/test/EFCore.Specification.Tests/Query/NorthwindJoinQueryTestBase.cs @@ -654,6 +654,24 @@ join o in ss.Set().OrderBy(o => o.OrderID).Take(100) on c.CustomerID equa from o in lo.Where(x => x.CustomerID.StartsWith("A")) select new { c.CustomerID, o.OrderID }); + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual Task GroupJoin_on_true_equal_true(bool async) + => AssertQuery( + async, + ss => ss.Set().GroupJoin( + ss.Set(), + x => true, + x => true, + (c, g) => new { c, g }) + .Select(x => new { x.c.CustomerID, Orders = x.g }), + elementSorter: e => e.CustomerID, + elementAsserter: (e, a) => + { + Assert.Equal(e.CustomerID, a.CustomerID); + AssertCollection(e.Orders, a.Orders, elementSorter: ee => ee.OrderID); + }); + [ConditionalTheory] [MemberData(nameof(IsAsyncData))] public virtual Task Inner_join_with_tautology_predicate_converts_to_cross_join(bool async) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs index f7569611bb0..cae4816b1ae 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs @@ -5021,7 +5021,7 @@ INNER JOIN ( FROM [Factions] AS [f] WHERE [f].[Name] = N'Swarm' ) AS [f0] ON [l].[Name] = [f0].[CommanderName] -WHERE [f0].[Eradicated] = CAST(0 AS bit) OR [f0].[Eradicated] IS NULL +WHERE [f0].[Eradicated] <> CAST(1 AS bit) OR [f0].[Eradicated] IS NULL """); } @@ -5038,7 +5038,7 @@ LEFT JOIN ( FROM [Factions] AS [f] WHERE [f].[Name] = N'Swarm' ) AS [f0] ON [l].[Name] = [f0].[CommanderName] -WHERE [f0].[Eradicated] = CAST(0 AS bit) OR [f0].[Eradicated] IS NULL +WHERE [f0].[Eradicated] <> CAST(1 AS bit) OR [f0].[Eradicated] IS NULL """); } @@ -7592,7 +7592,7 @@ FROM [LocustLeaders] AS [l] INNER JOIN [Factions] AS [f] ON [l].[Name] = [f].[CommanderName] WHERE CASE WHEN [f].[Name] = N'Locust' THEN CAST(1 AS bit) -END = CAST(0 AS bit) OR CASE +END <> CAST(1 AS bit) OR CASE WHEN [f].[Name] = N'Locust' THEN CAST(1 AS bit) END IS NULL """); diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindJoinQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindJoinQuerySqlServerTest.cs index 48c3758e51a..bf95109abca 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindJoinQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindJoinQuerySqlServerTest.cs @@ -992,6 +992,22 @@ ORDER BY [o].[OrderID] """); } + public override async Task GroupJoin_on_true_equal_true(bool async) + { + await base.GroupJoin_on_true_equal_true(async); + + AssertSql( + """ +SELECT [c].[CustomerID], [o0].[OrderID], [o0].[CustomerID], [o0].[EmployeeID], [o0].[OrderDate] +FROM [Customers] AS [c] +OUTER APPLY ( + SELECT [o].[OrderID], [o].[CustomerID], [o].[EmployeeID], [o].[OrderDate] + FROM [Orders] AS [o] +) AS [o0] +ORDER BY [c].[CustomerID] +"""); + } + private void AssertSql(params string[] expected) => Fixture.TestSqlLoggerFactory.AssertBaseline(expected); diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NullSemanticsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NullSemanticsQuerySqlServerTest.cs index 2581e0a3baa..f0e488b7a65 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NullSemanticsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NullSemanticsQuerySqlServerTest.cs @@ -265,33 +265,30 @@ FROM [Entities1] AS [e] """, // """ -SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] +SELECT [e].[Id], [e].[BoolA] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[BoolB] +WHERE [e].[BoolA] = CAST(1 AS bit) """, // """ -SELECT [e].[Id], CASE - WHEN [e].[BoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[NullableBoolB] +WHERE [e].[BoolA] <> [e].[BoolB] """, // """ SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] = [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + WHEN [e].[BoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -300,26 +297,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[BoolB] +WHERE [e].[BoolA] <> [e].[NullableBoolB] """, // """ -SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], ~[e].[BoolA] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) +WHERE [e].[BoolA] = CAST(0 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] <> [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] = [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -328,12 +322,12 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] <> [e].[BoolB] +WHERE [e].[NullableBoolA] = [e].[BoolB] """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -342,23 +336,26 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] <> [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) +WHERE [e].[NullableBoolA] = [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) """, // """ -SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] = CAST(1 AS bit) AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[BoolB] +WHERE [e].[NullableBoolA] = CAST(1 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN [e].[BoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] <> [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -367,23 +364,26 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[NullableBoolB] +WHERE [e].[NullableBoolA] <> [e].[BoolB] """, // """ -SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[BoolB] +WHERE [e].[NullableBoolA] <> [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) """, // """ SELECT [e].[Id], CASE - WHEN [e].[BoolA] = [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] <> CAST(1 AS bit) AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -392,26 +392,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[NullableBoolB] +WHERE [e].[NullableBoolA] = CAST(0 AS bit) """, // """ -SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] <> [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], [e].[BoolB] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] <> [e].[BoolB] +WHERE [e].[BoolB] = CAST(1 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + WHEN CAST(1 AS bit) = [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -420,26 +417,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] <> [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) +WHERE [e].[NullableBoolB] = CAST(1 AS bit) """, // """ -SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] = [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], ~[e].[BoolB] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[BoolB] +WHERE [e].[BoolB] = CAST(0 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + WHEN CAST(0 AS bit) = [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -448,7 +442,7 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) +WHERE CAST(0 AS bit) = [e].[NullableBoolB] """, // """ @@ -464,7 +458,7 @@ WHERE [e].[BoolA] <> [e].[BoolB] // """ SELECT [e].[Id], CASE - WHEN [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + WHEN [e].[BoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -473,37 +467,34 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +WHERE [e].[BoolA] <> [e].[NullableBoolB] """, // """ -SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] +SELECT [e].[Id], ~[e].[BoolA] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[BoolB] +WHERE [e].[BoolA] = CAST(0 AS bit) """, // """ -SELECT [e].[Id], CASE - WHEN [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +WHERE [e].[BoolA] = [e].[BoolB] """, // """ SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) + WHEN [e].[BoolA] = [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -512,26 +503,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL +WHERE [e].[BoolA] = [e].[NullableBoolB] """, // """ -SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], [e].[BoolA] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) +WHERE [e].[BoolA] = CAST(1 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] <> [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -540,12 +528,12 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL +WHERE [e].[NullableBoolA] <> [e].[BoolB] """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -554,23 +542,26 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) +WHERE [e].[NullableBoolA] <> [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) """, // """ -SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] = CAST(0 AS bit) AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[BoolB] +WHERE [e].[NullableBoolA] = CAST(0 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] = [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -579,23 +570,26 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +WHERE [e].[NullableBoolA] = [e].[BoolB] """, // """ -SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[BoolB] +WHERE [e].[NullableBoolA] = [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) """, // """ SELECT [e].[Id], CASE - WHEN [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] <> CAST(0 AS bit) AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -604,26 +598,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +WHERE [e].[NullableBoolA] <> CAST(0 AS bit) """, // """ -SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], ~[e].[BoolB] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL +WHERE [e].[BoolB] = CAST(0 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + WHEN CAST(1 AS bit) <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -632,26 +623,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) +WHERE [e].[NullableBoolB] = CAST(0 AS bit) """, // """ -SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], [e].[BoolB] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL +WHERE [e].[BoolB] = CAST(1 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + WHEN CAST(0 AS bit) <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -660,7 +648,7 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) +WHERE CAST(0 AS bit) <> [e].[NullableBoolB] """, // """ @@ -686,6 +674,17 @@ FROM [Entities1] AS [e] SELECT [e].[Id] FROM [Entities1] AS [e] WHERE [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +""", + // + """ +SELECT [e].[Id], ~[e].[BoolA] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = CAST(0 AS bit) """, // """ @@ -711,6 +710,17 @@ FROM [Entities1] AS [e] SELECT [e].[Id] FROM [Entities1] AS [e] WHERE [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +""", + // + """ +SELECT [e].[Id], [e].[BoolA] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = CAST(1 AS bit) """, // """ @@ -743,7 +753,7 @@ FROM [Entities1] AS [e] // """ SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] <> CAST(1 AS bit) OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -752,12 +762,12 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL +WHERE [e].[NullableBoolA] <> CAST(1 AS bit) OR [e].[NullableBoolA] IS NULL """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -766,23 +776,26 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) +WHERE [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL """, // """ -SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[BoolB] +WHERE ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) """, // """ SELECT [e].[Id], CASE - WHEN [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] = CAST(1 AS bit) OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -791,23 +804,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +WHERE [e].[NullableBoolA] = CAST(1 AS bit) OR [e].[NullableBoolA] IS NULL """, // """ -SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] +SELECT [e].[Id], ~[e].[BoolB] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[BoolB] +WHERE [e].[BoolB] = CAST(0 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + WHEN CAST(1 AS bit) <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -816,26 +829,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +WHERE CAST(1 AS bit) <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL """, // """ -SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], [e].[BoolB] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL +WHERE [e].[BoolB] = CAST(1 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + WHEN CAST(0 AS bit) <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -844,26 +854,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) +WHERE CAST(0 AS bit) <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL """, // """ -SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL +WHERE [e].[BoolA] = [e].[BoolB] """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + WHEN [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -872,62 +879,59 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) +WHERE [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL """, // """ -SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] +SELECT [e].[Id], [e].[BoolA] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[BoolB] +WHERE [e].[BoolA] = CAST(1 AS bit) """, // """ -SELECT [e].[Id], CASE - WHEN [e].[BoolA] = [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[NullableBoolB] +WHERE [e].[BoolA] <> [e].[BoolB] """, // """ -SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] +SELECT [e].[Id], CASE + WHEN [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[BoolB] +WHERE [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL """, // """ -SELECT [e].[Id], CASE - WHEN [e].[BoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], ~[e].[BoolA] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[NullableBoolB] +WHERE [e].[BoolA] = CAST(0 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] = [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -936,12 +940,12 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[BoolB] +WHERE [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -950,12 +954,12 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) +WHERE ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) """, // """ SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] <> [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] <> CAST(0 AS bit) OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -964,12 +968,12 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] <> [e].[BoolB] +WHERE [e].[NullableBoolA] <> CAST(0 AS bit) OR [e].[NullableBoolA] IS NULL """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -978,23 +982,26 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] <> [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) +WHERE [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL """, // """ -SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[BoolB] +WHERE ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) """, // """ SELECT [e].[Id], CASE - WHEN [e].[BoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + WHEN [e].[NullableBoolA] = CAST(0 AS bit) OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -1003,23 +1010,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] <> [e].[NullableBoolB] +WHERE [e].[NullableBoolA] = CAST(0 AS bit) OR [e].[NullableBoolA] IS NULL """, // """ -SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] +SELECT [e].[Id], [e].[BoolB] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[BoolB] +WHERE [e].[BoolB] = CAST(1 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN [e].[BoolA] = [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + WHEN CAST(1 AS bit) = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -1028,26 +1035,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[NullableBoolB] +WHERE CAST(1 AS bit) = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL """, // """ -SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] <> [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], ~[e].[BoolB] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] <> [e].[BoolB] +WHERE [e].[BoolB] = CAST(0 AS bit) """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + WHEN CAST(0 AS bit) = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -1056,26 +1060,23 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] <> [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) +WHERE CAST(0 AS bit) = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL """, // """ -SELECT [e].[Id], CASE - WHEN [e].[NullableBoolA] = [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) - ELSE CAST(0 AS bit) -END AS [X] +SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] FROM [Entities1] AS [e] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[BoolB] +WHERE [e].[BoolA] <> [e].[BoolB] """, // """ SELECT [e].[Id], CASE - WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + WHEN [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [X] FROM [Entities1] AS [e] @@ -1084,37 +1085,806 @@ FROM [Entities1] AS [e] """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) -"""); - } - - public override async Task Compare_bool_with_bool_equal(bool async) - { - await base.Compare_bool_with_bool_equal(async); - - AssertSql( +WHERE [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +""", + // """ -SELECT [e].[Id] +SELECT [e].[Id], ~[e].[BoolA] AS [X] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[BoolB] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] -WHERE [e].[BoolA] = [e].[NullableBoolB] +WHERE [e].[BoolA] = CAST(0 AS bit) """, // """ -SELECT [e].[Id] +SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = [e].[BoolB] +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +""", + // + """ +SELECT [e].[Id], [e].[BoolA] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = CAST(1 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL +""", + // + """ +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] <> CAST(1 AS bit) OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] <> CAST(1 AS bit) OR [e].[NullableBoolA] IS NULL +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL +""", + // + """ +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] = CAST(1 AS bit) OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] = CAST(1 AS bit) OR [e].[NullableBoolA] IS NULL +""", + // + """ +SELECT [e].[Id], ~[e].[BoolB] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolB] = CAST(0 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN CAST(1 AS bit) <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE CAST(1 AS bit) <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +""", + // + """ +SELECT [e].[Id], [e].[BoolB] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolB] = CAST(1 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN CAST(0 AS bit) <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE CAST(0 AS bit) <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +""", + // + """ +SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = [e].[BoolB] +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +""", + // + """ +SELECT [e].[Id], [e].[BoolA] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = CAST(1 AS bit) +""", + // + """ +SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] <> [e].[BoolB] +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +""", + // + """ +SELECT [e].[Id], ~[e].[BoolA] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = CAST(0 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] = [e].[BoolB] OR [e].[NullableBoolA] IS NULL +""", + // + """ +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE ([e].[NullableBoolA] = [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] <> CAST(0 AS bit) OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] <> CAST(0 AS bit) OR [e].[NullableBoolA] IS NULL +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] <> [e].[BoolB] OR [e].[NullableBoolA] IS NULL +""", + // + """ +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE ([e].[NullableBoolA] <> [e].[NullableBoolB] OR [e].[NullableBoolA] IS NULL OR [e].[NullableBoolB] IS NULL) AND ([e].[NullableBoolA] IS NOT NULL OR [e].[NullableBoolB] IS NOT NULL) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] = CAST(0 AS bit) OR [e].[NullableBoolA] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] = CAST(0 AS bit) OR [e].[NullableBoolA] IS NULL +""", + // + """ +SELECT [e].[Id], [e].[BoolB] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolB] = CAST(1 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN CAST(1 AS bit) = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE CAST(1 AS bit) = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +""", + // + """ +SELECT [e].[Id], ~[e].[BoolB] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolB] = CAST(0 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN CAST(0 AS bit) = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE CAST(0 AS bit) = [e].[NullableBoolB] OR [e].[NullableBoolB] IS NULL +""", + // + """ +SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = [e].[BoolB] +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[BoolA] = [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = [e].[NullableBoolB] +""", + // + """ +SELECT [e].[Id], [e].[BoolA] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = CAST(1 AS bit) +""", + // + """ +SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] <> [e].[BoolB] +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[BoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] <> [e].[NullableBoolB] +""", + // + """ +SELECT [e].[Id], ~[e].[BoolA] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = CAST(0 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] = [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] = [e].[BoolB] +""", + // + """ +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] = [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] = CAST(1 AS bit) AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] = CAST(1 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] <> [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] <> [e].[BoolB] +""", + // + """ +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] <> [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] <> CAST(1 AS bit) AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] = CAST(0 AS bit) +""", + // + """ +SELECT [e].[Id], [e].[BoolB] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolB] = CAST(1 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN CAST(1 AS bit) = [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolB] = CAST(1 AS bit) +""", + // + """ +SELECT [e].[Id], ~[e].[BoolB] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolB] = CAST(0 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN CAST(0 AS bit) = [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE CAST(0 AS bit) = [e].[NullableBoolB] +""", + // + """ +SELECT [e].[Id], [e].[BoolA] ^ [e].[BoolB] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] <> [e].[BoolB] +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[BoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] <> [e].[NullableBoolB] +""", + // + """ +SELECT [e].[Id], ~[e].[BoolA] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = CAST(0 AS bit) +""", + // + """ +SELECT [e].[Id], ~([e].[BoolA] ^ [e].[BoolB]) AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = [e].[BoolB] +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[BoolA] = [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = [e].[NullableBoolB] +""", + // + """ +SELECT [e].[Id], [e].[BoolA] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolA] = CAST(1 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] <> [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] <> [e].[BoolB] +""", + // + """ +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] <> [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] <> [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] = CAST(0 AS bit) AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] = CAST(0 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] = [e].[BoolB] AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] = [e].[BoolB] +""", + // + """ +SELECT [e].[Id], CASE + WHEN ([e].[NullableBoolA] = [e].[NullableBoolB] AND [e].[NullableBoolA] IS NOT NULL AND [e].[NullableBoolB] IS NOT NULL) OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] FROM [Entities1] AS [e] -WHERE [e].[NullableBoolA] = [e].[BoolB] """, // """ SELECT [e].[Id] FROM [Entities1] AS [e] WHERE [e].[NullableBoolA] = [e].[NullableBoolB] OR ([e].[NullableBoolA] IS NULL AND [e].[NullableBoolB] IS NULL) +""", + // + """ +SELECT [e].[Id], CASE + WHEN [e].[NullableBoolA] <> CAST(0 AS bit) AND [e].[NullableBoolA] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolA] <> CAST(0 AS bit) +""", + // + """ +SELECT [e].[Id], ~[e].[BoolB] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolB] = CAST(0 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN CAST(1 AS bit) <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[NullableBoolB] = CAST(0 AS bit) +""", + // + """ +SELECT [e].[Id], [e].[BoolB] AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE [e].[BoolB] = CAST(1 AS bit) +""", + // + """ +SELECT [e].[Id], CASE + WHEN CAST(0 AS bit) <> [e].[NullableBoolB] AND [e].[NullableBoolB] IS NOT NULL THEN CAST(1 AS bit) + ELSE CAST(0 AS bit) +END AS [X] +FROM [Entities1] AS [e] +""", + // + """ +SELECT [e].[Id] +FROM [Entities1] AS [e] +WHERE CAST(0 AS bit) <> [e].[NullableBoolB] """); } diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs index 0eca14b01d9..ee461d32d9c 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs @@ -6824,7 +6824,7 @@ INNER JOIN ( FROM [LocustHordes] AS [l1] WHERE [l1].[Name] = N'Swarm' ) AS [l2] ON [u].[Name] = [l2].[CommanderName] -WHERE [l2].[Eradicated] = CAST(0 AS bit) OR [l2].[Eradicated] IS NULL +WHERE [l2].[Eradicated] <> CAST(1 AS bit) OR [l2].[Eradicated] IS NULL """); } @@ -6847,7 +6847,7 @@ LEFT JOIN ( FROM [LocustHordes] AS [l1] WHERE [l1].[Name] = N'Swarm' ) AS [l2] ON [u].[Name] = [l2].[CommanderName] -WHERE [l2].[Eradicated] = CAST(0 AS bit) OR [l2].[Eradicated] IS NULL +WHERE [l2].[Eradicated] <> CAST(1 AS bit) OR [l2].[Eradicated] IS NULL """); } @@ -10136,7 +10136,7 @@ FROM [LocustCommanders] AS [l0] INNER JOIN [LocustHordes] AS [l1] ON [u].[Name] = [l1].[CommanderName] WHERE CASE WHEN [l1].[Name] = N'Locust' THEN CAST(1 AS bit) -END = CAST(0 AS bit) OR CASE +END <> CAST(1 AS bit) OR CASE WHEN [l1].[Name] = N'Locust' THEN CAST(1 AS bit) END IS NULL """); diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs index fb8d0803c80..076e6c19d97 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs @@ -5766,7 +5766,7 @@ FROM [Factions] AS [f] LEFT JOIN [LocustHordes] AS [l0] ON [f].[Id] = [l0].[Id] WHERE [l0].[Id] IS NOT NULL AND [f].[Name] = N'Swarm' ) AS [s] ON [l].[Name] = [s].[CommanderName] -WHERE [s].[Eradicated] = CAST(0 AS bit) OR [s].[Eradicated] IS NULL +WHERE [s].[Eradicated] <> CAST(1 AS bit) OR [s].[Eradicated] IS NULL """); } @@ -5786,7 +5786,7 @@ FROM [Factions] AS [f] LEFT JOIN [LocustHordes] AS [l0] ON [f].[Id] = [l0].[Id] WHERE [l0].[Id] IS NOT NULL AND [f].[Name] = N'Swarm' ) AS [s] ON [l].[Name] = [s].[CommanderName] -WHERE [s].[Eradicated] = CAST(0 AS bit) OR [s].[Eradicated] IS NULL +WHERE [s].[Eradicated] <> CAST(1 AS bit) OR [s].[Eradicated] IS NULL """); } @@ -8602,7 +8602,7 @@ WHERE [l0].[Id] IS NOT NULL ) AS [s] ON [l].[Name] = [s].[CommanderName] WHERE CASE WHEN [s].[Name] = N'Locust' THEN CAST(1 AS bit) -END = CAST(0 AS bit) OR CASE +END <> CAST(1 AS bit) OR CASE WHEN [s].[Name] = N'Locust' THEN CAST(1 AS bit) END IS NULL """); diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs index 01ccc04db5a..ca649d80e12 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs @@ -2564,7 +2564,7 @@ SELECT CASE INNER JOIN [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] ON [l].[Name] = [f].[CommanderName] WHERE CASE WHEN [f].[Name] = N'Locust' THEN CAST(1 AS bit) -END = CAST(0 AS bit) OR CASE +END <> CAST(1 AS bit) OR CASE WHEN [f].[Name] = N'Locust' THEN CAST(1 AS bit) END IS NULL """); @@ -4497,7 +4497,7 @@ INNER JOIN ( FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] WHERE [f].[Name] = N'Swarm' ) AS [f0] ON [l].[Name] = [f0].[CommanderName] -WHERE [f0].[Eradicated] = CAST(0 AS bit) OR [f0].[Eradicated] IS NULL +WHERE [f0].[Eradicated] <> CAST(1 AS bit) OR [f0].[Eradicated] IS NULL """); } @@ -6446,7 +6446,7 @@ LEFT JOIN ( FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] WHERE [f].[Name] = N'Swarm' ) AS [f0] ON [l].[Name] = [f0].[CommanderName] -WHERE [f0].[Eradicated] = CAST(0 AS bit) OR [f0].[Eradicated] IS NULL +WHERE [f0].[Eradicated] <> CAST(1 AS bit) OR [f0].[Eradicated] IS NULL """); } diff --git a/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs index aec1ce784fe..6e69f0b1ce3 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs @@ -2874,7 +2874,7 @@ SELECT CASE INNER JOIN "Factions" AS "f" ON "l"."Name" = "f"."CommanderName" WHERE CASE WHEN "f"."Name" = 'Locust' THEN 1 -END = 0 OR CASE +END <> 1 OR CASE WHEN "f"."Name" = 'Locust' THEN 1 END IS NULL """); @@ -5481,7 +5481,7 @@ LEFT JOIN ( FROM "Factions" AS "f" WHERE "f"."Name" = 'Swarm' ) AS "f0" ON "l"."Name" = "f0"."CommanderName" -WHERE "f0"."Eradicated" = 0 OR "f0"."Eradicated" IS NULL +WHERE "f0"."Eradicated" <> 1 OR "f0"."Eradicated" IS NULL """); } @@ -5549,7 +5549,7 @@ INNER JOIN ( FROM "Factions" AS "f" WHERE "f"."Name" = 'Swarm' ) AS "f0" ON "l"."Name" = "f0"."CommanderName" -WHERE "f0"."Eradicated" = 0 OR "f0"."Eradicated" IS NULL +WHERE "f0"."Eradicated" <> 1 OR "f0"."Eradicated" IS NULL """); } diff --git a/test/EFCore.Sqlite.FunctionalTests/Query/NorthwindJoinQuerySqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/Query/NorthwindJoinQuerySqliteTest.cs index 7051721f131..f032b5b7bcd 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Query/NorthwindJoinQuerySqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Query/NorthwindJoinQuerySqliteTest.cs @@ -57,4 +57,10 @@ public override async Task Take_in_collection_projection_with_FirstOrDefault_on_ SqliteStrings.ApplyNotSupported, (await Assert.ThrowsAsync( () => base.Take_in_collection_projection_with_FirstOrDefault_on_top_level(async))).Message); + + public override async Task GroupJoin_on_true_equal_true(bool async) + => Assert.Equal( + SqliteStrings.ApplyNotSupported, + (await Assert.ThrowsAsync( + () => base.GroupJoin_on_true_equal_true(async))).Message); } diff --git a/test/EFCore.Sqlite.FunctionalTests/Query/NullSemanticsQuerySqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/Query/NullSemanticsQuerySqliteTest.cs index e47b0c32c65..6a0ca3d271a 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Query/NullSemanticsQuerySqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Query/NullSemanticsQuerySqliteTest.cs @@ -222,6 +222,17 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) SELECT "e"."Id" FROM "Entities1" AS "e" WHERE "e"."BoolA" = "e"."NullableBoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" """, // """ @@ -244,6 +255,17 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) SELECT "e"."Id" FROM "Entities1" AS "e" WHERE "e"."BoolA" <> "e"."NullableBoolB" +""", + // + """ +SELECT "e"."Id", NOT ("e"."BoolA") AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."BoolA") """, // """ @@ -266,6 +288,17 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) SELECT "e"."Id" FROM "Entities1" AS "e" WHERE "e"."NullableBoolA" = "e"."NullableBoolB" OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" = 1 AND "e"."NullableBoolA" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" """, // """ @@ -288,6 +321,61 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) SELECT "e"."Id" FROM "Entities1" AS "e" WHERE "e"."NullableBoolA" <> "e"."NullableBoolB" OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" <> 1 AND "e"."NullableBoolA" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."NullableBoolA") +""", + // + """ +SELECT "e"."Id", "e"."BoolB" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolB" +""", + // + """ +SELECT "e"."Id", 1 = "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolB" +""", + // + """ +SELECT "e"."Id", NOT ("e"."BoolB") AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."BoolB") +""", + // + """ +SELECT "e"."Id", 0 = "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE 0 = "e"."NullableBoolB" """, // """ @@ -310,6 +398,17 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) SELECT "e"."Id" FROM "Entities1" AS "e" WHERE "e"."BoolA" <> "e"."NullableBoolB" +""", + // + """ +SELECT "e"."Id", NOT ("e"."BoolA") AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."BoolA") """, // """ @@ -332,6 +431,17 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) SELECT "e"."Id" FROM "Entities1" AS "e" WHERE "e"."BoolA" = "e"."NullableBoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" """, // """ @@ -354,6 +464,17 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) SELECT "e"."Id" FROM "Entities1" AS "e" WHERE "e"."NullableBoolA" <> "e"."NullableBoolB" OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" = 0 AND "e"."NullableBoolA" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" = 0 """, // """ @@ -379,91 +500,91 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" +SELECT "e"."Id", "e"."NullableBoolA" <> 0 AND "e"."NullableBoolA" IS NOT NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."BoolB" +WHERE "e"."NullableBoolA" <> 0 """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +SELECT "e"."Id", NOT ("e"."BoolB") AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +WHERE NOT ("e"."BoolB") """, // """ -SELECT "e"."Id", "e"."BoolA" = "e"."BoolB" AS "X" +SELECT "e"."Id", 1 <> "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" = "e"."BoolB" +WHERE NOT ("e"."NullableBoolB") """, // """ -SELECT "e"."Id", "e"."BoolA" = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +SELECT "e"."Id", "e"."BoolB" AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +WHERE "e"."BoolB" """, // """ -SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" +SELECT "e"."Id", 0 <> "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL +WHERE 0 <> "e"."NullableBoolB" """, // """ -SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" +SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) +WHERE "e"."BoolA" <> "e"."BoolB" """, // """ -SELECT "e"."Id", "e"."NullableBoolA" = "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" +SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" = "e"."BoolB" OR "e"."NullableBoolA" IS NULL +WHERE "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL """, // """ -SELECT "e"."Id", ("e"."NullableBoolA" = "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" +SELECT "e"."Id", NOT ("e"."BoolA") AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE ("e"."NullableBoolA" = "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) +WHERE NOT ("e"."BoolA") """, // """ @@ -489,25 +610,47 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" +SELECT "e"."Id", "e"."BoolA" AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."BoolB" +WHERE "e"."BoolA" """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +WHERE "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL +""", + // + """ +SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" <> 1 OR "e"."NullableBoolA" IS NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" <> 1 OR "e"."NullableBoolA" IS NULL """, // """ @@ -533,47 +676,58 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) """, // """ -SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" +SELECT "e"."Id", "e"."NullableBoolA" = 1 OR "e"."NullableBoolA" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL +WHERE "e"."NullableBoolA" = 1 OR "e"."NullableBoolA" IS NULL """, // """ -SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" +SELECT "e"."Id", NOT ("e"."BoolB") AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) +WHERE NOT ("e"."BoolB") """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" +SELECT "e"."Id", 1 <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."BoolB" +WHERE 1 <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +SELECT "e"."Id", "e"."BoolB" AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +WHERE "e"."BoolB" +""", + // + """ +SELECT "e"."Id", 0 <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE 0 <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL """, // """ @@ -599,25 +753,47 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) """, // """ -SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" +SELECT "e"."Id", "e"."BoolA" AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL +WHERE "e"."BoolA" """, // """ -SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" +SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) +WHERE "e"."BoolA" <> "e"."BoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +""", + // + """ +SELECT "e"."Id", NOT ("e"."BoolA") AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."BoolA") """, // """ @@ -643,267 +819,795 @@ public override async Task Rewrite_compare_bool_with_bool(bool async) """, // """ -SELECT "e"."Id", "e"."BoolA" = "e"."BoolB" AS "X" +SELECT "e"."Id", "e"."NullableBoolA" <> 0 OR "e"."NullableBoolA" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" = "e"."BoolB" +WHERE "e"."NullableBoolA" <> 0 OR "e"."NullableBoolA" IS NULL """, // """ -SELECT "e"."Id", "e"."BoolA" = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +WHERE "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" +SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."BoolB" +WHERE ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +SELECT "e"."Id", "e"."NullableBoolA" = 0 OR "e"."NullableBoolA" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +WHERE "e"."NullableBoolA" = 0 OR "e"."NullableBoolA" IS NULL """, // """ -SELECT "e"."Id", "e"."NullableBoolA" = "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" +SELECT "e"."Id", "e"."BoolB" AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" = "e"."BoolB" OR "e"."NullableBoolA" IS NULL +WHERE "e"."BoolB" """, // """ -SELECT "e"."Id", ("e"."NullableBoolA" = "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" +SELECT "e"."Id", 1 = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE ("e"."NullableBoolA" = "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) +WHERE 1 = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL """, // """ -SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" +SELECT "e"."Id", NOT ("e"."BoolB") AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL +WHERE NOT ("e"."BoolB") """, // """ -SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" +SELECT "e"."Id", 0 = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) +WHERE 0 = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL """, // """ -SELECT "e"."Id", "e"."BoolA" = "e"."BoolB" AS "X" +SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" = "e"."BoolB" +WHERE "e"."BoolA" <> "e"."BoolB" """, // """ -SELECT "e"."Id", "e"."BoolA" = "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" = "e"."NullableBoolB" +WHERE "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" +SELECT "e"."Id", NOT ("e"."BoolA") AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."BoolB" +WHERE NOT ("e"."BoolA") """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +SELECT "e"."Id", "e"."BoolA" = "e"."BoolB" AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."NullableBoolB" +WHERE "e"."BoolA" = "e"."BoolB" """, // """ -SELECT "e"."Id", "e"."NullableBoolA" = "e"."BoolB" AND "e"."NullableBoolA" IS NOT NULL AS "X" +SELECT "e"."Id", "e"."BoolA" = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" = "e"."BoolB" +WHERE "e"."BoolA" = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL """, // """ -SELECT "e"."Id", ("e"."NullableBoolA" = "e"."NullableBoolB" AND "e"."NullableBoolA" IS NOT NULL AND "e"."NullableBoolB" IS NOT NULL) OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) AS "X" +SELECT "e"."Id", "e"."BoolA" AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" = "e"."NullableBoolB" OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) +WHERE "e"."BoolA" """, // """ -SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" AND "e"."NullableBoolA" IS NOT NULL AS "X" +SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" <> "e"."BoolB" +WHERE "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL """, // """ -SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" AND "e"."NullableBoolA" IS NOT NULL AND "e"."NullableBoolB" IS NOT NULL) OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) AS "X" +SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" <> "e"."NullableBoolB" OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) +WHERE ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" +SELECT "e"."Id", "e"."NullableBoolA" <> 1 OR "e"."NullableBoolA" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."BoolB" +WHERE "e"."NullableBoolA" <> 1 OR "e"."NullableBoolA" IS NULL """, // """ -SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +SELECT "e"."Id", "e"."NullableBoolA" = "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" <> "e"."NullableBoolB" +WHERE "e"."NullableBoolA" = "e"."BoolB" OR "e"."NullableBoolA" IS NULL """, // """ -SELECT "e"."Id", "e"."BoolA" = "e"."BoolB" AS "X" +SELECT "e"."Id", ("e"."NullableBoolA" = "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" = "e"."BoolB" +WHERE ("e"."NullableBoolA" = "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) """, // """ -SELECT "e"."Id", "e"."BoolA" = "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +SELECT "e"."Id", "e"."NullableBoolA" = 1 OR "e"."NullableBoolA" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."BoolA" = "e"."NullableBoolB" +WHERE "e"."NullableBoolA" = 1 OR "e"."NullableBoolA" IS NULL """, // """ -SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" AND "e"."NullableBoolA" IS NOT NULL AS "X" +SELECT "e"."Id", NOT ("e"."BoolB") AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" <> "e"."BoolB" +WHERE NOT ("e"."BoolB") """, // """ -SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" AND "e"."NullableBoolA" IS NOT NULL AND "e"."NullableBoolB" IS NOT NULL) OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) AS "X" +SELECT "e"."Id", 1 <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" <> "e"."NullableBoolB" OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) +WHERE 1 <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL """, // """ -SELECT "e"."Id", "e"."NullableBoolA" = "e"."BoolB" AND "e"."NullableBoolA" IS NOT NULL AS "X" +SELECT "e"."Id", "e"."BoolB" AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" = "e"."BoolB" +WHERE "e"."BoolB" """, // """ -SELECT "e"."Id", ("e"."NullableBoolA" = "e"."NullableBoolB" AND "e"."NullableBoolA" IS NOT NULL AND "e"."NullableBoolB" IS NOT NULL) OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) AS "X" +SELECT "e"."Id", 0 <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" FROM "Entities1" AS "e" """, // """ SELECT "e"."Id" FROM "Entities1" AS "e" -WHERE "e"."NullableBoolA" = "e"."NullableBoolB" OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) +WHERE 0 <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +""", + // + """ +SELECT "e"."Id", "e"."BoolA" = "e"."BoolB" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" = "e"."BoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +""", + // + """ +SELECT "e"."Id", "e"."BoolA" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" <> "e"."BoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +""", + // + """ +SELECT "e"."Id", NOT ("e"."BoolA") AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."BoolA") +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" = "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" = "e"."BoolB" OR "e"."NullableBoolA" IS NULL +""", + // + """ +SELECT "e"."Id", ("e"."NullableBoolA" = "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE ("e"."NullableBoolA" = "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" <> 0 OR "e"."NullableBoolA" IS NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" <> 0 OR "e"."NullableBoolA" IS NULL +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" <> "e"."BoolB" OR "e"."NullableBoolA" IS NULL +""", + // + """ +SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE ("e"."NullableBoolA" <> "e"."NullableBoolB" OR "e"."NullableBoolA" IS NULL OR "e"."NullableBoolB" IS NULL) AND ("e"."NullableBoolA" IS NOT NULL OR "e"."NullableBoolB" IS NOT NULL) +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" = 0 OR "e"."NullableBoolA" IS NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" = 0 OR "e"."NullableBoolA" IS NULL +""", + // + """ +SELECT "e"."Id", "e"."BoolB" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolB" +""", + // + """ +SELECT "e"."Id", 1 = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE 1 = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +""", + // + """ +SELECT "e"."Id", NOT ("e"."BoolB") AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."BoolB") +""", + // + """ +SELECT "e"."Id", 0 = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE 0 = "e"."NullableBoolB" OR "e"."NullableBoolB" IS NULL +""", + // + """ +SELECT "e"."Id", "e"."BoolA" = "e"."BoolB" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" = "e"."BoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" = "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" = "e"."NullableBoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" <> "e"."BoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" <> "e"."NullableBoolB" +""", + // + """ +SELECT "e"."Id", NOT ("e"."BoolA") AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."BoolA") +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" = "e"."BoolB" AND "e"."NullableBoolA" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" = "e"."BoolB" +""", + // + """ +SELECT "e"."Id", ("e"."NullableBoolA" = "e"."NullableBoolB" AND "e"."NullableBoolA" IS NOT NULL AND "e"."NullableBoolB" IS NOT NULL) OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" = "e"."NullableBoolB" OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" = 1 AND "e"."NullableBoolA" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" AND "e"."NullableBoolA" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" <> "e"."BoolB" +""", + // + """ +SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" AND "e"."NullableBoolA" IS NOT NULL AND "e"."NullableBoolB" IS NOT NULL) OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" <> "e"."NullableBoolB" OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" <> 1 AND "e"."NullableBoolA" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."NullableBoolA") +""", + // + """ +SELECT "e"."Id", "e"."BoolB" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolB" +""", + // + """ +SELECT "e"."Id", 1 = "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolB" +""", + // + """ +SELECT "e"."Id", NOT ("e"."BoolB") AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."BoolB") +""", + // + """ +SELECT "e"."Id", 0 = "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE 0 = "e"."NullableBoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" <> "e"."BoolB" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" <> "e"."BoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" <> "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" <> "e"."NullableBoolB" +""", + // + """ +SELECT "e"."Id", NOT ("e"."BoolA") AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."BoolA") +""", + // + """ +SELECT "e"."Id", "e"."BoolA" = "e"."BoolB" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" = "e"."BoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" = "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" = "e"."NullableBoolB" +""", + // + """ +SELECT "e"."Id", "e"."BoolA" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolA" +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" <> "e"."BoolB" AND "e"."NullableBoolA" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" <> "e"."BoolB" +""", + // + """ +SELECT "e"."Id", ("e"."NullableBoolA" <> "e"."NullableBoolB" AND "e"."NullableBoolA" IS NOT NULL AND "e"."NullableBoolB" IS NOT NULL) OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" <> "e"."NullableBoolB" OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" = 0 AND "e"."NullableBoolA" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" = 0 +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" = "e"."BoolB" AND "e"."NullableBoolA" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" = "e"."BoolB" +""", + // + """ +SELECT "e"."Id", ("e"."NullableBoolA" = "e"."NullableBoolB" AND "e"."NullableBoolA" IS NOT NULL AND "e"."NullableBoolB" IS NOT NULL) OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" = "e"."NullableBoolB" OR ("e"."NullableBoolA" IS NULL AND "e"."NullableBoolB" IS NULL) +""", + // + """ +SELECT "e"."Id", "e"."NullableBoolA" <> 0 AND "e"."NullableBoolA" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."NullableBoolA" <> 0 +""", + // + """ +SELECT "e"."Id", NOT ("e"."BoolB") AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."BoolB") +""", + // + """ +SELECT "e"."Id", 1 <> "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE NOT ("e"."NullableBoolB") +""", + // + """ +SELECT "e"."Id", "e"."BoolB" AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE "e"."BoolB" +""", + // + """ +SELECT "e"."Id", 0 <> "e"."NullableBoolB" AND "e"."NullableBoolB" IS NOT NULL AS "X" +FROM "Entities1" AS "e" +""", + // + """ +SELECT "e"."Id" +FROM "Entities1" AS "e" +WHERE 0 <> "e"."NullableBoolB" """); } From f8051b1767eb3ba8a37378be86ea97826e527bbc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 15 Jan 2025 20:16:05 +0000 Subject: [PATCH 13/79] Update dependencies from https://github.com/dotnet/arcade build 20250110.1 (#35470) [release/8.0] Update dependencies from dotnet/arcade - Merge branch 'release/8.0' into darc-release/8.0-e16f5af9-e571-4f04-9194-af7b3abc77a5 --- eng/Version.Details.xml | 12 ++-- eng/Versions.props | 2 +- eng/common/cross/toolchain.cmake | 61 +++++++++---------- .../job/publish-build-assets.yml | 2 +- .../post-build/common-variables.yml | 2 +- .../steps/get-delegation-sas.yml | 11 +++- eng/common/templates/job/job.yml | 2 +- .../templates/steps/get-delegation-sas.yml | 11 +++- eng/common/tools.ps1 | 2 +- eng/common/tools.sh | 2 +- global.json | 4 +- 11 files changed, 64 insertions(+), 47 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5e40db4ba79..435cd9fa5a8 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -60,17 +60,17 @@ - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + c255aae7f2b128fa20a4441f0e192c3c53561621 - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + c255aae7f2b128fa20a4441f0e192c3c53561621 - + https://github.com/dotnet/arcade - e5b13e054339e41d422212a0ecaf24fec20cb5a1 + c255aae7f2b128fa20a4441f0e192c3c53561621 diff --git a/eng/Versions.props b/eng/Versions.props index 5e34b5c6250..2ff30547e98 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -33,7 +33,7 @@ 8.0.12-servicing.24603.5 - 8.0.0-beta.24508.1 + 8.0.0-beta.25060.1 diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index 0998e875e5f..dafabdcaef0 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -40,7 +40,7 @@ if(TARGET_ARCH_NAME STREQUAL "arm") set(TOOLCHAIN "arm-linux-gnueabihf") endif() if(TIZEN) - set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf/9.2.0") + set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf") endif() elseif(TARGET_ARCH_NAME STREQUAL "arm64") set(CMAKE_SYSTEM_PROCESSOR aarch64) @@ -49,7 +49,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64") elseif(LINUX) set(TOOLCHAIN "aarch64-linux-gnu") if(TIZEN) - set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0") + set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu") endif() elseif(FREEBSD) set(triple "aarch64-unknown-freebsd12") @@ -58,7 +58,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "armel") set(CMAKE_SYSTEM_PROCESSOR armv7l) set(TOOLCHAIN "arm-linux-gnueabi") if(TIZEN) - set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/9.2.0") + set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi") endif() elseif(TARGET_ARCH_NAME STREQUAL "armv6") set(CMAKE_SYSTEM_PROCESSOR armv6l) @@ -95,7 +95,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64") elseif(LINUX) set(TOOLCHAIN "x86_64-linux-gnu") if(TIZEN) - set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu/9.2.0") + set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu") endif() elseif(FREEBSD) set(triple "x86_64-unknown-freebsd12") @@ -112,7 +112,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86") set(TOOLCHAIN "i686-linux-gnu") endif() if(TIZEN) - set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0") + set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu") endif() else() message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only arm, arm64, armel, armv6, ppc64le, riscv64, s390x, x64 and x86 are supported!") @@ -124,26 +124,25 @@ endif() # Specify include paths if(TIZEN) - if(TARGET_ARCH_NAME STREQUAL "arm") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7hl-tizen-linux-gnueabihf) - endif() - if(TARGET_ARCH_NAME STREQUAL "armel") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi) - endif() - if(TARGET_ARCH_NAME STREQUAL "arm64") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/aarch64-tizen-linux-gnu) - endif() - if(TARGET_ARCH_NAME STREQUAL "x86") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/i586-tizen-linux-gnu) - endif() - if(TARGET_ARCH_NAME STREQUAL "x64") - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/) - include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/x86_64-tizen-linux-gnu) + function(find_toolchain_dir prefix) + # Dynamically find the version subdirectory + file(GLOB DIRECTORIES "${prefix}/*") + list(GET DIRECTORIES 0 FIRST_MATCH) + get_filename_component(TOOLCHAIN_VERSION ${FIRST_MATCH} NAME) + + set(TIZEN_TOOLCHAIN_PATH "${prefix}/${TOOLCHAIN_VERSION}" PARENT_SCOPE) + endfunction() + + if(TARGET_ARCH_NAME MATCHES "^(arm|armel|x86)$") + find_toolchain_dir("${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + else() + find_toolchain_dir("${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") endif() + + message(STATUS "TIZEN_TOOLCHAIN_PATH set to: ${TIZEN_TOOLCHAIN_PATH}") + + include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++) + include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++/${TIZEN_TOOLCHAIN}) endif() if(ANDROID) @@ -265,21 +264,21 @@ endif() if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$") if(TIZEN) - add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib") - add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}") endif() elseif(TARGET_ARCH_NAME MATCHES "^(arm64|x64)$") if(TIZEN) - add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib64") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64") - add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/lib64") add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64") - add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-Wl,--rpath-link=${TIZEN_TOOLCHAIN_PATH}") endif() elseif(TARGET_ARCH_NAME STREQUAL "x86") if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl) @@ -288,10 +287,10 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86") endif() add_toolchain_linker_flag(-m32) if(TIZEN) - add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib") add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib") - add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}") endif() elseif(ILLUMOS) add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib/amd64") diff --git a/eng/common/templates-official/job/publish-build-assets.yml b/eng/common/templates-official/job/publish-build-assets.yml index 0117328800c..b2ccd9df680 100644 --- a/eng/common/templates-official/job/publish-build-assets.yml +++ b/eng/common/templates-official/job/publish-build-assets.yml @@ -86,7 +86,7 @@ jobs: arguments: > -task PublishBuildAssets -restore -msbuildEngine dotnet /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' - /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com + /p:MaestroApiEndpoint=https://maestro.dot.net /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} /p:OfficialBuildId=$(Build.BuildNumber) condition: ${{ parameters.condition }} diff --git a/eng/common/templates-official/post-build/common-variables.yml b/eng/common/templates-official/post-build/common-variables.yml index c24193acfc9..173914f2364 100644 --- a/eng/common/templates-official/post-build/common-variables.yml +++ b/eng/common/templates-official/post-build/common-variables.yml @@ -7,7 +7,7 @@ variables: # Default Maestro++ API Endpoint and API Version - name: MaestroApiEndPoint - value: "https://maestro-prod.westus2.cloudapp.azure.com" + value: "https://maestro.dot.net" - name: MaestroApiAccessToken value: $(MaestroAccessToken) - name: MaestroApiVersion diff --git a/eng/common/templates-official/steps/get-delegation-sas.yml b/eng/common/templates-official/steps/get-delegation-sas.yml index c0e8f91317f..c690cc0a070 100644 --- a/eng/common/templates-official/steps/get-delegation-sas.yml +++ b/eng/common/templates-official/steps/get-delegation-sas.yml @@ -28,7 +28,16 @@ steps: # Calculate the expiration of the SAS token and convert to UTC $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") - $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + # Temporarily work around a helix issue where SAS tokens with / in them will cause incorrect downloads + # of correlation payloads. https://github.com/dotnet/dnceng/issues/3484 + $sas = "" + do { + $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to generate SAS token." + exit 1 + } + } while($sas.IndexOf('/') -ne -1) if ($LASTEXITCODE -ne 0) { Write-Error "Failed to generate SAS token." diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index 8ec5c4f2d9f..e295031c098 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -128,7 +128,7 @@ jobs: - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - task: MicroBuildSigningPlugin@3 + - task: MicroBuildSigningPlugin@4 displayName: Install MicroBuild plugin inputs: signType: $(_SignType) diff --git a/eng/common/templates/steps/get-delegation-sas.yml b/eng/common/templates/steps/get-delegation-sas.yml index c0e8f91317f..c690cc0a070 100644 --- a/eng/common/templates/steps/get-delegation-sas.yml +++ b/eng/common/templates/steps/get-delegation-sas.yml @@ -28,7 +28,16 @@ steps: # Calculate the expiration of the SAS token and convert to UTC $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") - $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + # Temporarily work around a helix issue where SAS tokens with / in them will cause incorrect downloads + # of correlation payloads. https://github.com/dotnet/dnceng/issues/3484 + $sas = "" + do { + $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to generate SAS token." + exit 1 + } + } while($sas.IndexOf('/') -ne -1) if ($LASTEXITCODE -ne 0) { Write-Error "Failed to generate SAS token." diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index a2dedaa5297..60352ede194 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -321,7 +321,7 @@ function InstallDotNet([string] $dotnetRoot, $variations += @($installParameters) $dotnetBuilds = $installParameters.Clone() - $dotnetbuilds.AzureFeed = "https://dotnetbuilds.azureedge.net/public" + $dotnetbuilds.AzureFeed = "https://ci.dot.net/public" $variations += @($dotnetBuilds) if ($runtimeSourceFeed) { diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 3392e3a9992..b9b329ce37f 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -234,7 +234,7 @@ function InstallDotNet { local public_location=("${installParameters[@]}") variations+=(public_location) - local dotnetbuilds=("${installParameters[@]}" --azure-feed "https://dotnetbuilds.azureedge.net/public") + local dotnetbuilds=("${installParameters[@]}" --azure-feed "https://ci.dot.net/public") variations+=(dotnetbuilds) if [[ -n "${6:-}" ]]; then diff --git a/global.json b/global.json index ad0cc5b67aa..6e3126a5a71 100644 --- a/global.json +++ b/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24508.1", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24508.1" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25060.1", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.25060.1" } } From 1bdfaaeddf567214d363aa2396fd4874abf204cc Mon Sep 17 00:00:00 2001 From: ProductConstructionServiceProd Date: Fri, 17 Jan 2025 00:17:14 +0000 Subject: [PATCH 14/79] Merged PR 46809: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:922981e1-18b6-46aa-2468-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 922981e1-18b6-46aa-2468-08dbd53ba9ce - **Build**: 20250116.9 - **Date Produced**: January 16, 2025 11:17:27 PM UTC - **Commit**: eba546b0f0d448e0176a2222548fd7a2fbf464c0 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.12-servicing.24603.5 to 8.0.13-servicing.25066.9][1] - **Microsoft.NETCore.App.Ref**: [from 8.0.12 to 8.0.13][1] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 8.0.12 to 8.0.13][1] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 8.0.12-servicing.24603.5 to 8.0.13-servicing.25066.9][1] - **System.Formats.Asn1**: [from 8.0.1 to 8.0.2][2] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GC89ef51c5d8f5239345127a1e282e11036e590c8b&targetVersion=GCeba546b0f0d448e0176a2222548fd7a2fbf464c0&_a=files [2]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GC2aade6beb02ea367fd97c4070a4198802fe61c03&targetVersion=GCeba546b0f0d448e0176a2222548fd7a2fbf464c0&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:922981e1-18b6-46aa-2468-08dbd53ba9ce) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 20 ++++++++++---------- eng/Versions.props | 10 +++++----- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/NuGet.config b/NuGet.config index 363efb21cda..c09d1c39939 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -19,7 +19,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 435cd9fa5a8..6d65ae715d1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -29,34 +29,34 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 89ef51c5d8f5239345127a1e282e11036e590c8b + eba546b0f0d448e0176a2222548fd7a2fbf464c0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + eba546b0f0d448e0176a2222548fd7a2fbf464c0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 89ef51c5d8f5239345127a1e282e11036e590c8b + eba546b0f0d448e0176a2222548fd7a2fbf464c0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 89ef51c5d8f5239345127a1e282e11036e590c8b + eba546b0f0d448e0176a2222548fd7a2fbf464c0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 89ef51c5d8f5239345127a1e282e11036e590c8b + eba546b0f0d448e0176a2222548fd7a2fbf464c0 diff --git a/eng/Versions.props b/eng/Versions.props index 2ff30547e98..b849e86d646 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,13 +24,13 @@ 8.0.1 8.0.1 8.0.2 - 8.0.12-servicing.24603.5 + 8.0.13-servicing.25066.9 8.0.1 8.0.5 - 8.0.1 - 8.0.12 - 8.0.12 - 8.0.12-servicing.24603.5 + 8.0.2 + 8.0.13 + 8.0.13 + 8.0.13-servicing.25066.9 8.0.0-beta.25060.1 From 7bb42e8dd6df45b8570b7cb7ccdcfd5fb6460b0e Mon Sep 17 00:00:00 2001 From: ProductConstructionServiceProd Date: Fri, 17 Jan 2025 05:57:57 +0000 Subject: [PATCH 15/79] Merged PR 46816: [internal/release/9.0] Update dependencies from dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:9dd82232-9947-4c91-873c-a50d5007af96) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 9dd82232-9947-4c91-873c-a50d5007af96 - **Build**: 20250116.10 - **Date Produced**: January 17, 2025 12:30:05 AM UTC - **Commit**: 80aa709f5d919c6814726788dc6dabe23e79e672 - **Branch**: refs/heads/internal/release/9.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.Caching.Memory**: [from 9.0.1 to 9.0.2][1] - **Microsoft.Extensions.Configuration**: [from 9.0.1 to 9.0.2][1] - **Microsoft.Extensions.Configuration.Abstractions**: [from 9.0.1 to 9.0.2][1] - **Microsoft.Extensions.Configuration.EnvironmentVariables**: [from 9.0.1 to 9.0.2][1] - **Microsoft.Extensions.Configuration.Json**: [from 9.0.1 to 9.0.2][1] - **Microsoft.Extensions.DependencyInjection**: [from 9.0.1 to 9.0.2][1] - **Microsoft.Extensions.DependencyModel**: [from 9.0.1 to 9.0.2][1] - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 9.0.1-servicing.24610.10 to 9.0.2-servicing.25066.10][1] - **Microsoft.Extensions.Logging**: [from 9.0.1 to 9.0.2][1] - **Microsoft.NETCore.App.Ref**: [from 9.0.1 to 9.0.2][1] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 9.0.1 to 9.0.2][1] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 9.0.1-servicing.24610.10 to 9.0.2-servicing.25066.10][1] - **System.Formats.Asn1**: [from 9.0.1 to 9.0.2][1] - **System.Text.Encodings.Web**: [from 9.0.1 to 9.0.2][1] - **System.Text.Json**: [from 9.0.1 to 9.0.2][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GCc8acea22626efab11c13778c028975acdc34678f&targetVersion=GC80aa709f5d919c6814726788dc6dabe23e79e672&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:9dd82232-9947-4c91-873c-a50d5007af96) --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 30 ++++++++++----------- 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/NuGet.config b/NuGet.config index b24702052c1..02a4c598f66 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c07270a697f..081db28cc8b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,69 +1,69 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - c8acea22626efab11c13778c028975acdc34678f + 80aa709f5d919c6814726788dc6dabe23e79e672 diff --git a/eng/Versions.props b/eng/Versions.props index 080cc9bd776..52ecba2a374 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -17,21 +17,21 @@ False - 9.0.1 - 9.0.1 - 9.0.1 - 9.0.1 - 9.0.1 - 9.0.1 - 9.0.1 - 9.0.1-servicing.24610.10 - 9.0.1 - 9.0.1 - 9.0.1 - 9.0.1-servicing.24610.10 - 9.0.1 - 9.0.1 - 9.0.1 + 9.0.2 + 9.0.2 + 9.0.2 + 9.0.2 + 9.0.2 + 9.0.2 + 9.0.2 + 9.0.2-servicing.25066.10 + 9.0.2 + 9.0.2 + 9.0.2 + 9.0.2-servicing.25066.10 + 9.0.2 + 9.0.2 + 9.0.2 9.0.0-beta.25058.5 From 9e3cdc23f26b3ff5688ebfb7937abba19c6d64e9 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 06:03:37 +0000 Subject: [PATCH 16/79] Update dependencies from https://github.com/dotnet/arcade build 20250115.2 (#35498) [release/9.0] Update dependencies from dotnet/arcade --- NuGet.config | 4 ++++ eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- eng/common/template-guidance.md | 2 +- global.json | 8 ++++---- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/NuGet.config b/NuGet.config index b24702052c1..cd98ffb98b9 100644 --- a/NuGet.config +++ b/NuGet.config @@ -5,6 +5,8 @@ + + @@ -21,6 +23,8 @@ + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c07270a697f..e9e5456d8ef 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - 8cc6ecd76c24ef6665579a5c5e386a211a1e7c54 + c4bbc67763bf0c5a868862df874079380e647d61 - + https://github.com/dotnet/arcade - 8cc6ecd76c24ef6665579a5c5e386a211a1e7c54 + c4bbc67763bf0c5a868862df874079380e647d61 - + https://github.com/dotnet/arcade - 8cc6ecd76c24ef6665579a5c5e386a211a1e7c54 + c4bbc67763bf0c5a868862df874079380e647d61 diff --git a/eng/Versions.props b/eng/Versions.props index 080cc9bd776..59c15bc078e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.1 - 9.0.0-beta.25058.5 + 9.0.0-beta.25065.2 17.8.3 diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md index 5ef6c30ba92..98bbc1ded0b 100644 --- a/eng/common/template-guidance.md +++ b/eng/common/template-guidance.md @@ -57,7 +57,7 @@ extends: Note: Multiple outputs are ONLY applicable to 1ES PT publishing (only usable when referencing `templates-official`). -# Development notes +## Development notes **Folder / file structure** diff --git a/global.json b/global.json index 724b88e9ed9..de3eeb86e5a 100644 --- a/global.json +++ b/global.json @@ -1,11 +1,11 @@ { "sdk": { - "version": "9.0.100", + "version": "9.0.102", "allowPrerelease": true, "rollForward": "latestMajor" }, "tools": { - "dotnet": "9.0.100", + "dotnet": "9.0.102", "runtimes": { "dotnet": [ "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)" @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25058.5", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25058.5" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25065.2", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25065.2" } } From 4623a39d092611e34382d92c64448b92e9749133 Mon Sep 17 00:00:00 2001 From: Andriy Svyryd Date: Wed, 29 Jan 2025 10:41:58 -0800 Subject: [PATCH 17/79] Make SnapshotModelProcessor idempotent. (#35543) Fixes #35146 --- .../Migrations/Internal/SnapshotModelProcessor.cs | 13 ++++++------- .../Migrations/Design/SnapshotModelProcessorTest.cs | 5 ++++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/EFCore.Design/Migrations/Internal/SnapshotModelProcessor.cs b/src/EFCore.Design/Migrations/Internal/SnapshotModelProcessor.cs index a47c283c472..30b89651e13 100644 --- a/src/EFCore.Design/Migrations/Internal/SnapshotModelProcessor.cs +++ b/src/EFCore.Design/Migrations/Internal/SnapshotModelProcessor.cs @@ -52,7 +52,9 @@ public SnapshotModelProcessor( /// public virtual IModel? Process(IReadOnlyModel? model, bool resetVersion = false) { - if (model == null) + if (model == null + || model is not Model mutableModel + || mutableModel.IsReadOnly) { return null; } @@ -79,13 +81,10 @@ public SnapshotModelProcessor( } } - if (model is IMutableModel mutableModel) + mutableModel.RemoveAnnotation("ChangeDetector.SkipDetectChanges"); + if (resetVersion) { - mutableModel.RemoveAnnotation("ChangeDetector.SkipDetectChanges"); - if (resetVersion) - { - mutableModel.SetProductVersion(ProductInfo.GetVersion()); - } + mutableModel.SetProductVersion(ProductInfo.GetVersion()); } return _modelRuntimeInitializer.Initialize((IModel)model, designTime: true, validationLogger: null); diff --git a/test/EFCore.Design.Tests/Migrations/Design/SnapshotModelProcessorTest.cs b/test/EFCore.Design.Tests/Migrations/Design/SnapshotModelProcessorTest.cs index 6cbc70fc2d8..c7070dcc763 100644 --- a/test/EFCore.Design.Tests/Migrations/Design/SnapshotModelProcessorTest.cs +++ b/test/EFCore.Design.Tests/Migrations/Design/SnapshotModelProcessorTest.cs @@ -43,7 +43,8 @@ public void Updates_provider_annotations_on_model() var reporter = new TestOperationReporter(); - new SnapshotModelProcessor(reporter, DummyModelRuntimeInitializer.Instance).Process(model); + var processor = new SnapshotModelProcessor(reporter, DummyModelRuntimeInitializer.Instance); + processor.Process(model); AssertAnnotations(model); AssertAnnotations(entityType); @@ -54,6 +55,8 @@ public void Updates_provider_annotations_on_model() AssertAnnotations(nav2); AssertAnnotations(index); + Assert.Same(model, processor.Process(model)); + Assert.Empty(reporter.Messages); } From b38064794a2918fcd2722d691341584f51680c20 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 06:07:59 +0000 Subject: [PATCH 18/79] Update dependencies from https://github.com/dotnet/arcade build 20250127.4 (#35572) [release/9.0] Update dependencies from dotnet/arcade --- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- eng/common/internal/Tools.csproj | 10 ---------- global.json | 4 ++-- 4 files changed, 9 insertions(+), 19 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e9e5456d8ef..eaf416dd3d3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - c4bbc67763bf0c5a868862df874079380e647d61 + bac7e1caea791275b7c3ccb4cb75fd6a04a26618 - + https://github.com/dotnet/arcade - c4bbc67763bf0c5a868862df874079380e647d61 + bac7e1caea791275b7c3ccb4cb75fd6a04a26618 - + https://github.com/dotnet/arcade - c4bbc67763bf0c5a868862df874079380e647d61 + bac7e1caea791275b7c3ccb4cb75fd6a04a26618 diff --git a/eng/Versions.props b/eng/Versions.props index 59c15bc078e..9ab940f8b32 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.1 - 9.0.0-beta.25065.2 + 9.0.0-beta.25077.4 17.8.3 diff --git a/eng/common/internal/Tools.csproj b/eng/common/internal/Tools.csproj index 32f79dfb340..feaa6d20812 100644 --- a/eng/common/internal/Tools.csproj +++ b/eng/common/internal/Tools.csproj @@ -15,16 +15,6 @@ - - - - https://devdiv.pkgs.visualstudio.com/_packaging/dotnet-core-internal-tooling/nuget/v3/index.json; - - - $(RestoreSources); - https://devdiv.pkgs.visualstudio.com/_packaging/VS/nuget/v3/index.json; - - diff --git a/global.json b/global.json index de3eeb86e5a..cc2268259a4 100644 --- a/global.json +++ b/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25065.2", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25065.2" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25077.4", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25077.4" } } From 095da3c25e10bfed34c992e8593e9b3e95be7ffc Mon Sep 17 00:00:00 2001 From: Sean Reeser Date: Tue, 4 Feb 2025 11:41:53 -0800 Subject: [PATCH 19/79] Update branding to 9.0.3 --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 9ab940f8b32..57c6944383b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 9.0.2 + 9.0.3 rtm From 040757c8af5eb454b93a7f50f12d7e613caaf3cd Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Tue, 4 Feb 2025 14:57:07 -0800 Subject: [PATCH 20/79] Update branding to 8.0.14 (#35583) * Update branding to 8.0.14 * Update Cosmos Test GitHub Actions --------- Co-authored-by: Andriy Svyryd --- .github/workflows/TestCosmos.yaml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/TestCosmos.yaml b/.github/workflows/TestCosmos.yaml index 52b8aeb3cbd..735b4ca4cfc 100644 --- a/.github/workflows/TestCosmos.yaml +++ b/.github/workflows/TestCosmos.yaml @@ -20,7 +20,7 @@ jobs: Start-CosmosDbEmulator -Timeout 360 - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Restore run: restore.cmd @@ -35,7 +35,7 @@ jobs: shell: cmd - name: Publish Test Results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: always() with: name: test-results diff --git a/eng/Versions.props b/eng/Versions.props index 2ff30547e98..d0998908f13 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 8.0.13 + 8.0.14 servicing From 8e4c8005250a2a911b146c13c1e1cc9814397387 Mon Sep 17 00:00:00 2001 From: ProductConstructionServiceProd Date: Wed, 12 Feb 2025 05:01:40 +0000 Subject: [PATCH 21/79] Merged PR 47535: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:922981e1-18b6-46aa-2468-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 922981e1-18b6-46aa-2468-08dbd53ba9ce - **Build**: 20250211.10 - **Date Produced**: February 12, 2025 3:38:00 AM UTC - **Commit**: d8ee7c837b53a52795d374c694ff2c72b62bcef0 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.13-servicing.25066.9 to 8.0.14-servicing.25111.10][1] - **Microsoft.NETCore.App.Ref**: [from 8.0.13 to 8.0.14][1] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 8.0.13 to 8.0.14][1] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 8.0.13-servicing.25066.9 to 8.0.14-servicing.25111.10][1] - **System.Formats.Asn1**: [from 8.0.2 to 8.0.2][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GCeba546b0f0d448e0176a2222548fd7a2fbf464c0&targetVersion=GCd8ee7c837b53a52795d374c694ff2c72b62bcef0&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:922981e1-18b6-46aa-2468-08dbd53ba9ce) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 18 +++++++++--------- eng/Versions.props | 8 ++++---- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/NuGet.config b/NuGet.config index c09d1c39939..61a48bf9071 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -19,7 +19,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 6d65ae715d1..55f8c0030de 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -29,9 +29,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eba546b0f0d448e0176a2222548fd7a2fbf464c0 + d8ee7c837b53a52795d374c694ff2c72b62bcef0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -39,24 +39,24 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eba546b0f0d448e0176a2222548fd7a2fbf464c0 + d8ee7c837b53a52795d374c694ff2c72b62bcef0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eba546b0f0d448e0176a2222548fd7a2fbf464c0 + d8ee7c837b53a52795d374c694ff2c72b62bcef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eba546b0f0d448e0176a2222548fd7a2fbf464c0 + d8ee7c837b53a52795d374c694ff2c72b62bcef0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eba546b0f0d448e0176a2222548fd7a2fbf464c0 + d8ee7c837b53a52795d374c694ff2c72b62bcef0 diff --git a/eng/Versions.props b/eng/Versions.props index 6a7f22ef7fb..1219d47078d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,13 +24,13 @@ 8.0.1 8.0.1 8.0.2 - 8.0.13-servicing.25066.9 + 8.0.14-servicing.25111.10 8.0.1 8.0.5 8.0.2 - 8.0.13 - 8.0.13 - 8.0.13-servicing.25066.9 + 8.0.14 + 8.0.14 + 8.0.14-servicing.25111.10 8.0.0-beta.25060.1 From 85856237290a59157865454c9e8337dd4d591f53 Mon Sep 17 00:00:00 2001 From: ProductConstructionServiceProd Date: Wed, 12 Feb 2025 05:01:41 +0000 Subject: [PATCH 22/79] Merged PR 47531: [internal/release/9.0] Update dependencies from dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:9dd82232-9947-4c91-873c-a50d5007af96) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 9dd82232-9947-4c91-873c-a50d5007af96 - **Build**: 20250211.13 - **Date Produced**: February 12, 2025 3:59:19 AM UTC - **Commit**: 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - **Branch**: refs/heads/internal/release/9.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.Caching.Memory**: [from 9.0.2 to 9.0.3][1] - **Microsoft.Extensions.Configuration**: [from 9.0.2 to 9.0.3][1] - **Microsoft.Extensions.Configuration.Abstractions**: [from 9.0.2 to 9.0.3][1] - **Microsoft.Extensions.Configuration.EnvironmentVariables**: [from 9.0.2 to 9.0.3][1] - **Microsoft.Extensions.Configuration.Json**: [from 9.0.2 to 9.0.3][1] - **Microsoft.Extensions.DependencyInjection**: [from 9.0.2 to 9.0.3][1] - **Microsoft.Extensions.DependencyModel**: [from 9.0.2 to 9.0.3][1] - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 9.0.2-servicing.25066.10 to 9.0.3-servicing.25111.13][1] - **Microsoft.Extensions.Logging**: [from 9.0.2 to 9.0.3][1] - **Microsoft.NETCore.App.Ref**: [from 9.0.2 to 9.0.3][1] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 9.0.2 to 9.0.3][1] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 9.0.2-servicing.25066.10 to 9.0.3-servicing.25111.13][1] - **System.Formats.Asn1**: [from 9.0.2 to 9.0.3][1] - **System.Text.Encodings.Web**: [from 9.0.2 to 9.0.3][1] - **System.Text.Json**: [from 9.0.2 to 9.0.3][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GC80aa709f5d919c6814726788dc6dabe23e79e672&targetVersion=GC831d23e56149cd59c40fc00c7feb7c5334bd19c4&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:9dd82232-9947-4c91-873c-a50d5007af96) --- NuGet.config | 10 ++----- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 30 ++++++++++----------- 3 files changed, 47 insertions(+), 53 deletions(-) diff --git a/NuGet.config b/NuGet.config index ce2cff65847..bd2ac2630b0 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,10 +4,7 @@ - - - - + @@ -24,10 +21,7 @@ - - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4e5e3a95414..7d47952faa3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,69 +1,69 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 80aa709f5d919c6814726788dc6dabe23e79e672 + 831d23e56149cd59c40fc00c7feb7c5334bd19c4 diff --git a/eng/Versions.props b/eng/Versions.props index e749d3ea77c..8a42bd48a5d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -17,21 +17,21 @@ False - 9.0.2 - 9.0.2 - 9.0.2 - 9.0.2 - 9.0.2 - 9.0.2 - 9.0.2 - 9.0.2-servicing.25066.10 - 9.0.2 - 9.0.2 - 9.0.2 - 9.0.2-servicing.25066.10 - 9.0.2 - 9.0.2 - 9.0.2 + 9.0.3 + 9.0.3 + 9.0.3 + 9.0.3 + 9.0.3 + 9.0.3 + 9.0.3 + 9.0.3-servicing.25111.13 + 9.0.3 + 9.0.3 + 9.0.3 + 9.0.3-servicing.25111.13 + 9.0.3 + 9.0.3 + 9.0.3 9.0.0-beta.25077.4 From c06541869d3ba81136a39f2b931c4c1e036a3b99 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 22:35:39 +0000 Subject: [PATCH 23/79] Update dependencies from https://github.com/dotnet/arcade build 20250211.5 (#35634) [release/9.0] Update dependencies from dotnet/arcade --- NuGet.config | 10 ++++++++++ eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- .../post-build/common-variables.yml | 2 +- global.json | 8 ++++---- 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/NuGet.config b/NuGet.config index 02a4c598f66..7f77f8201a8 100644 --- a/NuGet.config +++ b/NuGet.config @@ -5,6 +5,11 @@ + + + + + @@ -21,6 +26,11 @@ + + + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4e5e3a95414..144debb622a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - bac7e1caea791275b7c3ccb4cb75fd6a04a26618 + 5da211e1c42254cb35e7ef3d5a8428fb24853169 - + https://github.com/dotnet/arcade - bac7e1caea791275b7c3ccb4cb75fd6a04a26618 + 5da211e1c42254cb35e7ef3d5a8428fb24853169 - + https://github.com/dotnet/arcade - bac7e1caea791275b7c3ccb4cb75fd6a04a26618 + 5da211e1c42254cb35e7ef3d5a8428fb24853169 diff --git a/eng/Versions.props b/eng/Versions.props index e749d3ea77c..a1e107c2afe 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.2 - 9.0.0-beta.25077.4 + 9.0.0-beta.25111.5 17.8.3 diff --git a/eng/common/templates-official/post-build/common-variables.yml b/eng/common/templates-official/post-build/common-variables.yml index fbeca86bd4c..c32fc49233f 100644 --- a/eng/common/templates-official/post-build/common-variables.yml +++ b/eng/common/templates-official/post-build/common-variables.yml @@ -5,4 +5,4 @@ variables: is1ESPipeline: true ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/global.json b/global.json index cc2268259a4..cef1e89094a 100644 --- a/global.json +++ b/global.json @@ -1,11 +1,11 @@ { "sdk": { - "version": "9.0.102", + "version": "9.0.103", "allowPrerelease": true, "rollForward": "latestMajor" }, "tools": { - "dotnet": "9.0.102", + "dotnet": "9.0.103", "runtimes": { "dotnet": [ "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)" @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25077.4", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25077.4" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25111.5", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25111.5" } } From 73ed7712a16d03ec22b0a39a0d5b0525a63d67ce Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 12 Feb 2025 22:35:39 +0000 Subject: [PATCH 24/79] Update dependencies from https://github.com/dotnet/arcade build 20250211.4 (#35633) [release/8.0] Update dependencies from dotnet/arcade --- NuGet.config | 2 ++ eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- eng/common/sdk-task.ps1 | 2 +- eng/common/tools.ps1 | 4 ++-- global.json | 8 ++++---- 6 files changed, 16 insertions(+), 14 deletions(-) diff --git a/NuGet.config b/NuGet.config index c09d1c39939..233209a8652 100644 --- a/NuGet.config +++ b/NuGet.config @@ -5,6 +5,7 @@ + @@ -19,6 +20,7 @@ + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 6d65ae715d1..45a9a9216dc 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -60,17 +60,17 @@ - + https://github.com/dotnet/arcade - c255aae7f2b128fa20a4441f0e192c3c53561621 + a319ada170a54ee87c7a81e3309948e3d3ea7aca - + https://github.com/dotnet/arcade - c255aae7f2b128fa20a4441f0e192c3c53561621 + a319ada170a54ee87c7a81e3309948e3d3ea7aca - + https://github.com/dotnet/arcade - c255aae7f2b128fa20a4441f0e192c3c53561621 + a319ada170a54ee87c7a81e3309948e3d3ea7aca diff --git a/eng/Versions.props b/eng/Versions.props index 6a7f22ef7fb..1fe021db457 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -33,7 +33,7 @@ 8.0.13-servicing.25066.9 - 8.0.0-beta.25060.1 + 8.0.0-beta.25111.4 diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1 index 73828dd30d3..4f0546dce12 100644 --- a/eng/common/sdk-task.ps1 +++ b/eng/common/sdk-task.ps1 @@ -64,7 +64,7 @@ try { $GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty } if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) { - $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.8.1-2" -MemberType NoteProperty + $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.12.0" -MemberType NoteProperty } if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") { $xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index 60352ede194..a00577ed17a 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -384,8 +384,8 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = # If the version of msbuild is going to be xcopied, # use this version. Version matches a package here: - # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/RoslynTools.MSBuild/versions/17.8.1-2 - $defaultXCopyMSBuildVersion = '17.8.1-2' + # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/RoslynTools.MSBuild/versions/17.12.0 + $defaultXCopyMSBuildVersion = '17.12.0' if (!$vsRequirements) { if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') { diff --git a/global.json b/global.json index 6e3126a5a71..92bd36971ec 100644 --- a/global.json +++ b/global.json @@ -1,11 +1,11 @@ { "sdk": { - "version": "8.0.110", + "version": "8.0.113", "allowPrerelease": true, "rollForward": "latestMajor" }, "tools": { - "dotnet": "8.0.110", + "dotnet": "8.0.113", "runtimes": { "dotnet": [ "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)" @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25060.1", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.25060.1" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25111.4", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.25111.4" } } From 277f96e4403beffb150bf05af57e047080c8134a Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 12 Feb 2025 23:22:18 +0000 Subject: [PATCH 25/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250211.18 Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 From Version 8.0.14-servicing.25111.10 -> To Version 8.0.14-servicing.25111.18 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 14 +++++++------- eng/Versions.props | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/NuGet.config b/NuGet.config index 61a48bf9071..b77ed0836f2 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -19,7 +19,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 55f8c0030de..3629afe553a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -29,9 +29,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d8ee7c837b53a52795d374c694ff2c72b62bcef0 + 1584e493603cfc4e9b36b77d6d4afe97de6363f9 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -39,7 +39,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d8ee7c837b53a52795d374c694ff2c72b62bcef0 + 1584e493603cfc4e9b36b77d6d4afe97de6363f9 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -47,16 +47,16 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d8ee7c837b53a52795d374c694ff2c72b62bcef0 + 1584e493603cfc4e9b36b77d6d4afe97de6363f9 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d8ee7c837b53a52795d374c694ff2c72b62bcef0 + 1584e493603cfc4e9b36b77d6d4afe97de6363f9 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d8ee7c837b53a52795d374c694ff2c72b62bcef0 + 1584e493603cfc4e9b36b77d6d4afe97de6363f9 diff --git a/eng/Versions.props b/eng/Versions.props index 1219d47078d..705b6ae95bd 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,13 +24,13 @@ 8.0.1 8.0.1 8.0.2 - 8.0.14-servicing.25111.10 + 8.0.14-servicing.25111.18 8.0.1 8.0.5 8.0.2 8.0.14 8.0.14 - 8.0.14-servicing.25111.10 + 8.0.14-servicing.25111.18 8.0.0-beta.25060.1 From fb2f189cb3a70be8c5a1bbdacca0ad4ca5ea030d Mon Sep 17 00:00:00 2001 From: Andriy Svyryd Date: Thu, 27 Feb 2025 08:26:04 -0800 Subject: [PATCH 26/79] Set the environment when executing Scaffold-DBContext (#35693) Fixes #35641 --- .../Internal/AppServiceProviderFactory.cs | 26 +++++++ .../Design/Internal/DatabaseOperations.cs | 3 + .../Design/Internal/DbContextOperations.cs | 17 +---- .../Design/Internal/DatabaseOperationsTest.cs | 70 ++++++++++++++++++- .../CSharpMigrationOperationGeneratorTest.cs | 4 +- .../ReverseEngineeringConfigurationTests.cs | 38 ---------- .../TestUtilities/TestDatabaseOperations.cs | 16 ----- .../Internal/EntityTypeTest.BaseType.cs | 2 +- .../BytesToStringConverterTest.cs | 2 +- .../StringToBytesConverterTest.cs | 2 +- 10 files changed, 103 insertions(+), 77 deletions(-) delete mode 100644 test/EFCore.Design.Tests/Scaffolding/Internal/ReverseEngineeringConfigurationTests.cs delete mode 100644 test/EFCore.Design.Tests/TestUtilities/TestDatabaseOperations.cs diff --git a/src/EFCore.Design/Design/Internal/AppServiceProviderFactory.cs b/src/EFCore.Design/Design/Internal/AppServiceProviderFactory.cs index b797f8a4add..456184ec46a 100644 --- a/src/EFCore.Design/Design/Internal/AppServiceProviderFactory.cs +++ b/src/EFCore.Design/Design/Internal/AppServiceProviderFactory.cs @@ -89,4 +89,30 @@ private IServiceProvider CreateEmptyServiceProvider() return new ServiceCollection().BuildServiceProvider(); } + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public static void SetEnvironment(IOperationReporter reporter) + { + var aspnetCoreEnvironment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); + var dotnetEnvironment = Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT"); + var environment = aspnetCoreEnvironment + ?? dotnetEnvironment + ?? "Development"; + if (aspnetCoreEnvironment == null) + { + Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", environment); + } + + if (dotnetEnvironment == null) + { + Environment.SetEnvironmentVariable("DOTNET_ENVIRONMENT", environment); + } + + reporter.WriteVerbose(DesignStrings.UsingEnvironment(environment)); + } } diff --git a/src/EFCore.Design/Design/Internal/DatabaseOperations.cs b/src/EFCore.Design/Design/Internal/DatabaseOperations.cs index d27a2532b3c..f02f26bf4ed 100644 --- a/src/EFCore.Design/Design/Internal/DatabaseOperations.cs +++ b/src/EFCore.Design/Design/Internal/DatabaseOperations.cs @@ -11,6 +11,7 @@ namespace Microsoft.EntityFrameworkCore.Design.Internal; /// public class DatabaseOperations { + private readonly IOperationReporter _reporter; private readonly string _projectDir; private readonly string? _rootNamespace; private readonly string? _language; @@ -34,6 +35,7 @@ public DatabaseOperations( bool nullable, string[]? args) { + _reporter = reporter; _projectDir = projectDir; _rootNamespace = rootNamespace; _language = language; @@ -73,6 +75,7 @@ public virtual SavedModelFiles ScaffoldContext( ? Path.GetFullPath(Path.Combine(_projectDir, outputContextDir)) : outputDir; + AppServiceProviderFactory.SetEnvironment(_reporter); var services = _servicesBuilder.Build(provider); using var scope = services.CreateScope(); diff --git a/src/EFCore.Design/Design/Internal/DbContextOperations.cs b/src/EFCore.Design/Design/Internal/DbContextOperations.cs index 761579c8bdb..f430f9892b0 100644 --- a/src/EFCore.Design/Design/Internal/DbContextOperations.cs +++ b/src/EFCore.Design/Design/Internal/DbContextOperations.cs @@ -503,22 +503,7 @@ private IDictionary> FindContextTypes(string? name = null, { _reporter.WriteVerbose(DesignStrings.FindingContexts); - var aspnetCoreEnvironment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); - var dotnetEnvironment = Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT"); - var environment = aspnetCoreEnvironment - ?? dotnetEnvironment - ?? "Development"; - if (aspnetCoreEnvironment == null) - { - Environment.SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", environment); - } - - if (dotnetEnvironment == null) - { - Environment.SetEnvironmentVariable("DOTNET_ENVIRONMENT", environment); - } - - _reporter.WriteVerbose(DesignStrings.UsingEnvironment(environment)); + AppServiceProviderFactory.SetEnvironment(_reporter); var contexts = new Dictionary?>(); diff --git a/test/EFCore.Design.Tests/Design/Internal/DatabaseOperationsTest.cs b/test/EFCore.Design.Tests/Design/Internal/DatabaseOperationsTest.cs index d5c7a100554..d49bac41616 100644 --- a/test/EFCore.Design.Tests/Design/Internal/DatabaseOperationsTest.cs +++ b/test/EFCore.Design.Tests/Design/Internal/DatabaseOperationsTest.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using Microsoft.EntityFrameworkCore.Internal; + namespace Microsoft.EntityFrameworkCore.Design.Internal; public class DatabaseOperationsTest @@ -10,8 +12,71 @@ public void Can_pass_null_args() { // Even though newer versions of the tools will pass an empty array // older versions of the tools can pass null args. + CreateOperations(null); + } + + [ConditionalFact] + public void ScaffoldContext_throws_exceptions_for_invalid_context_name() + { + ValidateContextNameInReverseEngineerGenerator("Invalid!CSharp*Class&Name"); + ValidateContextNameInReverseEngineerGenerator("1CSharpClassNameCannotStartWithNumber"); + ValidateContextNameInReverseEngineerGenerator("volatile"); + } + + private void ValidateContextNameInReverseEngineerGenerator(string contextName) + { + var operations = CreateOperations([]); + + Assert.Equal( + DesignStrings.ContextClassNotValidCSharpIdentifier(contextName), + Assert.Throws( + () => operations.ScaffoldContext( + "Microsoft.EntityFrameworkCore.SqlServer", + "connectionstring", + "", + "", + dbContextClassName: contextName, + null, + null, + "FakeNamespace", + contextNamespace: null, + useDataAnnotations: false, + overwriteFiles: true, + useDatabaseNames: false, + suppressOnConfiguring: true, + noPluralize: false)) + .Message); + } + + [ConditionalFact] + [SqlServerConfiguredCondition] + public void ScaffoldContext_sets_environment() + { + var operations = CreateOperations([]); + operations.ScaffoldContext( + "Microsoft.EntityFrameworkCore.SqlServer", + TestEnvironment.DefaultConnection, + "", + "", + dbContextClassName: nameof(TestContext), + schemas: ["Empty"], + null, + null, + contextNamespace: null, + useDataAnnotations: false, + overwriteFiles: true, + useDatabaseNames: false, + suppressOnConfiguring: true, + noPluralize: false); + + Assert.Equal("Development", Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")); + Assert.Equal("Development", Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT")); + } + + private static DatabaseOperations CreateOperations(string[] args) + { var assembly = MockAssembly.Create(typeof(TestContext)); - _ = new TestDatabaseOperations( + var operations = new DatabaseOperations( new TestOperationReporter(), assembly, assembly, @@ -19,7 +84,8 @@ public void Can_pass_null_args() "RootNamespace", "C#", nullable: false, - args: null); + args: args); + return operations; } public class TestContext : DbContext; diff --git a/test/EFCore.Design.Tests/Migrations/Design/CSharpMigrationOperationGeneratorTest.cs b/test/EFCore.Design.Tests/Migrations/Design/CSharpMigrationOperationGeneratorTest.cs index ba445da389c..15f7e341fcf 100644 --- a/test/EFCore.Design.Tests/Migrations/Design/CSharpMigrationOperationGeneratorTest.cs +++ b/test/EFCore.Design.Tests/Migrations/Design/CSharpMigrationOperationGeneratorTest.cs @@ -2453,7 +2453,7 @@ public void InsertDataOperation_required_empty_array() Assert.Single(o.Columns); Assert.Equal(1, o.Values.GetLength(0)); Assert.Equal(1, o.Values.GetLength(1)); - Assert.Equal([], (string[])o.Values[0, 0]); + Assert.Equal(new string[0], (string[])o.Values[0, 0]); }); [ConditionalFact] @@ -2478,7 +2478,7 @@ public void InsertDataOperation_required_empty_array_composite() Assert.Equal(1, o.Values.GetLength(0)); Assert.Equal(3, o.Values.GetLength(1)); Assert.Null(o.Values[0, 1]); - Assert.Equal([], (string[])o.Values[0, 2]); + Assert.Equal(new string[0], (string[])o.Values[0, 2]); }); [ConditionalFact] diff --git a/test/EFCore.Design.Tests/Scaffolding/Internal/ReverseEngineeringConfigurationTests.cs b/test/EFCore.Design.Tests/Scaffolding/Internal/ReverseEngineeringConfigurationTests.cs deleted file mode 100644 index e73a91f883a..00000000000 --- a/test/EFCore.Design.Tests/Scaffolding/Internal/ReverseEngineeringConfigurationTests.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.EntityFrameworkCore.Design.Internal; -using Microsoft.EntityFrameworkCore.Internal; - -namespace Microsoft.EntityFrameworkCore.Scaffolding.Internal; - -public class ReverseEngineeringConfigurationTests -{ - [ConditionalFact] - public void Throws_exceptions_for_invalid_context_name() - { - ValidateContextNameInReverseEngineerGenerator("Invalid!CSharp*Class&Name"); - ValidateContextNameInReverseEngineerGenerator("1CSharpClassNameCannotStartWithNumber"); - ValidateContextNameInReverseEngineerGenerator("volatile"); - } - - private void ValidateContextNameInReverseEngineerGenerator(string contextName) - { - var assembly = typeof(ReverseEngineeringConfigurationTests).Assembly; - var reverseEngineer = new DesignTimeServicesBuilder(assembly, assembly, new TestOperationReporter(), []) - .Build("Microsoft.EntityFrameworkCore.SqlServer") - .CreateScope() - .ServiceProvider - .GetRequiredService(); - - Assert.Equal( - DesignStrings.ContextClassNotValidCSharpIdentifier(contextName), - Assert.Throws( - () => reverseEngineer.ScaffoldModel( - "connectionstring", - new DatabaseModelFactoryOptions(), - new ModelReverseEngineerOptions(), - new ModelCodeGenerationOptions { ModelNamespace = "FakeNamespace", ContextName = contextName })) - .Message); - } -} diff --git a/test/EFCore.Design.Tests/TestUtilities/TestDatabaseOperations.cs b/test/EFCore.Design.Tests/TestUtilities/TestDatabaseOperations.cs deleted file mode 100644 index adf200ef857..00000000000 --- a/test/EFCore.Design.Tests/TestUtilities/TestDatabaseOperations.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Microsoft.EntityFrameworkCore.Design.Internal; - -namespace Microsoft.EntityFrameworkCore.TestUtilities; - -public class TestDatabaseOperations( - IOperationReporter reporter, - Assembly assembly, - Assembly startupAssembly, - string projectDir, - string rootNamespace, - string language, - bool nullable, - string[] args) : DatabaseOperations(reporter, assembly, startupAssembly, projectDir, rootNamespace, language, nullable, args); diff --git a/test/EFCore.Tests/Metadata/Internal/EntityTypeTest.BaseType.cs b/test/EFCore.Tests/Metadata/Internal/EntityTypeTest.BaseType.cs index 75dd606cd19..b118885ba85 100644 --- a/test/EFCore.Tests/Metadata/Internal/EntityTypeTest.BaseType.cs +++ b/test/EFCore.Tests/Metadata/Internal/EntityTypeTest.BaseType.cs @@ -677,7 +677,7 @@ public void Navigations_on_base_type_should_be_inherited() var specialCustomerType = model.AddEntityType(typeof(SpecialCustomer)); Assert.Equal(new[] { "Orders" }, customerType.GetNavigations().Select(p => p.Name).ToArray()); - Assert.Equal([], specialCustomerType.GetNavigations().Select(p => p.Name).ToArray()); + Assert.Equal(new string[0], specialCustomerType.GetNavigations().Select(p => p.Name).ToArray()); specialCustomerType.BaseType = customerType; diff --git a/test/EFCore.Tests/Storage/ValueConversion/BytesToStringConverterTest.cs b/test/EFCore.Tests/Storage/ValueConversion/BytesToStringConverterTest.cs index a29063dc5ab..c1a2694ba2f 100644 --- a/test/EFCore.Tests/Storage/ValueConversion/BytesToStringConverterTest.cs +++ b/test/EFCore.Tests/Storage/ValueConversion/BytesToStringConverterTest.cs @@ -23,7 +23,7 @@ public void Can_convert_bytes_to_strings() var converter = _bytesToStringConverter.ConvertFromProviderExpression.Compile(); Assert.Equal(new byte[] { 83, 112, 196, 177, 110, 204, 136, 97, 108, 32, 84, 97, 112 }, converter("U3DEsW7MiGFsIFRhcA==")); - Assert.Equal([], converter("")); + Assert.Equal(new byte[0], converter("")); } [ConditionalFact] diff --git a/test/EFCore.Tests/Storage/ValueConversion/StringToBytesConverterTest.cs b/test/EFCore.Tests/Storage/ValueConversion/StringToBytesConverterTest.cs index f2aa07d914c..6842b227c4a 100644 --- a/test/EFCore.Tests/Storage/ValueConversion/StringToBytesConverterTest.cs +++ b/test/EFCore.Tests/Storage/ValueConversion/StringToBytesConverterTest.cs @@ -13,7 +13,7 @@ public void Can_convert_strings_to_UTF8() var converter = _stringToUtf8Converter.ConvertToProviderExpression.Compile(); Assert.Equal(new byte[] { 83, 112, 196, 177, 110, 204, 136, 97, 108, 32, 84, 97, 112 }, converter("Spın̈al Tap")); - Assert.Equal([], converter("")); + Assert.Equal(new byte[0], converter("")); } [ConditionalFact] From e52e0fb934c1cec902473c80fde63138df9aff42 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Tue, 4 Mar 2025 02:08:39 +0100 Subject: [PATCH 27/79] Improve LoadExtension to work correctly with dotnet run and lib* named libs (#35718) * Improve LoadExtension to work correctly with dotnet run and lib packages * Use [] instead of Array.Empty (cherry picked from commit b1d34dc9a22c239fac99e893fde36e74bc546c05) Co-authored-by: Krzysztof Wicher --- .github/workflows/TestCosmos.yaml | 2 +- .../SqliteConnection.cs | 82 ++++++++++++++++++- 2 files changed, 80 insertions(+), 4 deletions(-) diff --git a/.github/workflows/TestCosmos.yaml b/.github/workflows/TestCosmos.yaml index 52b8aeb3cbd..cb9d7103301 100644 --- a/.github/workflows/TestCosmos.yaml +++ b/.github/workflows/TestCosmos.yaml @@ -35,7 +35,7 @@ jobs: shell: cmd - name: Publish Test Results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: always() with: name: test-results diff --git a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs index 02e75c9aa25..0c2135a68f4 100644 --- a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs +++ b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs @@ -23,6 +23,9 @@ namespace Microsoft.Data.Sqlite /// Async Limitations public partial class SqliteConnection : DbConnection { + private static readonly bool UseOldBehavior35715 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35715", out var enabled35715) && enabled35715; + internal const string MainDatabaseName = "main"; private const int SQLITE_WIN32_DATA_DIRECTORY_TYPE = 1; @@ -48,6 +51,8 @@ public partial class SqliteConnection : DbConnection private static readonly StateChangeEventArgs _fromClosedToOpenEventArgs = new StateChangeEventArgs(ConnectionState.Closed, ConnectionState.Open); private static readonly StateChangeEventArgs _fromOpenToClosedEventArgs = new StateChangeEventArgs(ConnectionState.Open, ConnectionState.Closed); + private static string[]? NativeDllSearchDirectories; + static SqliteConnection() { Type.GetType("SQLitePCL.Batteries_V2, SQLitePCLRaw.batteries_v2") @@ -626,11 +631,82 @@ public virtual void LoadExtension(string file, string? proc = null) private void LoadExtensionCore(string file, string? proc) { - var rc = sqlite3_load_extension(Handle, utf8z.FromString(file), utf8z.FromString(proc), out var errmsg); - if (rc != SQLITE_OK) + if (UseOldBehavior35715) + { + var rc = sqlite3_load_extension(Handle, utf8z.FromString(file), utf8z.FromString(proc), out var errmsg); + if (rc != SQLITE_OK) + { + throw new SqliteException(Resources.SqliteNativeError(rc, errmsg.utf8_to_string()), rc, rc); + } + } + else + { + SqliteException? firstException = null; + foreach (var path in GetLoadExtensionPaths(file)) + { + var rc = sqlite3_load_extension(Handle, utf8z.FromString(path), utf8z.FromString(proc), out var errmsg); + if (rc == SQLITE_OK) + { + return; + } + + if (firstException == null) + { + // We store the first exception so that error message looks more obvious if file appears in there + firstException = new SqliteException(Resources.SqliteNativeError(rc, errmsg.utf8_to_string()), rc, rc); + } + } + + if (firstException != null) + { + throw firstException; + } + } + } + + private static IEnumerable GetLoadExtensionPaths(string file) + { + // we always try original input first + yield return file; + + string? dirName = Path.GetDirectoryName(file); + + // we don't try to guess directories for user, if they pass a path either absolute or relative - they're on their own + if (!string.IsNullOrEmpty(dirName)) { - throw new SqliteException(Resources.SqliteNativeError(rc, errmsg.utf8_to_string()), rc, rc); + yield break; } + + bool shouldTryAddingLibPrefix = !file.StartsWith("lib", StringComparison.Ordinal) && !RuntimeInformation.IsOSPlatform(OSPlatform.Windows); + + if (shouldTryAddingLibPrefix) + { + yield return $"lib{file}"; + } + + NativeDllSearchDirectories ??= GetNativeDllSearchDirectories(); + + foreach (string dir in NativeDllSearchDirectories) + { + yield return Path.Combine(dir, file); + + if (shouldTryAddingLibPrefix) + { + yield return Path.Combine(dir, $"lib{file}"); + } + } + } + + private static string[] GetNativeDllSearchDirectories() + { + string? searchDirs = AppContext.GetData("NATIVE_DLL_SEARCH_DIRECTORIES") as string; + + if (string.IsNullOrEmpty(searchDirs)) + { + return Array.Empty(); + } + + return searchDirs!.Split(new[] { Path.PathSeparator }, StringSplitOptions.RemoveEmptyEntries); } /// From eeab91811da4b84107cb69bc04ba02ebb8f42c7d Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Tue, 4 Mar 2025 09:34:12 +0100 Subject: [PATCH 28/79] Transform Span-based overloads to Enumerable in funcletizer (#35720) Fixes #35100 (cherry picked from commit 6c0106b2693c3d3d87c26d8d63d97ad2236c3f4f) --- .../ParameterExtractingExpressionVisitor.cs | 55 ++++++++++++++++++- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/src/EFCore/Query/Internal/ParameterExtractingExpressionVisitor.cs b/src/EFCore/Query/Internal/ParameterExtractingExpressionVisitor.cs index 558104b7d40..410f2dd2839 100644 --- a/src/EFCore/Query/Internal/ParameterExtractingExpressionVisitor.cs +++ b/src/EFCore/Query/Internal/ParameterExtractingExpressionVisitor.cs @@ -31,6 +31,9 @@ public class ParameterExtractingExpressionVisitor : ExpressionVisitor private static readonly bool UseOldBehavior31552 = AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue31552", out var enabled31552) && enabled31552; + private static readonly bool UseOldBehavior35100 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35100", out var enabled35100) && enabled35100; + /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in @@ -181,9 +184,11 @@ protected override Expression VisitConditional(ConditionalExpression conditional /// protected override Expression VisitMethodCall(MethodCallExpression methodCallExpression) { + var method = methodCallExpression.Method; + if (!UseOldBehavior31552 - && methodCallExpression.Method.DeclaringType == typeof(EF) - && methodCallExpression.Method.Name == nameof(EF.Constant)) + && method.DeclaringType == typeof(EF) + && method.Name == nameof(EF.Constant)) { // If this is a call to EF.Constant(), then examine its operand. If the operand isn't evaluatable (i.e. contains a reference // to a database table), throw immediately. @@ -197,6 +202,52 @@ protected override Expression VisitMethodCall(MethodCallExpression methodCallExp return Evaluate(operand, generateParameter: false); } + // .NET 10 made changes to overload resolution to prefer Span-based overloads when those exist ("first-class spans"). + // Unfortunately, the LINQ interpreter does not support ref structs, so we rewrite e.g. MemoryExtensions.Contains to + // Enumerable.Contains here. See https://github.com/dotnet/runtime/issues/109757. + if (method.DeclaringType == typeof(MemoryExtensions) && !UseOldBehavior35100) + { + switch (method.Name) + { + case nameof(MemoryExtensions.Contains) + when methodCallExpression.Arguments is [var arg0, var arg1] && + TryUnwrapSpanImplicitCast(arg0, out var unwrappedArg0): + { + return Visit( + Expression.Call( + EnumerableMethods.Contains.MakeGenericMethod(method.GetGenericArguments()[0]), + unwrappedArg0, arg1)); + } + + case nameof(MemoryExtensions.SequenceEqual) + when methodCallExpression.Arguments is [var arg0, var arg1] + && TryUnwrapSpanImplicitCast(arg0, out var unwrappedArg0) + && TryUnwrapSpanImplicitCast(arg1, out var unwrappedArg1): + return Visit( + Expression.Call( + EnumerableMethods.SequenceEqual.MakeGenericMethod(method.GetGenericArguments()[0]), + unwrappedArg0, unwrappedArg1)); + } + + static bool TryUnwrapSpanImplicitCast(Expression expression, [NotNullWhen(true)] out Expression? result) + { + if (expression is MethodCallExpression + { + Method: { Name: "op_Implicit", DeclaringType: { IsGenericType: true } implicitCastDeclaringType }, + Arguments: [var unwrapped] + } + && implicitCastDeclaringType.GetGenericTypeDefinition() is var genericTypeDefinition + && (genericTypeDefinition == typeof(Span<>) || genericTypeDefinition == typeof(ReadOnlySpan<>))) + { + result = unwrapped; + return true; + } + + result = null; + return false; + } + } + return base.VisitMethodCall(methodCallExpression); } From 7cbf9cef82a164237c126512d417ba7b897243d5 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Tue, 4 Mar 2025 13:43:23 +0100 Subject: [PATCH 29/79] Process Coalesce-simplified Convert node properly in funcletizer (#35721) Fixes #35656 (cherry picked from commit c54f51d61b9ed1eca91fcc061edcf1a5f606a753) --- .../Internal/ExpressionTreeFuncletizer.cs | 11 ++++++++-- .../Query/GearsOfWarQueryTestBase.cs | 17 ++++++++++++++++ .../Query/GearsOfWarQuerySqlServerTest.cs | 14 +++++++++++++ .../Query/TPCGearsOfWarQuerySqlServerTest.cs | 20 +++++++++++++++++++ .../Query/TPTGearsOfWarQuerySqlServerTest.cs | 17 ++++++++++++++++ .../TemporalGearsOfWarQuerySqlServerTest.cs | 14 +++++++++++++ .../Query/GearsOfWarQuerySqliteTest.cs | 14 +++++++++++++ 7 files changed, 105 insertions(+), 2 deletions(-) diff --git a/src/EFCore/Query/Internal/ExpressionTreeFuncletizer.cs b/src/EFCore/Query/Internal/ExpressionTreeFuncletizer.cs index 3d70a71491f..d39cfdbd962 100644 --- a/src/EFCore/Query/Internal/ExpressionTreeFuncletizer.cs +++ b/src/EFCore/Query/Internal/ExpressionTreeFuncletizer.cs @@ -109,6 +109,9 @@ public class ExpressionTreeFuncletizer : ExpressionVisitor private static readonly bool UseOldBehavior35111 = AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35111", out var enabled35111) && enabled35111; + private static readonly bool UseOldBehavior35656 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35656", out var enabled35656) && enabled35656; + private static readonly MethodInfo ReadOnlyCollectionIndexerGetter = typeof(ReadOnlyCollection).GetProperties() .Single(p => p.GetIndexParameters() is { Length: 1 } indexParameters && indexParameters[0].ParameterType == typeof(int)).GetMethod!; @@ -2132,8 +2135,12 @@ static Expression RemoveConvert(Expression expression) } } - private static Expression ConvertIfNeeded(Expression expression, Type type) - => expression.Type == type ? expression : Convert(expression, type); + private Expression ConvertIfNeeded(Expression expression, Type type) + => expression.Type == type + ? expression + : UseOldBehavior35656 + ? Convert(expression, type) + : Visit(Convert(expression, type)); private bool IsGenerallyEvaluatable(Expression expression) => _evaluatableExpressionFilter.IsEvaluatableExpression(expression, _model) diff --git a/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs b/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs index 93ffe9f0cfb..b65b15d2d0c 100644 --- a/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs +++ b/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs @@ -6603,6 +6603,23 @@ public virtual Task Enum_array_contains(bool async) .Where(w => w.SynergyWith != null && types.Contains(w.SynergyWith.AmmunitionType))); } + [ConditionalTheory] // #35656 + [MemberData(nameof(IsAsyncData))] + public virtual Task Coalesce_with_non_root_evaluatable_Convert(bool async) + { + MilitaryRank? rank = MilitaryRank.Private; + + // The coalesce is simplified away in the funcletizer (since rank is non-null), but a Convert node is added + // to convert from MilitaryRank? (the type of rank) to the type of the coalesce expression (non-nullable + // MilitaryRank). + // This resulting Convert node isn't evaluatable as root (enum convert), and so the NotEvaluatableAsRootHandler + // is invoked. + return AssertQuery( + async, + // ReSharper disable once ConstantNullCoalescingCondition + ss => ss.Set().Where(g => (rank ?? g.Rank) == g.Rank)); + } + [ConditionalTheory] [MemberData(nameof(IsAsyncData))] public virtual async Task Client_eval_followed_by_aggregate_operation(bool async) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs index cae4816b1ae..9429aab66b8 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs @@ -8162,6 +8162,20 @@ FROM OPENJSON(@__types_0_without_nulls) AS [t] """); } + public override async Task Coalesce_with_non_root_evaluatable_Convert(bool async) + { + await base.Coalesce_with_non_root_evaluatable_Convert(async); + + AssertSql( + """ +@__rank_0='1' (Nullable = true) + +SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank] +FROM [Gears] AS [g] +WHERE @__rank_0 = [g].[Rank] +"""); + } + [ConditionalTheory] [MemberData(nameof(IsAsyncData))] public async Task DataLength_function_for_string_parameter(bool async) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs index ee461d32d9c..c54d2675c03 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs @@ -10883,6 +10883,26 @@ FROM OPENJSON(@__types_0_without_nulls) AS [t] """); } + public override async Task Coalesce_with_non_root_evaluatable_Convert(bool async) + { + await base.Coalesce_with_non_root_evaluatable_Convert(async); + + AssertSql( + """ +@__rank_0='1' (Nullable = true) + +SELECT [u].[Nickname], [u].[SquadId], [u].[AssignedCityName], [u].[CityOfBirthName], [u].[FullName], [u].[HasSoulPatch], [u].[LeaderNickname], [u].[LeaderSquadId], [u].[Rank], [u].[Discriminator] +FROM ( + SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], N'Gear' AS [Discriminator] + FROM [Gears] AS [g] + UNION ALL + SELECT [o].[Nickname], [o].[SquadId], [o].[AssignedCityName], [o].[CityOfBirthName], [o].[FullName], [o].[HasSoulPatch], [o].[LeaderNickname], [o].[LeaderSquadId], [o].[Rank], N'Officer' AS [Discriminator] + FROM [Officers] AS [o] +) AS [u] +WHERE @__rank_0 = [u].[Rank] +"""); + } + [ConditionalTheory] [MemberData(nameof(IsAsyncData))] public async Task DataLength_function_for_string_parameter(bool async) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs index 076e6c19d97..d5fa8b8562d 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs @@ -9220,6 +9220,23 @@ FROM OPENJSON(@__types_0_without_nulls) AS [t] """); } + public override async Task Coalesce_with_non_root_evaluatable_Convert(bool async) + { + await base.Coalesce_with_non_root_evaluatable_Convert(async); + + AssertSql( + """ +@__rank_0='1' (Nullable = true) + +SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], CASE + WHEN [o].[Nickname] IS NOT NULL THEN N'Officer' +END AS [Discriminator] +FROM [Gears] AS [g] +LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] +WHERE @__rank_0 = [g].[Rank] +"""); + } + [ConditionalTheory] [MemberData(nameof(IsAsyncData))] public async Task DataLength_function_for_string_parameter(bool async) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs index ca649d80e12..5d82e72fff3 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs @@ -6987,6 +6987,20 @@ SELECT TOP(1) ~CAST(([g].[Rank] & 2) ^ 2 AS bit) AS [BitwiseTrue], ~CAST(([g].[R """); } + public override async Task Coalesce_with_non_root_evaluatable_Convert(bool async) + { + await base.Coalesce_with_non_root_evaluatable_Convert(async); + + AssertSql( + """ +@__rank_0='1' (Nullable = true) + +SELECT [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank] +FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] +WHERE @__rank_0 = [g].[Rank] +"""); + } + public override async Task Comparison_with_value_converted_subclass(bool async) { await base.Comparison_with_value_converted_subclass(async); diff --git a/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs index 6e69f0b1ce3..77293ffbe86 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs @@ -6383,6 +6383,20 @@ LIMIT @__p_0 """); } + public override async Task Coalesce_with_non_root_evaluatable_Convert(bool async) + { + await base.Coalesce_with_non_root_evaluatable_Convert(async); + + AssertSql( + """ +@__rank_0='1' (Nullable = true) + +SELECT "g"."Nickname", "g"."SquadId", "g"."AssignedCityName", "g"."CityOfBirthName", "g"."Discriminator", "g"."FullName", "g"."HasSoulPatch", "g"."LeaderNickname", "g"."LeaderSquadId", "g"."Rank" +FROM "Gears" AS "g" +WHERE @__rank_0 = "g"."Rank" +"""); + } + public override async Task Correlated_collections_with_Take(bool async) { await base.Correlated_collections_with_Take(async); From 6e2f99c319fd01155d5daf5d84c658681fee0266 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Tue, 4 Mar 2025 19:34:27 +0100 Subject: [PATCH 30/79] Improve LoadExtension to work correctly with dotnet run and lib* named libs (#35717) * Improve LoadExtension to work correctly with dotnet run and lib packages * Use [] instead of Array.Empty Co-authored-by: Krzysztof Wicher --- .../SqliteConnection.cs | 82 ++++++++++++++++++- 1 file changed, 79 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs index 427e8c56e94..5d315daa6eb 100644 --- a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs +++ b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs @@ -23,6 +23,9 @@ namespace Microsoft.Data.Sqlite /// Async Limitations public partial class SqliteConnection : DbConnection { + private static readonly bool UseOldBehavior35715 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35715", out var enabled35715) && enabled35715; + internal const string MainDatabaseName = "main"; private const int SQLITE_WIN32_DATA_DIRECTORY_TYPE = 1; @@ -48,6 +51,8 @@ public partial class SqliteConnection : DbConnection private static readonly StateChangeEventArgs _fromClosedToOpenEventArgs = new StateChangeEventArgs(ConnectionState.Closed, ConnectionState.Open); private static readonly StateChangeEventArgs _fromOpenToClosedEventArgs = new StateChangeEventArgs(ConnectionState.Open, ConnectionState.Closed); + private static string[]? NativeDllSearchDirectories; + static SqliteConnection() { Type.GetType("SQLitePCL.Batteries_V2, SQLitePCLRaw.batteries_v2") @@ -624,11 +629,82 @@ public virtual void LoadExtension(string file, string? proc = null) private void LoadExtensionCore(string file, string? proc) { - var rc = sqlite3_load_extension(Handle, utf8z.FromString(file), utf8z.FromString(proc), out var errmsg); - if (rc != SQLITE_OK) + if (UseOldBehavior35715) + { + var rc = sqlite3_load_extension(Handle, utf8z.FromString(file), utf8z.FromString(proc), out var errmsg); + if (rc != SQLITE_OK) + { + throw new SqliteException(Resources.SqliteNativeError(rc, errmsg.utf8_to_string()), rc, rc); + } + } + else + { + SqliteException? firstException = null; + foreach (var path in GetLoadExtensionPaths(file)) + { + var rc = sqlite3_load_extension(Handle, utf8z.FromString(path), utf8z.FromString(proc), out var errmsg); + if (rc == SQLITE_OK) + { + return; + } + + if (firstException == null) + { + // We store the first exception so that error message looks more obvious if file appears in there + firstException = new SqliteException(Resources.SqliteNativeError(rc, errmsg.utf8_to_string()), rc, rc); + } + } + + if (firstException != null) + { + throw firstException; + } + } + } + + private static IEnumerable GetLoadExtensionPaths(string file) + { + // we always try original input first + yield return file; + + string? dirName = Path.GetDirectoryName(file); + + // we don't try to guess directories for user, if they pass a path either absolute or relative - they're on their own + if (!string.IsNullOrEmpty(dirName)) { - throw new SqliteException(Resources.SqliteNativeError(rc, errmsg.utf8_to_string()), rc, rc); + yield break; } + + bool shouldTryAddingLibPrefix = !file.StartsWith("lib", StringComparison.Ordinal) && !RuntimeInformation.IsOSPlatform(OSPlatform.Windows); + + if (shouldTryAddingLibPrefix) + { + yield return $"lib{file}"; + } + + NativeDllSearchDirectories ??= GetNativeDllSearchDirectories(); + + foreach (string dir in NativeDllSearchDirectories) + { + yield return Path.Combine(dir, file); + + if (shouldTryAddingLibPrefix) + { + yield return Path.Combine(dir, $"lib{file}"); + } + } + } + + private static string[] GetNativeDllSearchDirectories() + { + string? searchDirs = AppContext.GetData("NATIVE_DLL_SEARCH_DIRECTORIES") as string; + + if (string.IsNullOrEmpty(searchDirs)) + { + return []; + } + + return searchDirs!.Split([ Path.PathSeparator ], StringSplitOptions.RemoveEmptyEntries); } /// From 67f52d8b07f8627bf2dc94a907cc568422982169 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Wed, 5 Mar 2025 08:22:12 +0100 Subject: [PATCH 31/79] Transform Span-based overloads to Enumerable in funcletizer (#35719) Fixes #35100 (cherry picked from commit 6c0106b2693c3d3d87c26d8d63d97ad2236c3f4f) --- .../Internal/ExpressionTreeFuncletizer.cs | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/EFCore/Query/Internal/ExpressionTreeFuncletizer.cs b/src/EFCore/Query/Internal/ExpressionTreeFuncletizer.cs index d39cfdbd962..eb02e70da83 100644 --- a/src/EFCore/Query/Internal/ExpressionTreeFuncletizer.cs +++ b/src/EFCore/Query/Internal/ExpressionTreeFuncletizer.cs @@ -112,6 +112,9 @@ public class ExpressionTreeFuncletizer : ExpressionVisitor private static readonly bool UseOldBehavior35656 = AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35656", out var enabled35656) && enabled35656; + private static readonly bool UseOldBehavior35100 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35100", out var enabled35100) && enabled35100; + private static readonly MethodInfo ReadOnlyCollectionIndexerGetter = typeof(ReadOnlyCollection).GetProperties() .Single(p => p.GetIndexParameters() is { Length: 1 } indexParameters && indexParameters[0].ParameterType == typeof(int)).GetMethod!; @@ -974,6 +977,51 @@ protected override Expression VisitMethodCall(MethodCallExpression methodCall) } } + // .NET 10 made changes to overload resolution to prefer Span-based overloads when those exist ("first-class spans"). + // Unfortunately, the LINQ interpreter does not support ref structs, so we rewrite e.g. MemoryExtensions.Contains to + // Enumerable.Contains here. See https://github.com/dotnet/runtime/issues/109757. + if (method.DeclaringType == typeof(MemoryExtensions) && !UseOldBehavior35100) + { + switch (method.Name) + { + case nameof(MemoryExtensions.Contains) + when methodCall.Arguments is [var arg0, var arg1] && TryUnwrapSpanImplicitCast(arg0, out var unwrappedArg0): + { + return Visit( + Call( + EnumerableMethods.Contains.MakeGenericMethod(methodCall.Method.GetGenericArguments()[0]), + unwrappedArg0, arg1)); + } + + case nameof(MemoryExtensions.SequenceEqual) + when methodCall.Arguments is [var arg0, var arg1] + && TryUnwrapSpanImplicitCast(arg0, out var unwrappedArg0) + && TryUnwrapSpanImplicitCast(arg1, out var unwrappedArg1): + return Visit( + Call( + EnumerableMethods.SequenceEqual.MakeGenericMethod(methodCall.Method.GetGenericArguments()[0]), + unwrappedArg0, unwrappedArg1)); + } + + static bool TryUnwrapSpanImplicitCast(Expression expression, [NotNullWhen(true)] out Expression? result) + { + if (expression is MethodCallExpression + { + Method: { Name: "op_Implicit", DeclaringType: { IsGenericType: true } implicitCastDeclaringType }, + Arguments: [var unwrapped] + } + && implicitCastDeclaringType.GetGenericTypeDefinition() is var genericTypeDefinition + && (genericTypeDefinition == typeof(Span<>) || genericTypeDefinition == typeof(ReadOnlySpan<>))) + { + result = unwrapped; + return true; + } + + result = null; + return false; + } + } + // Regular/arbitrary method handling from here on // First, visit the object and all arguments, saving states as well From 51e50e920032c0edbde289bd1ec684b86cde5dbb Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Thu, 6 Mar 2025 12:37:23 -0800 Subject: [PATCH 32/79] Update branding to 8.0.15 (#35738) --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 1fe021db457..b526a26ee5f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 8.0.14 + 8.0.15 servicing From a43de14451e3a3b38c253754a4fcaa2551f466fa Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Thu, 6 Mar 2025 13:11:20 -0800 Subject: [PATCH 33/79] Update branding to 9.0.4 (#35739) --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index a1e107c2afe..9b95a6640b4 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 9.0.3 + 9.0.4 rtm From 52c3481e52007d278ec714c3e3aa630b9e6dda9c Mon Sep 17 00:00:00 2001 From: ProductConstructionServiceProd Date: Wed, 12 Mar 2025 16:37:49 +0000 Subject: [PATCH 34/79] Merged PR 48209: [internal/release/9.0] Update dependencies from dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:9dd82232-9947-4c91-873c-a50d5007af96) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 9dd82232-9947-4c91-873c-a50d5007af96 - **Build**: [20250310.22](https://dev.azure.com/dnceng/internal/_build/results?buildId=2660109) - **Date Produced**: March 11, 2025 10:14:10 AM UTC - **Commit**: [99ba03659dbd004773e2e6aacb8d44eb227f85ed](https://dev.azure.com/dnceng/internal/_git/dotnet-runtime?_a=history&version=GC99ba03659dbd004773e2e6aacb8d44eb227f85ed) - **Branch**: refs/heads/internal/release/9.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.Caching.Memory**: [from 9.0.3 to 9.0.4][2] - **Microsoft.Extensions.Configuration**: [from 9.0.3 to 9.0.4][2] - **Microsoft.Extensions.Configuration.Abstractions**: [from 9.0.3 to 9.0.4][2] - **Microsoft.Extensions.Configuration.EnvironmentVariables**: [from 9.0.3 to 9.0.4][2] - **Microsoft.Extensions.Configuration.Json**: [from 9.0.3 to 9.0.4][2] - **Microsoft.Extensions.DependencyInjection**: [from 9.0.3 to 9.0.4][2] - **Microsoft.Extensions.DependencyModel**: [from 9.0.3 to 9.0.4][2] - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 9.0.3-servicing.25111.13 to 9.0.4-servicing.25160.22][2] - **Microsoft.Extensions.Logging**: [from 9.0.3 to 9.0.4][2] - **Microsoft.NETCore.App.Ref**: [from 9.0.3 to 9.0.4][2] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 9.0.3 to 9.0.4][2] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 9.0.3-servicing.25111.13 to 9.0.4-servicing.25160.22][2] - **System.Formats.Asn1**: [from 9.0.3 to 9.0.4][2] - **System.Text.Encodings.Web**: [from 9.0.3 to 9.0.4][2] - **System.Text.Json**: [from 9.0.3 to 9.0.4][2] [2]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GC831d23e56149cd59c40fc00c7feb7c5334bd19c4&targetVersion=GC99ba03659dbd004773e2e6aacb8d44eb227f85ed&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:9dd82232-9947-4c91-873c-a50d5007af96) --- NuGet.config | 16 ++--------- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 30 ++++++++++----------- 3 files changed, 47 insertions(+), 59 deletions(-) diff --git a/NuGet.config b/NuGet.config index f799bcce5e7..45881a04b44 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,13 +4,7 @@ - - - - - - - + @@ -27,13 +21,7 @@ - - - - - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 51d5d03cb75..112fd53c5b1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,69 +1,69 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 831d23e56149cd59c40fc00c7feb7c5334bd19c4 + 99ba03659dbd004773e2e6aacb8d44eb227f85ed diff --git a/eng/Versions.props b/eng/Versions.props index 6ccc098575e..3470b00116b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -17,21 +17,21 @@ False - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3-servicing.25111.13 - 9.0.3 - 9.0.3 - 9.0.3 - 9.0.3-servicing.25111.13 - 9.0.3 - 9.0.3 - 9.0.3 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4-servicing.25160.22 + 9.0.4 + 9.0.4 + 9.0.4 + 9.0.4-servicing.25160.22 + 9.0.4 + 9.0.4 + 9.0.4 9.0.0-beta.25111.5 From 468ead7a11def78fc5b892c3cb18899d4b93a44c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 13 Mar 2025 00:29:39 +0000 Subject: [PATCH 35/79] Update dependencies from https://github.com/dotnet/arcade build 20250220.1 (#35780) [release/8.0] Update dependencies from dotnet/arcade --- NuGet.config | 4 ++++ eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- eng/common/cross/toolchain.cmake | 4 ++++ .../templates-official/steps/send-to-helix.yml | 7 ++++--- eng/common/templates/steps/send-to-helix.yml | 7 ++++--- global.json | 4 ++-- 7 files changed, 25 insertions(+), 15 deletions(-) diff --git a/NuGet.config b/NuGet.config index b77ed0836f2..0f605e301d2 100644 --- a/NuGet.config +++ b/NuGet.config @@ -5,6 +5,8 @@ + + @@ -19,6 +21,8 @@ + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index bf7e11ea666..37f349daab1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -60,17 +60,17 @@ - + https://github.com/dotnet/arcade - a319ada170a54ee87c7a81e3309948e3d3ea7aca + 4ff4ce248e95ae74b0040de6a6c5939aa63120dc - + https://github.com/dotnet/arcade - a319ada170a54ee87c7a81e3309948e3d3ea7aca + 4ff4ce248e95ae74b0040de6a6c5939aa63120dc - + https://github.com/dotnet/arcade - a319ada170a54ee87c7a81e3309948e3d3ea7aca + 4ff4ce248e95ae74b0040de6a6c5939aa63120dc diff --git a/eng/Versions.props b/eng/Versions.props index f9b672927a6..b8e5ef5f151 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -33,7 +33,7 @@ 8.0.14-servicing.25111.18 - 8.0.0-beta.25111.4 + 8.0.0-beta.25120.1 diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake index dafabdcaef0..f93dc440df0 100644 --- a/eng/common/cross/toolchain.cmake +++ b/eng/common/cross/toolchain.cmake @@ -280,6 +280,8 @@ elseif(TARGET_ARCH_NAME MATCHES "^(arm64|x64)$") add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64") add_toolchain_linker_flag("-Wl,--rpath-link=${TIZEN_TOOLCHAIN_PATH}") endif() +elseif(TARGET_ARCH_NAME STREQUAL "s390x") + add_toolchain_linker_flag("--target=${TOOLCHAIN}") elseif(TARGET_ARCH_NAME STREQUAL "x86") if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl) add_toolchain_linker_flag("--target=${TOOLCHAIN}") @@ -327,6 +329,8 @@ if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$") if(TARGET_ARCH_NAME STREQUAL "armel") add_compile_options(-mfloat-abi=softfp) endif() +elseif(TARGET_ARCH_NAME STREQUAL "s390x") + add_compile_options("--target=${TOOLCHAIN}") elseif(TARGET_ARCH_NAME STREQUAL "x86") if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl) add_compile_options(--target=${TOOLCHAIN}) diff --git a/eng/common/templates-official/steps/send-to-helix.yml b/eng/common/templates-official/steps/send-to-helix.yml index 3eb7e2d5f84..22f2501307d 100644 --- a/eng/common/templates-official/steps/send-to-helix.yml +++ b/eng/common/templates-official/steps/send-to-helix.yml @@ -8,6 +8,7 @@ parameters: HelixConfiguration: '' # optional -- additional property attached to a job HelixPreCommands: '' # optional -- commands to run before Helix work item execution HelixPostCommands: '' # optional -- commands to run after Helix work item execution + HelixProjectArguments: '' # optional -- arguments passed to the build command for helixpublish.proj WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects @@ -24,12 +25,12 @@ parameters: IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) Creator: '' # optional -- if the build is external, use this to specify who is sending the job - DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO + DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false steps: - - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' + - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' displayName: ${{ parameters.DisplayNamePrefix }} (Windows) env: BuildConfig: $(_BuildConfig) @@ -59,7 +60,7 @@ steps: SYSTEM_ACCESSTOKEN: $(System.AccessToken) condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog + - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog displayName: ${{ parameters.DisplayNamePrefix }} (Unix) env: BuildConfig: $(_BuildConfig) diff --git a/eng/common/templates/steps/send-to-helix.yml b/eng/common/templates/steps/send-to-helix.yml index 3eb7e2d5f84..22f2501307d 100644 --- a/eng/common/templates/steps/send-to-helix.yml +++ b/eng/common/templates/steps/send-to-helix.yml @@ -8,6 +8,7 @@ parameters: HelixConfiguration: '' # optional -- additional property attached to a job HelixPreCommands: '' # optional -- commands to run before Helix work item execution HelixPostCommands: '' # optional -- commands to run after Helix work item execution + HelixProjectArguments: '' # optional -- arguments passed to the build command for helixpublish.proj WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects @@ -24,12 +25,12 @@ parameters: IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) Creator: '' # optional -- if the build is external, use this to specify who is sending the job - DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO + DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false steps: - - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' + - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' displayName: ${{ parameters.DisplayNamePrefix }} (Windows) env: BuildConfig: $(_BuildConfig) @@ -59,7 +60,7 @@ steps: SYSTEM_ACCESSTOKEN: $(System.AccessToken) condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog + - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj ${{ parameters.HelixProjectArguments }} /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog displayName: ${{ parameters.DisplayNamePrefix }} (Unix) env: BuildConfig: $(_BuildConfig) diff --git a/global.json b/global.json index 92bd36971ec..91bd35ad978 100644 --- a/global.json +++ b/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25111.4", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.25111.4" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25120.1", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.25120.1" } } From b39398bc3cece8eaf5fdc25edabc44e9024b536e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 13 Mar 2025 01:35:56 +0000 Subject: [PATCH 36/79] Update dependencies from https://github.com/dotnet/arcade build 20250311.4 (#35781) [release/9.0] Update dependencies from dotnet/arcade --- NuGet.config | 4 ++++ eng/Version.Details.xml | 12 +++++------ eng/Versions.props | 2 +- .../core-templates/steps/generate-sbom.yml | 2 +- eng/common/generate-sbom-prep.ps1 | 20 +++++++++++++------ eng/common/generate-sbom-prep.sh | 17 ++++++++++------ eng/common/templates-official/job/job.yml | 1 + global.json | 8 ++++---- 8 files changed, 42 insertions(+), 24 deletions(-) diff --git a/NuGet.config b/NuGet.config index bd2ac2630b0..72b77389930 100644 --- a/NuGet.config +++ b/NuGet.config @@ -5,6 +5,8 @@ + + @@ -21,6 +23,8 @@ + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 51d5d03cb75..5a8e4717320 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + f33d9e642f0e68a61312164cd9e0baf4e142a999 - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + f33d9e642f0e68a61312164cd9e0baf4e142a999 - + https://github.com/dotnet/arcade - 5da211e1c42254cb35e7ef3d5a8428fb24853169 + f33d9e642f0e68a61312164cd9e0baf4e142a999 diff --git a/eng/Versions.props b/eng/Versions.props index 6ccc098575e..f70ffcf2fdf 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.3 - 9.0.0-beta.25111.5 + 9.0.0-beta.25161.4 17.8.3 diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml index d938b60e1bb..56a09009482 100644 --- a/eng/common/core-templates/steps/generate-sbom.yml +++ b/eng/common/core-templates/steps/generate-sbom.yml @@ -38,7 +38,7 @@ steps: PackageName: ${{ parameters.packageName }} BuildDropPath: ${{ parameters.buildDropPath }} PackageVersion: ${{ parameters.packageVersion }} - ManifestDirPath: ${{ parameters.manifestDirPath }} + ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME) ${{ if ne(parameters.IgnoreDirectories, '') }}: AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1 index 3e5c1c74a1c..a0c7d792a76 100644 --- a/eng/common/generate-sbom-prep.ps1 +++ b/eng/common/generate-sbom-prep.ps1 @@ -4,18 +4,26 @@ Param( . $PSScriptRoot\pipeline-logging-functions.ps1 +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" +$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_' +$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName + +Write-Host "Artifact name before : $ArtifactName" +Write-Host "Artifact name after : $SafeArtifactName" + Write-Host "Creating dir $ManifestDirPath" + # create directory for sbom manifest to be placed -if (!(Test-Path -path $ManifestDirPath)) +if (!(Test-Path -path $SbomGenerationDir)) { - New-Item -ItemType Directory -path $ManifestDirPath - Write-Host "Successfully created directory $ManifestDirPath" + New-Item -ItemType Directory -path $SbomGenerationDir + Write-Host "Successfully created directory $SbomGenerationDir" } else{ Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." } Write-Host "Updating artifact name" -$artifact_name = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" -replace '["/:<>\\|?@*"() ]', '_' -Write-Host "Artifact name $artifact_name" -Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$artifact_name" +Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName" diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh index d5c76dc827b..b8ecca72bbf 100644 --- a/eng/common/generate-sbom-prep.sh +++ b/eng/common/generate-sbom-prep.sh @@ -14,19 +14,24 @@ done scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" . $scriptroot/pipeline-logging-functions.sh + +# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. +artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" +safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" manifest_dir=$1 -if [ ! -d "$manifest_dir" ] ; then - mkdir -p "$manifest_dir" - echo "Sbom directory created." $manifest_dir +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +sbom_generation_dir="$manifest_dir/$safe_artifact_name" + +if [ ! -d "$sbom_generation_dir" ] ; then + mkdir -p "$sbom_generation_dir" + echo "Sbom directory created." $sbom_generation_dir else Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." fi -artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" echo "Artifact name before : "$artifact_name -# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. -safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" echo "Artifact name after : "$safe_artifact_name export ARTIFACT_NAME=$safe_artifact_name echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name" diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index 605692d2fb7..817555505aa 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -16,6 +16,7 @@ jobs: parameters: PackageVersion: ${{ parameters.packageVersion }} BuildDropPath: ${{ parameters.buildDropPath }} + ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom publishArtifacts: false # publish artifacts diff --git a/global.json b/global.json index cef1e89094a..61faa20a7a5 100644 --- a/global.json +++ b/global.json @@ -1,11 +1,11 @@ { "sdk": { - "version": "9.0.103", + "version": "9.0.104", "allowPrerelease": true, "rollForward": "latestMajor" }, "tools": { - "dotnet": "9.0.103", + "dotnet": "9.0.104", "runtimes": { "dotnet": [ "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)" @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25111.5", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25111.5" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25161.4", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25161.4" } } From 75ef23ba6ae3eea2cb6946cb020dd46dfcdd8d0b Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 13 Mar 2025 04:18:37 +0000 Subject: [PATCH 37/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250312.16 Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 From Version 8.0.14-servicing.25111.18 -> To Version 8.0.15-servicing.25162.16 --- NuGet.config | 8 ++------ eng/Version.Details.xml | 18 +++++++++--------- eng/Versions.props | 8 ++++---- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/NuGet.config b/NuGet.config index 9f310bb75dc..27620da33a3 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,9 +4,7 @@ - - - + @@ -21,9 +19,7 @@ - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index bf7e11ea666..564dac04e08 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -29,9 +29,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1584e493603cfc4e9b36b77d6d4afe97de6363f9 + 6eee28c27213784c1f8a112df1c90113585c4111 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -39,24 +39,24 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1584e493603cfc4e9b36b77d6d4afe97de6363f9 + 6eee28c27213784c1f8a112df1c90113585c4111 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1584e493603cfc4e9b36b77d6d4afe97de6363f9 + 6eee28c27213784c1f8a112df1c90113585c4111 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1584e493603cfc4e9b36b77d6d4afe97de6363f9 + 6eee28c27213784c1f8a112df1c90113585c4111 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1584e493603cfc4e9b36b77d6d4afe97de6363f9 + 6eee28c27213784c1f8a112df1c90113585c4111 diff --git a/eng/Versions.props b/eng/Versions.props index f9b672927a6..5dfd73422c6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,13 +24,13 @@ 8.0.1 8.0.1 8.0.2 - 8.0.14-servicing.25111.18 + 8.0.15-servicing.25162.16 8.0.1 8.0.5 8.0.2 - 8.0.14 - 8.0.14 - 8.0.14-servicing.25111.18 + 8.0.15 + 8.0.15 + 8.0.15-servicing.25162.16 8.0.0-beta.25111.4 From 85957ac1a150dd04c4625c9abcb5c09f915dfee3 Mon Sep 17 00:00:00 2001 From: Maurycy Markowski Date: Wed, 12 Mar 2025 23:38:14 -0700 Subject: [PATCH 38/79] Fix to #35162 - Regression from EF Core 8 to 9: MigrationBuilder.DropTable Causes Issues with Subsequent Table Recreation (#35776) Port of https://github.com/dotnet/efcore/pull/35764 Fixes #35162 Description Problem was that in 9.0 we changed how we process temporal tables, tracking the temporal table information as we process migrations. However, we didn't take into account the cases where users would manually modify their migrations, or squash multiple migrations together, resulting in corrupted dictionary access for cases where a table was deleted and created in the same migration. This fix just makes the temporal information map handling more robust, so those errors don't happen anymore. There is a broader issue with temporal tables but those will be addressed in a different PR. Customer impact Some manually modified/squashed migrations no longer work when they are being applied, throwing an unhelpful exception (The given key '...' was not present in the dictionary.'). No good workaround apart from breaking the migrations apart. How found Reported by multiple customers on 9. Regression Yes. Testing Added infra to test these types of scenarios (containing intermediate migration state), added multiple tests both for regular and temporal tables. Risk Low - Very targeted fix, accessing the temporal information dictionary in a more robust way. No quirk, since migrations are design time, so hard to set switches for them. --- .../SqlServerMigrationsSqlGenerator.cs | 25 +- .../Migrations/MigrationsTestBase.cs | 149 ++++++ .../Migrations/MigrationsSqlServerTest.cs | 441 ++++++++++++++++++ .../Migrations/MigrationsSqliteTest.cs | 5 + 4 files changed, 615 insertions(+), 5 deletions(-) diff --git a/src/EFCore.SqlServer/Migrations/SqlServerMigrationsSqlGenerator.cs b/src/EFCore.SqlServer/Migrations/SqlServerMigrationsSqlGenerator.cs index 40573c91264..613f391200a 100644 --- a/src/EFCore.SqlServer/Migrations/SqlServerMigrationsSqlGenerator.cs +++ b/src/EFCore.SqlServer/Migrations/SqlServerMigrationsSqlGenerator.cs @@ -2549,10 +2549,16 @@ private IReadOnlyList RewriteOperations( var newRawSchema = renameTableOperation.NewSchema; var newSchema = newRawSchema ?? model?.GetDefaultSchema(); + var temporalTableInformation = BuildTemporalInformationFromMigrationOperation(schema, renameTableOperation); if (!temporalTableInformationMap.ContainsKey((tableName, rawSchema))) { - var temporalTableInformation = BuildTemporalInformationFromMigrationOperation(schema, renameTableOperation); temporalTableInformationMap[(tableName, rawSchema)] = temporalTableInformation; + } + + // we still need to check here - table with the new name could have existed before and have been deleted + // we want to preserve the original temporal info of that deleted table + if (!temporalTableInformationMap.ContainsKey((newTableName, newRawSchema))) + { temporalTableInformationMap[(newTableName, newRawSchema)] = temporalTableInformation; } @@ -2647,10 +2653,19 @@ private IReadOnlyList RewriteOperations( var schema = rawSchema ?? model?.GetDefaultSchema(); - // we are guaranteed to find entry here - we looped through all the operations earlier, - // info missing from operations we got from the model - // and in case of no/incomplete model we created dummy (non-temporal) entries - var temporalInformation = temporalTableInformationMap[(tableName, rawSchema)]; + TemporalOperationInformation temporalInformation; + if (operation is CreateTableOperation) + { + // for create table we always generate new temporal information from the operation itself + // just in case there was a table with that name before that got deleted/renamed + // also, temporal state (disabled versioning etc.) should always reset when creating a table + temporalInformation = BuildTemporalInformationFromMigrationOperation(schema, operation); + temporalTableInformationMap[(tableName, rawSchema)] = temporalInformation; + } + else + { + temporalInformation = temporalTableInformationMap[(tableName, rawSchema)]; + } switch (operation) { diff --git a/test/EFCore.Relational.Specification.Tests/Migrations/MigrationsTestBase.cs b/test/EFCore.Relational.Specification.Tests/Migrations/MigrationsTestBase.cs index f83e2575b6b..d91dafb6d63 100644 --- a/test/EFCore.Relational.Specification.Tests/Migrations/MigrationsTestBase.cs +++ b/test/EFCore.Relational.Specification.Tests/Migrations/MigrationsTestBase.cs @@ -3213,6 +3213,118 @@ public virtual Task Add_required_primitve_collection_with_custom_converter_and_c Assert.Single(customersTable.PrimaryKey!.Columns)); }); + [ConditionalFact] + public virtual Task Multiop_drop_table_and_create_the_same_table_in_one_migration() + => TestComposite( + [ + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.HasKey("Id"); + e.ToTable("Customers"); + }), + builder => { }, + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.HasKey("Id"); + + e.ToTable("Customers"); + }) + ]); + + [ConditionalFact] + public virtual Task Multiop_create_table_and_drop_it_in_one_migration() + => TestComposite( + [ + builder => { }, + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.HasKey("Id"); + + e.ToTable("Customers"); + }), + builder => { }, + ]); + + [ConditionalFact] + public virtual Task Multiop_rename_table_and_drop() + => TestComposite( + [ + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.HasKey("Id"); + + e.ToTable("Customers"); + }), + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.HasKey("Id"); + + e.ToTable("NewCustomers"); + }), + builder => { }, + ]); + + [ConditionalFact] + public virtual Task Multiop_rename_table_and_create_new_table_with_the_old_name() + => TestComposite( + [ + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.HasKey("Id"); + + e.ToTable("Customers"); + }), + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.HasKey("Id"); + + e.ToTable("NewCustomers"); + }), + builder => + { + builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.HasKey("Id"); + + e.ToTable("NewCustomers"); + }); + + builder.Entity( + "AnotherCustomer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.HasKey("Id"); + + e.ToTable("Customers"); + }); + }, + ]); + protected class Person { public int Id { get; set; } @@ -3262,6 +3374,43 @@ protected virtual Task Test( MigrationsSqlGenerationOptions migrationsSqlGenerationOptions = MigrationsSqlGenerationOptions.Default) => Test(_ => { }, buildSourceAction, buildTargetAction, asserter, withConventions, migrationsSqlGenerationOptions); + protected virtual Task TestComposite( + List> buildActions, + bool withConventions = true, + MigrationsSqlGenerationOptions migrationsSqlGenerationOptions = MigrationsSqlGenerationOptions.Default) + { + if (buildActions.Count < 3) + { + throw new InvalidOperationException("You need at least 3 build actions for the composite case."); + } + + var context = CreateContext(); + var modelDiffer = context.GetService(); + var modelRuntimeInitializer = context.GetService(); + + var models = new List(); + for (var i = 0; i < buildActions.Count; i++) + { + var modelBuilder = CreateModelBuilder(withConventions); + buildActions[i](modelBuilder); + + var preSnapshotModel = modelRuntimeInitializer.Initialize( + (IModel)modelBuilder.Model, designTime: true, validationLogger: null); + + models.Add(preSnapshotModel); + } + + // build all migration operations going through each intermediate state of the model + var operations = new List(); + for (var i = 0; i < models.Count - 1; i++) + { + operations.AddRange( + modelDiffer.GetDifferences(models[i].GetRelationalModel(), models[i + 1].GetRelationalModel())); + } + + return Test(models.First(), models.Last(), operations, null, migrationsSqlGenerationOptions); + } + protected virtual Task Test( Action buildCommonAction, Action buildSourceAction, diff --git a/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsSqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsSqlServerTest.cs index b7998252e12..b1931dad046 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsSqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Migrations/MigrationsSqlServerTest.cs @@ -3440,6 +3440,90 @@ await Test( """); } + public override async Task Multiop_drop_table_and_create_the_same_table_in_one_migration() + { + await base.Multiop_drop_table_and_create_the_same_table_in_one_migration(); + + AssertSql( + """ +DROP TABLE [Customers]; +""", + // + """ +CREATE TABLE [Customers] ( + [Id] int NOT NULL IDENTITY, + [Name] nvarchar(max) NULL, + CONSTRAINT [PK_Customers] PRIMARY KEY ([Id]) +); +"""); + } + + public override async Task Multiop_create_table_and_drop_it_in_one_migration() + { + await base.Multiop_create_table_and_drop_it_in_one_migration(); + + AssertSql( + """ +CREATE TABLE [Customers] ( + [Id] int NOT NULL IDENTITY, + [Name] nvarchar(max) NULL, + CONSTRAINT [PK_Customers] PRIMARY KEY ([Id]) +); +""", + // + """ +DROP TABLE [Customers]; +"""); + } + + public override async Task Multiop_rename_table_and_drop() + { + await base.Multiop_rename_table_and_drop(); + + AssertSql( + """ +ALTER TABLE [Customers] DROP CONSTRAINT [PK_Customers]; +""", + // + """ +EXEC sp_rename N'[Customers]', N'NewCustomers', 'OBJECT'; +""", + // + """ +ALTER TABLE [NewCustomers] ADD CONSTRAINT [PK_NewCustomers] PRIMARY KEY ([Id]); +""", + // + """ +DROP TABLE [NewCustomers]; +"""); + } + + public override async Task Multiop_rename_table_and_create_new_table_with_the_old_name() + { + await base.Multiop_rename_table_and_create_new_table_with_the_old_name(); + + AssertSql( + """ +ALTER TABLE [Customers] DROP CONSTRAINT [PK_Customers]; +""", + // + """ +EXEC sp_rename N'[Customers]', N'NewCustomers', 'OBJECT'; +""", + // + """ +ALTER TABLE [NewCustomers] ADD CONSTRAINT [PK_NewCustomers] PRIMARY KEY ([Id]); +""", + // + """ +CREATE TABLE [Customers] ( + [Id] int NOT NULL IDENTITY, + [Name] nvarchar(max) NULL, + CONSTRAINT [PK_Customers] PRIMARY KEY ([Id]) +); +"""); + } + [ConditionalFact] public virtual async Task Create_temporal_table_default_column_mappings_and_default_history_table() { @@ -10757,6 +10841,363 @@ CONSTRAINT [PK_HistoryTable] PRIMARY KEY ([Id]) """); } + [ConditionalFact] + public virtual async Task Temporal_multiop_drop_temporal_table_and_add_the_same_table_in_one_migration() + { + await TestComposite( + [ + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.Property("SystemTimeStart").ValueGeneratedOnAddOrUpdate(); + e.Property("SystemTimeEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("HistoryTable", "historySchema"); + ttb.HasPeriodStart("SystemTimeStart"); + ttb.HasPeriodEnd("SystemTimeEnd"); + })); + }), + builder => { }, + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.Property("SystemTimeStart").ValueGeneratedOnAddOrUpdate(); + e.Property("SystemTimeEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("HistoryTable", "historySchema"); + ttb.HasPeriodStart("SystemTimeStart"); + ttb.HasPeriodEnd("SystemTimeEnd"); + })); + }) + ]); + + AssertSql( +""" +ALTER TABLE [Customers] SET (SYSTEM_VERSIONING = OFF) +""", + // + """ +DROP TABLE [Customers]; +""", + // + """ +DROP TABLE [historySchema].[HistoryTable]; +""", + // + """ +IF SCHEMA_ID(N'historySchema') IS NULL EXEC(N'CREATE SCHEMA [historySchema];'); +""", + // + """ +CREATE TABLE [Customers] ( + [Id] int NOT NULL IDENTITY, + [Name] nvarchar(max) NULL, + [SystemTimeEnd] datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, + [SystemTimeStart] datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL, + CONSTRAINT [PK_Customers] PRIMARY KEY ([Id]), + PERIOD FOR SYSTEM_TIME([SystemTimeStart], [SystemTimeEnd]) +) WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [historySchema].[HistoryTable])); +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_multiop_create_temporal_and_drop() + { + await TestComposite( + [ + builder => { }, + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.Property("SystemTimeStart").ValueGeneratedOnAddOrUpdate(); + e.Property("SystemTimeEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("HistoryTable", "historySchema"); + ttb.HasPeriodStart("SystemTimeStart"); + ttb.HasPeriodEnd("SystemTimeEnd"); + })); + }), + builder => { }, + ]); + + AssertSql( +""" +IF SCHEMA_ID(N'historySchema') IS NULL EXEC(N'CREATE SCHEMA [historySchema];'); +""", + // + """ +CREATE TABLE [Customers] ( + [Id] int NOT NULL IDENTITY, + [Name] nvarchar(max) NULL, + [SystemTimeEnd] datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, + [SystemTimeStart] datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL, + CONSTRAINT [PK_Customers] PRIMARY KEY ([Id]), + PERIOD FOR SYSTEM_TIME([SystemTimeStart], [SystemTimeEnd]) +) WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [historySchema].[HistoryTable])); +""", + // + """ +ALTER TABLE [Customers] SET (SYSTEM_VERSIONING = OFF) +""", + // + """ +DROP TABLE [Customers]; +""", + // + """ +DROP TABLE [historySchema].[HistoryTable]; +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_multiop_rename_temporal_and_drop() + { + await TestComposite( + [ + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.Property("SystemTimeStart").ValueGeneratedOnAddOrUpdate(); + e.Property("SystemTimeEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("HistoryTable", "historySchema"); + ttb.HasPeriodStart("SystemTimeStart"); + ttb.HasPeriodEnd("SystemTimeEnd"); + })); + }), + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.Property("SystemTimeStart").ValueGeneratedOnAddOrUpdate(); + e.Property("SystemTimeEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + + e.ToTable( + "NewCustomers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("HistoryTable", "historySchema"); + ttb.HasPeriodStart("SystemTimeStart"); + ttb.HasPeriodEnd("SystemTimeEnd"); + })); + }), + builder => { }, + ]); + + AssertSql( +""" +ALTER TABLE [Customers] SET (SYSTEM_VERSIONING = OFF) +""", + // + """ +ALTER TABLE [Customers] DROP CONSTRAINT [PK_Customers]; +""", + // + """ +EXEC sp_rename N'[Customers]', N'NewCustomers', 'OBJECT'; +""", + // + """ +ALTER TABLE [NewCustomers] ADD CONSTRAINT [PK_NewCustomers] PRIMARY KEY ([Id]); +""", + // + """ +DROP TABLE [NewCustomers]; +""", + // + """ +DROP TABLE [historySchema].[HistoryTable]; +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_multiop_rename_period_drop_table_create_as_regular() + { + await TestComposite( + [ + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.Property("SystemTimeStart").ValueGeneratedOnAddOrUpdate(); + e.Property("SystemTimeEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("HistoryTable", "historySchema"); + ttb.HasPeriodStart("SystemTimeStart"); + ttb.HasPeriodEnd("SystemTimeEnd"); + })); + }), + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.Property("NewSystemTimeStart").ValueGeneratedOnAddOrUpdate(); + e.Property("SystemTimeEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("HistoryTable", "historySchema"); + ttb.HasPeriodStart("NewSystemTimeStart"); + ttb.HasPeriodEnd("SystemTimeEnd"); + })); + }), + builder => { }, + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.HasKey("Id"); + + e.ToTable("Customers"); + }), + ]); + + AssertSql( +""" +EXEC sp_rename N'[Customers].[SystemTimeStart]', N'NewSystemTimeStart', 'COLUMN'; +""", + // + """ +ALTER TABLE [Customers] SET (SYSTEM_VERSIONING = OFF) +""", + // + """ +DROP TABLE [Customers]; +""", + // + """ +DROP TABLE [historySchema].[HistoryTable]; +""", + // + """ +CREATE TABLE [Customers] ( + [Id] int NOT NULL IDENTITY, + [Name] nvarchar(max) NULL, + CONSTRAINT [PK_Customers] PRIMARY KEY ([Id]) +); +"""); + } + + [ConditionalFact] + public virtual async Task Temporal_multiop_rename_column_drop_table_create_as_regular() + { + await TestComposite( + [ + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.Property("SystemTimeStart").ValueGeneratedOnAddOrUpdate(); + e.Property("SystemTimeEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("HistoryTable", "historySchema"); + ttb.HasPeriodStart("SystemTimeStart"); + ttb.HasPeriodEnd("SystemTimeEnd"); + })); + }), + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("NewName"); + e.Property("SystemTimeStart").ValueGeneratedOnAddOrUpdate(); + e.Property("SystemTimeEnd").ValueGeneratedOnAddOrUpdate(); + e.HasKey("Id"); + + e.ToTable( + "Customers", tb => tb.IsTemporal( + ttb => + { + ttb.UseHistoryTable("HistoryTable", "historySchema"); + ttb.HasPeriodStart("SystemTimeStart"); + ttb.HasPeriodEnd("SystemTimeEnd"); + })); + }), + builder => { }, + builder => builder.Entity( + "Customer", e => + { + e.Property("Id").ValueGeneratedOnAdd(); + e.Property("Name"); + e.HasKey("Id"); + + e.ToTable("Customers"); + }), + ]); + + AssertSql( +""" +EXEC sp_rename N'[Customers].[Name]', N'NewName', 'COLUMN'; +""", + // + """ +ALTER TABLE [Customers] SET (SYSTEM_VERSIONING = OFF) +""", + // + """ +DROP TABLE [Customers]; +""", + // + """ +DROP TABLE [historySchema].[HistoryTable]; +""", + // + """ +CREATE TABLE [Customers] ( + [Id] int NOT NULL IDENTITY, + [Name] nvarchar(max) NULL, + CONSTRAINT [PK_Customers] PRIMARY KEY ([Id]) +); +"""); + } + [ConditionalFact] public override async Task Add_required_primitive_collection_to_existing_table() { diff --git a/test/EFCore.Sqlite.FunctionalTests/Migrations/MigrationsSqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/Migrations/MigrationsSqliteTest.cs index 79529ed9b1d..e3a82cc168d 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Migrations/MigrationsSqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Migrations/MigrationsSqliteTest.cs @@ -2070,6 +2070,11 @@ public override Task Rename_sequence() public override Task Move_sequence() => AssertNotSupportedAsync(base.Move_sequence, SqliteStrings.SequencesNotSupported); + public override Task Multiop_rename_table_and_drop() + => AssertNotSupportedAsync( + base.Multiop_rename_table_and_drop, + SqliteStrings.InvalidMigrationOperation(nameof(DropPrimaryKeyOperation))); + [ConditionalFact] public override async Task Add_required_primitve_collection_to_existing_table() { From a2ed5ad99e3010936e7a638514cb983223798cd9 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 13 Mar 2025 19:26:13 +0000 Subject: [PATCH 39/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250312.18 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Logging , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 , System.Text.Encodings.Web , System.Text.Json From Version 9.0.4 -> To Version 9.0.4 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 34 +++++++++++++++++----------------- eng/Versions.props | 4 ++-- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/NuGet.config b/NuGet.config index 45881a04b44..5060c03b75c 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c88210dca94..0ef1517a42b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,47 +3,47 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 99ba03659dbd004773e2e6aacb8d44eb227f85ed + 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 diff --git a/eng/Versions.props b/eng/Versions.props index 9dcc4b6ba3b..44c6fb16fa2 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,11 +24,11 @@ 9.0.4 9.0.4 9.0.4 - 9.0.4-servicing.25160.22 + 9.0.4-servicing.25162.18 9.0.4 9.0.4 9.0.4 - 9.0.4-servicing.25160.22 + 9.0.4-servicing.25162.18 9.0.4 9.0.4 9.0.4 From 7465b32aaf25b946812d0dcff7af5c793dba8d24 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 14 Mar 2025 02:59:35 +0000 Subject: [PATCH 40/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250313.5 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Logging , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 , System.Text.Encodings.Web , System.Text.Json From Version 9.0.4 -> To Version 9.0.4 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 34 +++++++++++++++++----------------- eng/Versions.props | 4 ++-- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/NuGet.config b/NuGet.config index 5060c03b75c..e6046bdda5d 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0ef1517a42b..1dc45f4c790 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,47 +3,47 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0c9b70db7b7bfcbc33e85bc40e215c3b138823e5 + f57e6dc747158ab7ade4e62a75a6750d16b771e8 diff --git a/eng/Versions.props b/eng/Versions.props index 44c6fb16fa2..a9458f9340d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,11 +24,11 @@ 9.0.4 9.0.4 9.0.4 - 9.0.4-servicing.25162.18 + 9.0.4-servicing.25163.5 9.0.4 9.0.4 9.0.4 - 9.0.4-servicing.25162.18 + 9.0.4-servicing.25163.5 9.0.4 9.0.4 9.0.4 From 21cc2abca20b147cf2307ad6b934237979581d0c Mon Sep 17 00:00:00 2001 From: Maurycy Markowski Date: Fri, 14 Mar 2025 12:41:21 -0700 Subject: [PATCH 41/79] Fix to #21006 - Support a default value for non-nullable properties (#35782) Description Problem was that we don't have a good story for schema evolution in Cosmos (e.g. adding a new non-nullable property). We start generating shaper code expecting the new schema, but the old documents are not being updated. Effectively, querying for those modified entities stops working because the document no longer matches the expected shape. This is a major pain point and adoption blocker for EF Core Cosmos users. While designing a compelling schema evolution story is a large task and out of scope for now, we believe we can solve majority of the problems with a targeted change - when generating shaper for Cosmos entities, if required value is not present, we generate the CLR default rather than throw. Customer impact EF Core customers using Cosmos experience exceptions when querying for an entity which had it's schema modified, e.g. by adding a non-nullable property. There is no good workaround, apart from manually adding missing data to the document or using nullable properties instead. How found Reported by multiple customers on 9. Regression No. Testing Added multiple tests for scalar and reference scenarios, all supported types, converters vs no. missing value vs explicit nulls. Risk Low - Targeted fix, when constructing non-nullable property of an entity type we produce default of that type, rather than null. This does not affect keys, just regular scalar properties. Potential negative side-effect is that we lose the validation for scenarios where legitimate required property is introduced, but the value hasn't been provided for it in the document by accident. Added a quirk as an escape hatch to revert to previous behavior. Fixes #21006 --- ...ionBindingRemovingExpressionVisitorBase.cs | 34 +- .../Query/AdHocCosmosTestHelpers.cs | 43 ++ .../Query/AdHocJsonQueryCosmosTest.cs | 659 ++++++++++++++++++ .../AdHocMiscellaneousQueryCosmosTest.cs | 139 ++++ .../InMemoryComplianceTest.cs | 1 + ...cs => AdHocJsonQueryRelationalTestBase.cs} | 43 +- .../Query/AdHocJsonQueryTestBase.cs | 419 +++++++++++ .../Query/AdHocJsonQuerySqlServerTestBase.cs | 180 ++++- .../Query/AdHocJsonQuerySqliteTest.cs | 67 +- 9 files changed, 1574 insertions(+), 11 deletions(-) create mode 100644 test/EFCore.Cosmos.FunctionalTests/Query/AdHocCosmosTestHelpers.cs create mode 100644 test/EFCore.Cosmos.FunctionalTests/Query/AdHocJsonQueryCosmosTest.cs rename test/EFCore.Relational.Specification.Tests/Query/{AdHocJsonQueryTestBase.cs => AdHocJsonQueryRelationalTestBase.cs} (95%) create mode 100644 test/EFCore.Specification.Tests/Query/AdHocJsonQueryTestBase.cs diff --git a/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.CosmosProjectionBindingRemovingExpressionVisitorBase.cs b/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.CosmosProjectionBindingRemovingExpressionVisitorBase.cs index d349d73e609..63553c5eba8 100644 --- a/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.CosmosProjectionBindingRemovingExpressionVisitorBase.cs +++ b/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.CosmosProjectionBindingRemovingExpressionVisitorBase.cs @@ -20,6 +20,9 @@ private abstract class CosmosProjectionBindingRemovingExpressionVisitorBase( bool trackQueryResults) : ExpressionVisitor { + private static readonly bool UseOldBehavior21006 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue21006", out var enabled21006) && enabled21006; + private static readonly MethodInfo GetItemMethodInfo = typeof(JObject).GetRuntimeProperties() .Single(pi => pi.Name == "Item" && pi.GetIndexParameters()[0].ParameterType == typeof(string)) @@ -691,7 +694,11 @@ private Expression CreateGetValueExpression( && !property.IsShadowProperty()) { var readExpression = CreateGetValueExpression( - jTokenExpression, storeName, type.MakeNullable(), property.GetTypeMapping()); + jTokenExpression, + storeName, + type.MakeNullable(), + property.GetTypeMapping(), + isNonNullableScalar: false); var nonNullReadExpression = readExpression; if (nonNullReadExpression.Type != type) @@ -712,7 +719,14 @@ private Expression CreateGetValueExpression( } return Convert( - CreateGetValueExpression(jTokenExpression, storeName, type.MakeNullable(), property.GetTypeMapping()), + CreateGetValueExpression( + jTokenExpression, + storeName, + type.MakeNullable(), + property.GetTypeMapping(), + // special case keys - we check them for null to see if the entity needs to be materialized, so we want to keep the null, rather than non-nullable default + // returning defaults is supposed to help with evolving the schema - so this doesn't concern keys anyway (they shouldn't evolve) + isNonNullableScalar: !property.IsNullable && !property.IsKey()), type); } @@ -720,7 +734,8 @@ private Expression CreateGetValueExpression( Expression jTokenExpression, string storeName, Type type, - CoreTypeMapping typeMapping = null) + CoreTypeMapping typeMapping = null, + bool isNonNullableScalar = false) { Check.DebugAssert(type.IsNullableType(), "Must read nullable type from JObject."); @@ -763,6 +778,7 @@ var body Constant(CosmosClientWrapper.Serializer)), converter.ConvertFromProviderExpression.Body); + var originalBodyType = body.Type; if (body.Type != type) { body = Convert(body, type); @@ -783,7 +799,11 @@ var body } else { - replaceExpression = Default(type); + replaceExpression = isNonNullableScalar && !UseOldBehavior21006 + ? Expression.Convert( + Default(originalBodyType), + type) + : Default(type); } body = Condition( @@ -799,7 +819,11 @@ var body } else { - valueExpression = ConvertJTokenToType(jTokenExpression, typeMapping?.ClrType.MakeNullable() ?? type); + valueExpression = ConvertJTokenToType( + jTokenExpression, + (isNonNullableScalar && !UseOldBehavior21006 + ? typeMapping?.ClrType + : typeMapping?.ClrType.MakeNullable()) ?? type); if (valueExpression.Type != type) { diff --git a/test/EFCore.Cosmos.FunctionalTests/Query/AdHocCosmosTestHelpers.cs b/test/EFCore.Cosmos.FunctionalTests/Query/AdHocCosmosTestHelpers.cs new file mode 100644 index 00000000000..19a5b39eccc --- /dev/null +++ b/test/EFCore.Cosmos.FunctionalTests/Query/AdHocCosmosTestHelpers.cs @@ -0,0 +1,43 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Net; +using Microsoft.Azure.Cosmos; +using Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace Microsoft.EntityFrameworkCore.Query; + +public class AdHocCosmosTestHelpers +{ + public static async Task CreateCustomEntityHelperAsync( + Container container, + string json, + CancellationToken cancellationToken) + { + var document = JObject.Parse(json); + + var stream = new MemoryStream(); + await using var __ = stream.ConfigureAwait(false); + var writer = new StreamWriter(stream, new UTF8Encoding(), bufferSize: 1024, leaveOpen: false); + await using var ___ = writer.ConfigureAwait(false); + using var jsonWriter = new JsonTextWriter(writer); + + CosmosClientWrapper.Serializer.Serialize(jsonWriter, document); + await jsonWriter.FlushAsync(cancellationToken).ConfigureAwait(false); + + var response = await container.CreateItemStreamAsync( + stream, + PartitionKey.None, + requestOptions: null, + cancellationToken) + .ConfigureAwait(false); + + + if (response.StatusCode != HttpStatusCode.Created) + { + throw new InvalidOperationException($"Failed to create entity (status code: {response.StatusCode}) for json: {json}"); + } + } +} diff --git a/test/EFCore.Cosmos.FunctionalTests/Query/AdHocJsonQueryCosmosTest.cs b/test/EFCore.Cosmos.FunctionalTests/Query/AdHocJsonQueryCosmosTest.cs new file mode 100644 index 00000000000..979ad3d8ba0 --- /dev/null +++ b/test/EFCore.Cosmos.FunctionalTests/Query/AdHocJsonQueryCosmosTest.cs @@ -0,0 +1,659 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal; + +namespace Microsoft.EntityFrameworkCore.Query; + +public class AdHocJsonQueryCosmosTest : AdHocJsonQueryTestBase +{ + public override async Task Project_root_with_missing_scalars(bool async) + { + if (async) + { + await base.Project_root_with_missing_scalars(async); + + AssertSql( + """ +SELECT VALUE c +FROM root c +WHERE (c["Id"] < 4) +"""); + } + } + + [ConditionalTheory(Skip = "issue #35702")] + public override async Task Project_top_level_json_entity_with_missing_scalars(bool async) + { + if (async) + { + await base.Project_top_level_json_entity_with_missing_scalars(async); + + AssertSql(); + } + } + + public override async Task Project_nested_json_entity_with_missing_scalars(bool async) + { + if (async) + { + await AssertTranslationFailed( + () => base.Project_nested_json_entity_with_missing_scalars(async)); + + AssertSql(); + } + } + + [ConditionalTheory(Skip = "issue #34067")] + public override async Task Project_top_level_entity_with_null_value_required_scalars(bool async) + { + if (async) + { + await base.Project_top_level_entity_with_null_value_required_scalars(async); + + AssertSql( + """ +SELECT c["Id"], c +FROM root c +WHERE (c["Id"] = 4) +"""); + } + } + + public override async Task Project_root_entity_with_missing_required_navigation(bool async) + { + if (async) + { + await base.Project_root_entity_with_missing_required_navigation(async); + + AssertSql( + """ +ReadItem(?, ?) +"""); + } + } + + public override async Task Project_missing_required_navigation(bool async) + { + if (async) + { + await base.Project_missing_required_navigation(async); + + AssertSql( + """ +SELECT VALUE c +FROM root c +WHERE (c["Id"] = 5) +"""); + } + } + + public override async Task Project_root_entity_with_null_required_navigation(bool async) + { + if (async) + { + await base.Project_root_entity_with_null_required_navigation(async); + + AssertSql( + """ +ReadItem(?, ?) +"""); + } + } + + public override async Task Project_null_required_navigation(bool async) + { + if (async) + { + await base.Project_null_required_navigation(async); + + AssertSql( + """ +SELECT VALUE c +FROM root c +WHERE (c["Id"] = 6) +"""); + } + } + + public override async Task Project_missing_required_scalar(bool async) + { + if (async) + { + await base.Project_missing_required_scalar(async); + + AssertSql( + """ +SELECT c["Id"], c["RequiredReference"]["Number"] +FROM root c +WHERE (c["Id"] = 2) +"""); + } + } + + public override async Task Project_null_required_scalar(bool async) + { + if (async) + { + await base.Project_null_required_scalar(async); + + AssertSql( + """ +SELECT c["Id"], c["RequiredReference"]["Number"] +FROM root c +WHERE (c["Id"] = 4) +"""); + } + } + + protected override void OnModelCreating21006(ModelBuilder modelBuilder) + { + base.OnModelCreating21006(modelBuilder); + + modelBuilder.Entity().ToContainer("Entities"); + } + + protected override async Task Seed21006(Context21006 context) + { + await base.Seed21006(context); + + var wrapper = (CosmosClientWrapper)context.GetService(); + var singletonWrapper = context.GetService(); + var entitiesContainer = singletonWrapper.Client.GetContainer(StoreName, containerId: "Entities"); + + var missingTopLevel = +$$""" +{ + "Id": 2, + "$type": "Entity", + "Name": "e2", + "id": "2", + "Collection": [ + { + "Text": "e2 c1", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 c1 c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 c1 c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 c1 nor" + }, + "NestedRequiredReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 c1 nrr" + } + }, + { + "Text": "e2 c2", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 c2 c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 c2 c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 c2 nor" + }, + "NestedRequiredReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 c2 nrr" + } + } + ], + "OptionalReference": { + "Text": "e2 or", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 or c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 or c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 or nor" + }, + "NestedRequiredReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 or nrr" + } + }, + "RequiredReference": { + "Text": "e2 rr", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 rr c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 rr c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 rr nor" + }, + "NestedRequiredReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e2 rr nrr" + } + } +} +"""; + + await AdHocCosmosTestHelpers.CreateCustomEntityHelperAsync( + entitiesContainer, + missingTopLevel, + CancellationToken.None); + + var missingNested = +$$""" +{ + "Id": 3, + "$type": "Entity", + "Name": "e3", + "id": "3", + "Collection": [ + { + "Number": 7.0, + "Text": "e3 c1", + "NestedCollection": [ + { + "Text": "e3 c1 c1" + }, + { + "Text": "e3 c1 c2" + } + ], + "NestedOptionalReference": { + "Text": "e3 c1 nor" + }, + "NestedRequiredReference": { + "Text": "e3 c1 nrr" + } + }, + { + "Number": 7.0, + "Text": "e3 c2", + "NestedCollection": [ + { + "Text": "e3 c2 c1" + }, + { + "Text": "e3 c2 c2" + } + ], + "NestedOptionalReference": { + "Text": "e3 c2 nor" + }, + "NestedRequiredReference": { + "Text": "e3 c2 nrr" + } + } + ], + "OptionalReference": { + "Number": 7.0, + "Text": "e3 or", + "NestedCollection": [ + { + "Text": "e3 or c1" + }, + { + "Text": "e3 or c2" + } + ], + "NestedOptionalReference": { + "Text": "e3 or nor" + }, + "NestedRequiredReference": { + "Text": "e3 or nrr" + } + }, + "RequiredReference": { + "Number": 7.0, + "Text": "e3 rr", + "NestedCollection": [ + { + "Text": "e3 rr c1" + }, + { + "Text": "e3 rr c2" + } + ], + "NestedOptionalReference": { + "Text": "e3 rr nor" + }, + "NestedRequiredReference": { + "Text": "e3 rr nrr" + } + } +} +"""; + + await AdHocCosmosTestHelpers.CreateCustomEntityHelperAsync( + entitiesContainer, + missingNested, + CancellationToken.None); + + var nullTopLevel = +$$""" +{ + "Id": 4, + "$type": "Entity", + "Name": "e4", + "id": "4", + "Collection": [ + { + "Number": null, + "Text": "e4 c1", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 c1 c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 c1 c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 c1 nor" + }, + "NestedRequiredReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 c1 nrr" + } + }, + { + "Number": null, + "Text": "e4 c2", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 c2 c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 c2 c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 c2 nor" + }, + "NestedRequiredReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 c2 nrr" + } + } + ], + "OptionalReference": { + "Number": null, + "Text": "e4 or", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 or c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 or c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 or nor" + }, + "NestedRequiredReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 or nrr" + } + }, + "RequiredReference": { + "Number": null, + "Text": "e4 rr", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 rr c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 rr c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 rr nor" + }, + "NestedRequiredReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e4 rr nrr" + } + } +} +"""; + + await AdHocCosmosTestHelpers.CreateCustomEntityHelperAsync( + entitiesContainer, + nullTopLevel, + CancellationToken.None); + + var missingRequiredNav = +$$""" +{ + "Id": 5, + "$type": "Entity", + "Name": "e5", + "id": "5", + "Collection": [ + { + "Number": 7.0, + "Text": "e5 c1", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 c1 c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 c1 c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 c1 nor" + }, + }, + { + "Number": 7.0, + "Text": "e5 c2", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 c2 c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 c2 c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 c2 nor" + }, + } + ], + "OptionalReference": { + "Number": 7.0, + "Text": "e5 or", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 or c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 or c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 or nor" + }, + }, + "RequiredReference": { + "Number": 7.0, + "Text": "e5 rr", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 rr c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 rr c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e5 rr nor" + }, + } +} +"""; + + await AdHocCosmosTestHelpers.CreateCustomEntityHelperAsync( + entitiesContainer, + missingRequiredNav, + CancellationToken.None); + + var nullRequiredNav = +$$""" +{ + "Id": 6, + "$type": "Entity", + "Name": "e6", + "id": "6", + "Collection": [ + { + "Number": 7.0, + "Text": "e6 c1", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 c1 c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 c1 c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 c1 nor" + }, + "NestedRequiredReference": null + }, + { + "Number": 7.0, + "Text": "e6 c2", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 c2 c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 c2 c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 c2 nor" + }, + "NestedRequiredReference": null + } + ], + "OptionalReference": { + "Number": 7.0, + "Text": "e6 or", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 or c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 or c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 or nor" + }, + "NestedRequiredReference": null + }, + "RequiredReference": { + "Number": 7.0, + "Text": "e6 rr", + "NestedCollection": [ + { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 rr c1" + }, + { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 rr c2" + } + ], + "NestedOptionalReference": { + "DoB": "2000-01-01T00:00:00", + "Text": "e6 rr nor" + }, + "NestedRequiredReference": null + } +} +"""; + + await AdHocCosmosTestHelpers.CreateCustomEntityHelperAsync( + entitiesContainer, + nullRequiredNav, + CancellationToken.None); + } + + protected TestSqlLoggerFactory TestSqlLoggerFactory + => (TestSqlLoggerFactory)ListLoggerFactory; + + private void AssertSql(params string[] expected) + => TestSqlLoggerFactory.AssertBaseline(expected); + + protected static async Task AssertTranslationFailed(Func query) + => Assert.Contains( + CoreStrings.TranslationFailed("")[48..], + (await Assert.ThrowsAsync(query)) + .Message); + + protected override DbContextOptionsBuilder AddOptions(DbContextOptionsBuilder builder) + => builder.ConfigureWarnings(b => b.Ignore(CosmosEventId.NoPartitionKeyDefined)); + + protected override ITestStoreFactory TestStoreFactory + => CosmosTestStoreFactory.Instance; +} diff --git a/test/EFCore.Cosmos.FunctionalTests/Query/AdHocMiscellaneousQueryCosmosTest.cs b/test/EFCore.Cosmos.FunctionalTests/Query/AdHocMiscellaneousQueryCosmosTest.cs index e2dd2b90904..9365b6dfc7e 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Query/AdHocMiscellaneousQueryCosmosTest.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Query/AdHocMiscellaneousQueryCosmosTest.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.ComponentModel.DataAnnotations.Schema; +using Microsoft.EntityFrameworkCore.Cosmos.Storage.Internal; namespace Microsoft.EntityFrameworkCore.Query; @@ -9,6 +10,144 @@ namespace Microsoft.EntityFrameworkCore.Query; public class AdHocMiscellaneousQueryCosmosTest : NonSharedModelTestBase { + #region 21006 + + [ConditionalFact] + public virtual async Task Project_all_types_entity_with_missing_scalars() + { + var contextFactory = await InitializeAsync( + onModelCreating: OnModelCreating21006, + seed: Seed21006); + + await using var context = contextFactory.CreateContext(); + + var query = context.Set(); + + var result = await query.ToListAsync(); + } + + public void OnModelCreating21006(ModelBuilder modelBuilder) + { + modelBuilder.Entity(b => + { + b.Property(x => x.Id).ValueGeneratedNever(); + b.ToContainer("Entities"); + b.Property(x => x.TestDecimal).HasPrecision(18, 3); + b.OwnsOne(x => x.Reference, bb => + { + bb.Property(x => x.TestDecimal).HasPrecision(18, 3); + bb.Property(x => x.TestEnumWithIntConverter).HasConversion(); + }); + }); + } + + protected async Task Seed21006(JsonContext21006 context) + { + var wrapper = (CosmosClientWrapper)context.GetService(); + var singletonWrapper = context.GetService(); + var entitiesContainer = singletonWrapper.Client.GetContainer(StoreName, containerId: "Entities"); + + var missingTopLevel = +$$""" +{ + "Id": 1, + "$type": "Entity", + "id": "1", + "Reference": { + "Text": "e2 or" + } +} +"""; + + await AdHocCosmosTestHelpers.CreateCustomEntityHelperAsync( + entitiesContainer, + missingTopLevel, + CancellationToken.None); + } + + protected class JsonContext21006(DbContextOptions options) : DbContext(options) + { + public DbSet Entities { get; set; } + + public class Entity + { + public int Id { get; set; } + + public short TestInt16 { get; set; } + public int TestInt32 { get; set; } + public long TestInt64 { get; set; } + public double TestDouble { get; set; } + public decimal TestDecimal { get; set; } + public DateTime TestDateTime { get; set; } + public DateTimeOffset TestDateTimeOffset { get; set; } + public TimeSpan TestTimeSpan { get; set; } + public DateOnly TestDateOnly { get; set; } + public TimeOnly TestTimeOnly { get; set; } + public float TestSingle { get; set; } + public bool TestBoolean { get; set; } + public byte TestByte { get; set; } + + public byte[] TestByteArray { get; set; } + public Guid TestGuid { get; set; } + public ushort TestUnsignedInt16 { get; set; } + public uint TestUnsignedInt32 { get; set; } + public ulong TestUnsignedInt64 { get; set; } + public char TestCharacter { get; set; } + public sbyte TestSignedByte { get; set; } + public int? TestNullableInt32 { get; set; } + public JsonEnum TestEnum { get; set; } + public byte[] TestByteCollection { get; set; } + public IList TestUnsignedInt16Collection { get; set; } + public uint[] TestUnsignedInt32Collection { get; set; } + public sbyte[] TestSignedByteCollection { get; set; } + public JsonEntity Reference { get; set; } + } + + public class JsonEntity + { + public string Text { get; set; } + + public short TestInt16 { get; set; } + public int TestInt32 { get; set; } + public long TestInt64 { get; set; } + public double TestDouble { get; set; } + public decimal TestDecimal { get; set; } + public DateTime TestDateTime { get; set; } + public DateTimeOffset TestDateTimeOffset { get; set; } + public TimeSpan TestTimeSpan { get; set; } + public DateOnly TestDateOnly { get; set; } + public TimeOnly TestTimeOnly { get; set; } + public float TestSingle { get; set; } + public bool TestBoolean { get; set; } + public byte TestByte { get; set; } + public byte[] TestByteArray { get; set; } + public Guid TestGuid { get; set; } + public ushort TestUnsignedInt16 { get; set; } + public uint TestUnsignedInt32 { get; set; } + public ulong TestUnsignedInt64 { get; set; } + public char TestCharacter { get; set; } + public sbyte TestSignedByte { get; set; } + public int? TestNullableInt32 { get; set; } + public JsonEnum TestEnum { get; set; } + public JsonEnum TestEnumWithIntConverter { get; set; } + + public byte[] TestByteCollection { get; set; } + public IList TestUnsignedInt16Collection { get; set; } + public uint[] TestUnsignedInt32Collection { get; set; } + + public sbyte[] TestSignedByteCollection { get; set; } + } + + public enum JsonEnum + { + One = -1, + Two = 2, + Three = -3 + } + } + + #endregion + #region 34911 [ConditionalFact] diff --git a/test/EFCore.InMemory.FunctionalTests/InMemoryComplianceTest.cs b/test/EFCore.InMemory.FunctionalTests/InMemoryComplianceTest.cs index dccb622b444..6a0766d9844 100644 --- a/test/EFCore.InMemory.FunctionalTests/InMemoryComplianceTest.cs +++ b/test/EFCore.InMemory.FunctionalTests/InMemoryComplianceTest.cs @@ -25,6 +25,7 @@ public class InMemoryComplianceTest : ComplianceTestBase typeof(NonSharedModelBulkUpdatesTestBase), typeof(NorthwindBulkUpdatesTestBase<>), typeof(JsonQueryTestBase<>), + typeof(AdHocJsonQueryTestBase), }; protected override Assembly TargetAssembly { get; } = typeof(InMemoryComplianceTest).Assembly; diff --git a/test/EFCore.Relational.Specification.Tests/Query/AdHocJsonQueryTestBase.cs b/test/EFCore.Relational.Specification.Tests/Query/AdHocJsonQueryRelationalTestBase.cs similarity index 95% rename from test/EFCore.Relational.Specification.Tests/Query/AdHocJsonQueryTestBase.cs rename to test/EFCore.Relational.Specification.Tests/Query/AdHocJsonQueryRelationalTestBase.cs index d7461ae71fe..7d0d00e4a56 100644 --- a/test/EFCore.Relational.Specification.Tests/Query/AdHocJsonQueryTestBase.cs +++ b/test/EFCore.Relational.Specification.Tests/Query/AdHocJsonQueryRelationalTestBase.cs @@ -5,15 +5,50 @@ namespace Microsoft.EntityFrameworkCore.Query; #nullable disable -public abstract class AdHocJsonQueryTestBase : NonSharedModelTestBase +public abstract class AdHocJsonQueryRelationalTestBase : AdHocJsonQueryTestBase { - protected override string StoreName - => "AdHocJsonQueryTest"; + #region 21006 - protected virtual void ConfigureWarnings(WarningsConfigurationBuilder builder) + public override async Task Project_missing_required_navigation(bool async) { + var message = (await Assert.ThrowsAsync( + () => base.Project_missing_required_navigation(async))).Message; + + Assert.Equal(RelationalStrings.JsonRequiredEntityWithNullJson(typeof(Context21006.JsonEntityNested).Name), message); + } + + public override async Task Project_null_required_navigation(bool async) + { + var message = (await Assert.ThrowsAsync( + () => base.Project_null_required_navigation(async))).Message; + + Assert.Equal(RelationalStrings.JsonRequiredEntityWithNullJson(typeof(Context21006.JsonEntityNested).Name), message); } + public override async Task Project_top_level_entity_with_null_value_required_scalars(bool async) + { + var message = (await Assert.ThrowsAsync( + () => base.Project_top_level_entity_with_null_value_required_scalars(async))).Message; + + Assert.Equal("Cannot get the value of a token type 'Null' as a number.", message); + } + + protected override void OnModelCreating21006(ModelBuilder modelBuilder) + { + base.OnModelCreating21006(modelBuilder); + + modelBuilder.Entity( + b => + { + b.ToTable("Entities"); + b.OwnsOne(x => x.OptionalReference).ToJson(); + b.OwnsOne(x => x.RequiredReference).ToJson(); + b.OwnsMany(x => x.Collection).ToJson(); + }); + } + + #endregion + #region 32310 [ConditionalTheory] diff --git a/test/EFCore.Specification.Tests/Query/AdHocJsonQueryTestBase.cs b/test/EFCore.Specification.Tests/Query/AdHocJsonQueryTestBase.cs new file mode 100644 index 00000000000..820b7acc872 --- /dev/null +++ b/test/EFCore.Specification.Tests/Query/AdHocJsonQueryTestBase.cs @@ -0,0 +1,419 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Microsoft.EntityFrameworkCore.Query; + +#nullable disable + +public abstract class AdHocJsonQueryTestBase : NonSharedModelTestBase +{ + protected override string StoreName + => "AdHocJsonQueryTests"; + + protected virtual void ClearLog() + => ListLoggerFactory.Clear(); + + protected virtual void ConfigureWarnings(WarningsConfigurationBuilder builder) + { + } + + #region 21006 + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual async Task Project_root_with_missing_scalars(bool async) + { + var contextFactory = await InitializeAsync( + onConfiguring: b => b.ConfigureWarnings(ConfigureWarnings), + onModelCreating: OnModelCreating21006, + seed: Seed21006); + + await using var context = contextFactory.CreateContext(); + + var query = context.Set().Where(x => x.Id < 4); + + var result = async + ? await query.ToListAsync() + : query.ToList()!; + + var topLevel = result.Single(x => x.Id == 2); + var nested = result.Single(x => x.Id == 3); + + Assert.Equal(default, topLevel.OptionalReference.Number); + Assert.Equal(default, topLevel.RequiredReference.Number); + Assert.True(topLevel.Collection.All(x => x.Number == default)); + + Assert.Equal(default, nested.RequiredReference.NestedRequiredReference.DoB); + Assert.Equal(default, nested.RequiredReference.NestedOptionalReference.DoB); + Assert.Equal(default, nested.OptionalReference.NestedRequiredReference.DoB); + Assert.Equal(default, nested.OptionalReference.NestedOptionalReference.DoB); + Assert.True(nested.Collection.SelectMany(x => x.NestedCollection).All(x => x.DoB == default)); + } + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual async Task Project_top_level_json_entity_with_missing_scalars(bool async) + { + var contextFactory = await InitializeAsync( + onConfiguring: b => b.ConfigureWarnings(ConfigureWarnings), + onModelCreating: OnModelCreating21006, + seed: Seed21006); + + await using var context = contextFactory.CreateContext(); + + var query = context.Set().Where(x => x.Id < 4).Select(x => new + { + x.Id, + x.OptionalReference, + x.RequiredReference, + x.Collection + }).AsNoTracking(); + + var result = async + ? await query.ToListAsync() + : query.ToList(); + + var topLevel = result.Single(x => x.Id == 2); + var nested = result.Single(x => x.Id == 3); + + Assert.Equal(default, topLevel.OptionalReference.Number); + Assert.Equal(default, topLevel.RequiredReference.Number); + Assert.True(topLevel.Collection.All(x => x.Number == default)); + + Assert.Equal(default, nested.RequiredReference.NestedRequiredReference.DoB); + Assert.Equal(default, nested.RequiredReference.NestedOptionalReference.DoB); + Assert.Equal(default, nested.OptionalReference.NestedRequiredReference.DoB); + Assert.Equal(default, nested.OptionalReference.NestedOptionalReference.DoB); + Assert.True(nested.Collection.SelectMany(x => x.NestedCollection).All(x => x.DoB == default)); + } + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual async Task Project_nested_json_entity_with_missing_scalars(bool async) + { + var contextFactory = await InitializeAsync( + onConfiguring: b => b.ConfigureWarnings(ConfigureWarnings), + onModelCreating: OnModelCreating21006, + seed: Seed21006); + + await using var context = contextFactory.CreateContext(); + + var query = context.Set().Where(x => x.Id < 4).Select(x => new + { + x.Id, + x.OptionalReference.NestedOptionalReference, + x.RequiredReference.NestedRequiredReference, + x.Collection[0].NestedCollection + }).AsNoTracking(); + + var result = async + ? await query.ToListAsync() + : query.ToList(); + + var topLevel = result.Single(x => x.Id == 2); + var nested = result.Single(x => x.Id == 3); + + Assert.Equal(default, nested.NestedOptionalReference.DoB); + Assert.Equal(default, nested.NestedRequiredReference.DoB); + Assert.True(nested.NestedCollection.All(x => x.DoB == default)); + } + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual async Task Project_top_level_entity_with_null_value_required_scalars(bool async) + { + var contextFactory = await InitializeAsync( + onConfiguring: b => b.ConfigureWarnings(ConfigureWarnings), + onModelCreating: OnModelCreating21006, + seed: Seed21006); + + await using var context = contextFactory.CreateContext(); + + var query = context.Set().Where(x => x.Id == 4).Select(x => new + { + x.Id, + x.RequiredReference, + }).AsNoTracking(); + + var result = async + ? await query.ToListAsync() + : query.ToList(); + + var nullScalars = result.Single(); + + Assert.Equal(default, nullScalars.RequiredReference.Number); + } + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual async Task Project_root_entity_with_missing_required_navigation(bool async) + { + var contextFactory = await InitializeAsync( + onConfiguring: b => b.ConfigureWarnings(ConfigureWarnings), + onModelCreating: OnModelCreating21006, + seed: Seed21006); + + await using var context = contextFactory.CreateContext(); + + var query = context.Set().Where(x => x.Id == 5).AsNoTracking(); + + var result = async + ? await query.ToListAsync() + : query.ToList(); + + var missingRequiredNav = result.Single(); + + Assert.Equal(default, missingRequiredNav.RequiredReference.NestedRequiredReference); + Assert.Equal(default, missingRequiredNav.OptionalReference.NestedRequiredReference); + Assert.True(missingRequiredNav.Collection.All(x => x.NestedRequiredReference == default)); + } + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual async Task Project_missing_required_navigation(bool async) + { + var contextFactory = await InitializeAsync( + onConfiguring: b => b.ConfigureWarnings(ConfigureWarnings), + onModelCreating: OnModelCreating21006, + seed: Seed21006); + + await using var context = contextFactory.CreateContext(); + + var query = context.Set().Where(x => x.Id == 5).Select(x => x.RequiredReference.NestedRequiredReference).AsNoTracking(); + + var result = async + ? await query.ToListAsync() + : query.ToList(); + + var missingRequiredNav = result.Single(); + + Assert.Equal(default, missingRequiredNav); + } + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual async Task Project_root_entity_with_null_required_navigation(bool async) + { + var contextFactory = await InitializeAsync( + onConfiguring: b => b.ConfigureWarnings(ConfigureWarnings), + onModelCreating: OnModelCreating21006, + seed: Seed21006); + + await using var context = contextFactory.CreateContext(); + + var query = context.Set().Where(x => x.Id == 6).AsNoTracking(); + + var result = async + ? await query.ToListAsync() + : query.ToList(); + + var nullRequiredNav = result.Single(); + + Assert.Equal(default, nullRequiredNav.RequiredReference.NestedRequiredReference); + Assert.Equal(default, nullRequiredNav.OptionalReference.NestedRequiredReference); + Assert.True(nullRequiredNav.Collection.All(x => x.NestedRequiredReference == default)); + } + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual async Task Project_null_required_navigation(bool async) + { + var contextFactory = await InitializeAsync( + onConfiguring: b => b.ConfigureWarnings(ConfigureWarnings), + onModelCreating: OnModelCreating21006, + seed: Seed21006); + + await using var context = contextFactory.CreateContext(); + + var query = context.Set().Where(x => x.Id == 6).Select(x => x.RequiredReference).AsNoTracking(); + + var result = async + ? await query.ToListAsync() + : query.ToList(); + + var nullRequiredNav = result.Single(); + + Assert.Equal(default, nullRequiredNav.NestedRequiredReference); + } + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual async Task Project_missing_required_scalar(bool async) + { + var contextFactory = await InitializeAsync( + onConfiguring: b => b.ConfigureWarnings(ConfigureWarnings), + onModelCreating: OnModelCreating21006, + seed: Seed21006); + + await using var context = contextFactory.CreateContext(); + + var query = context.Set() + .Where(x => x.Id == 2) + .Select(x => new + { + x.Id, + Number = (double?)x.RequiredReference.Number + }); + + var result = async + ? await query.ToListAsync() + : query.ToList(); + + Assert.Null(result.Single().Number); + } + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual async Task Project_null_required_scalar(bool async) + { + var contextFactory = await InitializeAsync( + onConfiguring: b => b.ConfigureWarnings(ConfigureWarnings), + onModelCreating: OnModelCreating21006, + seed: Seed21006); + + await using var context = contextFactory.CreateContext(); + + var query = context.Set() + .Where(x => x.Id == 4) + .Select(x => new + { + x.Id, + Number = (double?)x.RequiredReference.Number, + }); + + var result = async + ? await query.ToListAsync() + : query.ToList(); + + Assert.Null(result.Single().Number); + } + + protected virtual void OnModelCreating21006(ModelBuilder modelBuilder) + => modelBuilder.Entity( + b => + { + b.Property(x => x.Id).ValueGeneratedNever(); + b.OwnsOne( + x => x.OptionalReference, bb => + { + bb.OwnsOne(x => x.NestedOptionalReference); + bb.OwnsOne(x => x.NestedRequiredReference); + bb.Navigation(x => x.NestedRequiredReference).IsRequired(); + bb.OwnsMany(x => x.NestedCollection); + }); + b.OwnsOne( + x => x.RequiredReference, bb => + { + bb.OwnsOne(x => x.NestedOptionalReference); + bb.OwnsOne(x => x.NestedRequiredReference); + bb.Navigation(x => x.NestedRequiredReference).IsRequired(); + bb.OwnsMany(x => x.NestedCollection); + }); + b.Navigation(x => x.RequiredReference).IsRequired(); + b.OwnsMany( + x => x.Collection, bb => + { + bb.OwnsOne(x => x.NestedOptionalReference); + bb.OwnsOne(x => x.NestedRequiredReference); + bb.Navigation(x => x.NestedRequiredReference).IsRequired(); + bb.OwnsMany(x => x.NestedCollection); + }); + }); + + protected virtual async Task Seed21006(Context21006 context) + { + // everything + var e1 = new Context21006.Entity + { + Id = 1, + Name = "e1", + OptionalReference = new Context21006.JsonEntity + { + Number = 7, + Text = "e1 or", + NestedOptionalReference = new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 or nor" }, + NestedRequiredReference = new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 or nrr" }, + NestedCollection = new List + { + new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 or c1" }, + new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 or c2" }, + } + }, + + RequiredReference = new Context21006.JsonEntity + { + Number = 7, + Text = "e1 rr", + NestedOptionalReference = new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 rr nor" }, + NestedRequiredReference = new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 rr nrr" }, + NestedCollection = new List + { + new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 rr c1" }, + new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 rr c2" }, + } + }, + Collection = new List + { + new Context21006.JsonEntity + { + Number = 7, + Text = "e1 c1", + NestedOptionalReference = new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 c1 nor" }, + NestedRequiredReference = new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 c1 nrr" }, + NestedCollection = new List + { + new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 c1 c1" }, + new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 c1 c2" }, + } + }, + new Context21006.JsonEntity + { + Number = 7, + Text = "e1 c2", + NestedOptionalReference = new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 c2 nor" }, + NestedRequiredReference = new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 c2 nrr" }, + NestedCollection = new List + { + new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 c2 c1" }, + new Context21006.JsonEntityNested { DoB = new DateTime(2000, 1, 1), Text = "e1 c2 c2" }, + } + }, + } + }; + + context.Add(e1); + await context.SaveChangesAsync(); + } + + protected class Context21006(DbContextOptions options) : DbContext(options) + { + public DbSet Entities { get; set; } + + public class Entity + { + public int Id { get; set; } + public string Name { get; set; } + public JsonEntity OptionalReference { get; set; } + public JsonEntity RequiredReference { get; set; } + public List Collection { get; set; } + } + + public class JsonEntity + { + public string Text { get; set; } + public double Number { get; set; } + + public JsonEntityNested NestedOptionalReference { get; set; } + public JsonEntityNested NestedRequiredReference { get; set; } + public List NestedCollection { get; set; } + } + + public class JsonEntityNested + { + public DateTime DoB { get; set; } + public string Text { get; set; } + } + } + + #endregion +} diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocJsonQuerySqlServerTestBase.cs b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocJsonQuerySqlServerTestBase.cs index ee179b3d6f4..0143152033d 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/AdHocJsonQuerySqlServerTestBase.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/AdHocJsonQuerySqlServerTestBase.cs @@ -8,7 +8,7 @@ namespace Microsoft.EntityFrameworkCore.Query; -public abstract class AdHocJsonQuerySqlServerTestBase : AdHocJsonQueryTestBase +public abstract class AdHocJsonQuerySqlServerTestBase : AdHocJsonQueryRelationalTestBase { protected override ITestStoreFactory TestStoreFactory => SqlServerTestStoreFactory.Instance; @@ -20,6 +20,184 @@ protected override void ConfigureWarnings(WarningsConfigurationBuilder builder) builder.Log(CoreEventId.StringEnumValueInJson, SqlServerEventId.JsonTypeExperimental); } + protected void AssertSql(params string[] expected) + => TestSqlLoggerFactory.AssertBaseline(expected); + + public override async Task Project_root_with_missing_scalars(bool async) + { + await base.Project_root_with_missing_scalars(async); + + AssertSql( + """ +SELECT [e].[Id], [e].[Name], [e].[Collection], [e].[OptionalReference], [e].[RequiredReference] +FROM [Entities] AS [e] +WHERE [e].[Id] < 4 +"""); + } + + public override async Task Project_top_level_json_entity_with_missing_scalars(bool async) + { + await base.Project_top_level_json_entity_with_missing_scalars(async); + + AssertSql( + """ +SELECT [e].[Id], [e].[OptionalReference], [e].[RequiredReference], [e].[Collection] +FROM [Entities] AS [e] +WHERE [e].[Id] < 4 +"""); + } + + public override async Task Project_nested_json_entity_with_missing_scalars(bool async) + { + await base.Project_nested_json_entity_with_missing_scalars(async); + + AssertSql( +""" +SELECT [e].[Id], JSON_QUERY([e].[OptionalReference], '$.NestedOptionalReference'), JSON_QUERY([e].[RequiredReference], '$.NestedRequiredReference'), JSON_QUERY([e].[Collection], '$[0].NestedCollection') +FROM [Entities] AS [e] +WHERE [e].[Id] < 4 +"""); + } + + public override async Task Project_root_entity_with_missing_required_navigation(bool async) + { + await base.Project_root_entity_with_missing_required_navigation(async); + + AssertSql( + """ +SELECT [e].[Id], [e].[Name], [e].[Collection], [e].[OptionalReference], [e].[RequiredReference] +FROM [Entities] AS [e] +WHERE [e].[Id] = 5 +"""); + } + + + public override async Task Project_missing_required_navigation(bool async) + { + await base.Project_missing_required_navigation(async); + + AssertSql( + """ +SELECT JSON_QUERY([e].[RequiredReference], '$.NestedRequiredReference'), [e].[Id] +FROM [Entities] AS [e] +WHERE [e].[Id] = 5 +"""); + } + + public override async Task Project_root_entity_with_null_required_navigation(bool async) + { + await base.Project_root_entity_with_null_required_navigation(async); + + AssertSql( + """ +SELECT [e].[Id], [e].[Name], [e].[Collection], [e].[OptionalReference], [e].[RequiredReference] +FROM [Entities] AS [e] +WHERE [e].[Id] = 6 +"""); + } + + public override async Task Project_null_required_navigation(bool async) + { + await base.Project_null_required_navigation(async); + + AssertSql( + """ +SELECT [e].[RequiredReference], [e].[Id] +FROM [Entities] AS [e] +WHERE [e].[Id] = 6 +"""); + } + + public override async Task Project_missing_required_scalar(bool async) + { + await base.Project_missing_required_scalar(async); + + AssertSql( + """ +SELECT [e].[Id], CAST(JSON_VALUE([e].[RequiredReference], '$.Number') AS float) AS [Number] +FROM [Entities] AS [e] +WHERE [e].[Id] = 2 +"""); + } + + public override async Task Project_null_required_scalar(bool async) + { + await base.Project_null_required_scalar(async); + + AssertSql( + """ +SELECT [e].[Id], CAST(JSON_VALUE([e].[RequiredReference], '$.Number') AS float) AS [Number] +FROM [Entities] AS [e] +WHERE [e].[Id] = 4 +"""); + } + + protected override async Task Seed21006(Context21006 context) + { + await base.Seed21006(context); + + // missing scalar on top level + await context.Database.ExecuteSqlAsync( + $$$""" +INSERT INTO [Entities] ([Collection], [OptionalReference], [RequiredReference], [Id], [Name]) +VALUES ( +N'[{"Text":"e2 c1","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e2 c1 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e2 c1 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 c1 nor"},"NestedRequiredReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 c1 nrr"}},{"Text":"e2 c2","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e2 c2 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e2 c2 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 c2 nor"},"NestedRequiredReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 c2 nrr"}}]', +N'{"Text":"e2 or","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e2 or c1"},{"DoB":"2000-01-01T00:00:00","Text":"e2 or c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 or nor"},"NestedRequiredReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 or nrr"}}', +N'{"Text":"e2 rr","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e2 rr c1"},{"DoB":"2000-01-01T00:00:00","Text":"e2 rr c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 rr nor"},"NestedRequiredReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 rr nrr"}}', +2, +N'e2') +"""); + + // missing scalar on nested level + await context.Database.ExecuteSqlAsync( + $$$""" +INSERT INTO [Entities] ([Collection], [OptionalReference], [RequiredReference], [Id], [Name]) +VALUES ( +N'[{"Number":7,"Text":"e3 c1","NestedCollection":[{"Text":"e3 c1 c1"},{"Text":"e3 c1 c2"}],"NestedOptionalReference":{"Text":"e3 c1 nor"},"NestedRequiredReference":{"Text":"e3 c1 nrr"}},{"Number":7,"Text":"e3 c2","NestedCollection":[{"Text":"e3 c2 c1"},{"Text":"e3 c2 c2"}],"NestedOptionalReference":{"Text":"e3 c2 nor"},"NestedRequiredReference":{"Text":"e3 c2 nrr"}}]', +N'{"Number":7,"Text":"e3 or","NestedCollection":[{"Text":"e3 or c1"},{"Text":"e3 or c2"}],"NestedOptionalReference":{"Text":"e3 or nor"},"NestedRequiredReference":{"Text":"e3 or nrr"}}', +N'{"Number":7,"Text":"e3 rr","NestedCollection":[{"Text":"e3 rr c1"},{"Text":"e3 rr c2"}],"NestedOptionalReference":{"Text":"e3 rr nor"},"NestedRequiredReference":{"Text":"e3 rr nrr"}}', +3, +N'e3') +"""); + + // null scalar on top level + await context.Database.ExecuteSqlAsync( + $$$""" +INSERT INTO [Entities] ([Collection], [OptionalReference], [RequiredReference], [Id], [Name]) +VALUES ( +N'[{"Number":null,"Text":"e4 c1","NestedCollection":[{"Text":"e4 c1 c1"},{"Text":"e4 c1 c2"}],"NestedOptionalReference":{"Text":"e4 c1 nor"},"NestedRequiredReference":{"Text":"e4 c1 nrr"}},{"Number":null,"Text":"e4 c2","NestedCollection":[{"Text":"e4 c2 c1"},{"Text":"e4 c2 c2"}],"NestedOptionalReference":{"Text":"e4 c2 nor"},"NestedRequiredReference":{"Text":"e4 c2 nrr"}}]', +N'{"Number":null,"Text":"e4 or","NestedCollection":[{"Text":"e4 or c1"},{"Text":"e4 or c2"}],"NestedOptionalReference":{"Text":"e4 or nor"},"NestedRequiredReference":{"Text":"e4 or nrr"}}', +N'{"Number":null,"Text":"e4 rr","NestedCollection":[{"Text":"e4 rr c1"},{"Text":"e4 rr c2"}],"NestedOptionalReference":{"Text":"e4 rr nor"},"NestedRequiredReference":{"Text":"e4 rr nrr"}}', +4, +N'e4') +"""); + + // missing required navigation + await context.Database.ExecuteSqlAsync( + $$$""" +INSERT INTO [Entities] ([Collection], [OptionalReference], [RequiredReference], [Id], [Name]) +VALUES ( +N'[{"Number":7,"Text":"e5 c1","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e5 c1 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e5 c1 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e5 c1 nor"}},{"Number":7,"Text":"e5 c2","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e5 c2 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e5 c2 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e5 c2 nor"}}]', +N'{"Number":7,"Text":"e5 or","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e5 or c1"},{"DoB":"2000-01-01T00:00:00","Text":"e5 or c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e5 or nor"}}', +N'{"Number":7,"Text":"e5 rr","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e5 rr c1"},{"DoB":"2000-01-01T00:00:00","Text":"e5 rr c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e5 rr nor"}}', +5, +N'e5') +"""); + + // null required navigation + await context.Database.ExecuteSqlAsync( + $$$""" +INSERT INTO [Entities] ([Collection], [OptionalReference], [RequiredReference], [Id], [Name]) +VALUES ( +N'[{"Number":7,"Text":"e6 c1","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e6 c1 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e6 c1 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e6 c1 nor"},"NestedRequiredReference":null},{"Number":7,"Text":"e6 c2","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e6 c2 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e6 c2 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e6 c2 nor"},"NestedRequiredReference":null}]', +N'{"Number":7,"Text":"e6 or","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e6 or c1"},{"DoB":"2000-01-01T00:00:00","Text":"e6 or c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e6 or nor"},"NestedRequiredReference":null}', +N'{"Number":7,"Text":"e6 rr","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e6 rr c1"},{"DoB":"2000-01-01T00:00:00","Text":"e6 rr c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e6 rr nor"},"NestedRequiredReference":null}', +6, +N'e6') +"""); + } + + protected override async Task Seed29219(DbContext ctx) { var entity1 = new MyEntity29219 diff --git a/test/EFCore.Sqlite.FunctionalTests/Query/AdHocJsonQuerySqliteTest.cs b/test/EFCore.Sqlite.FunctionalTests/Query/AdHocJsonQuerySqliteTest.cs index c0e0a9b94a4..04dbe7f77aa 100644 --- a/test/EFCore.Sqlite.FunctionalTests/Query/AdHocJsonQuerySqliteTest.cs +++ b/test/EFCore.Sqlite.FunctionalTests/Query/AdHocJsonQuerySqliteTest.cs @@ -5,11 +5,76 @@ namespace Microsoft.EntityFrameworkCore.Query; #nullable disable -public class AdHocJsonQuerySqliteTest : AdHocJsonQueryTestBase +public class AdHocJsonQuerySqliteTest : AdHocJsonQueryRelationalTestBase { protected override ITestStoreFactory TestStoreFactory => SqliteTestStoreFactory.Instance; + protected override async Task Seed21006(Context21006 context) + { + await base.Seed21006(context); + + // missing scalar on top level + await context.Database.ExecuteSqlAsync( + $$$""" +INSERT INTO "Entities" ("Collection", "OptionalReference", "RequiredReference", "Id", "Name") +VALUES ( +'[{"Text":"e2 c1","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e2 c1 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e2 c1 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 c1 nor"},"NestedRequiredReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 c1 nrr"}},{"Text":"e2 c2","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e2 c2 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e2 c2 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 c2 nor"},"NestedRequiredReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 c2 nrr"}}]', +'{"Text":"e2 or","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e2 or c1"},{"DoB":"2000-01-01T00:00:00","Text":"e2 or c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 or nor"},"NestedRequiredReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 or nrr"}}', +'{"Text":"e2 rr","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e2 rr c1"},{"DoB":"2000-01-01T00:00:00","Text":"e2 rr c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 rr nor"},"NestedRequiredReference":{"DoB":"2000-01-01T00:00:00","Text":"e2 rr nrr"}}', +2, +'e2') +"""); + + // missing scalar on nested level + await context.Database.ExecuteSqlAsync( + $$$""" +INSERT INTO "Entities" ("Collection", "OptionalReference", "RequiredReference", "Id", "Name") +VALUES ( +'[{"Number":7,"Text":"e3 c1","NestedCollection":[{"Text":"e3 c1 c1"},{"Text":"e3 c1 c2"}],"NestedOptionalReference":{"Text":"e3 c1 nor"},"NestedRequiredReference":{"Text":"e3 c1 nrr"}},{"Number":7,"Text":"e3 c2","NestedCollection":[{"Text":"e3 c2 c1"},{"Text":"e3 c2 c2"}],"NestedOptionalReference":{"Text":"e3 c2 nor"},"NestedRequiredReference":{"Text":"e3 c2 nrr"}}]', +'{"Number":7,"Text":"e3 or","NestedCollection":[{"Text":"e3 or c1"},{"Text":"e3 or c2"}],"NestedOptionalReference":{"Text":"e3 or nor"},"NestedRequiredReference":{"Text":"e3 or nrr"}}', +'{"Number":7,"Text":"e3 rr","NestedCollection":[{"Text":"e3 rr c1"},{"Text":"e3 rr c2"}],"NestedOptionalReference":{"Text":"e3 rr nor"},"NestedRequiredReference":{"Text":"e3 rr nrr"}}', +3, +'e3') +"""); + + // null scalar on top level + await context.Database.ExecuteSqlAsync( + $$$""" +INSERT INTO [Entities] ("Collection", "OptionalReference", "RequiredReference", "Id", "Name") +VALUES ( +'[{"Number":null,"Text":"e4 c1","NestedCollection":[{"Text":"e4 c1 c1"},{"Text":"e4 c1 c2"}],"NestedOptionalReference":{"Text":"e4 c1 nor"},"NestedRequiredReference":{"Text":"e4 c1 nrr"}},{"Number":null,"Text":"e4 c2","NestedCollection":[{"Text":"e4 c2 c1"},{"Text":"e4 c2 c2"}],"NestedOptionalReference":{"Text":"e4 c2 nor"},"NestedRequiredReference":{"Text":"e4 c2 nrr"}}]', +'{"Number":null,"Text":"e4 or","NestedCollection":[{"Text":"e4 or c1"},{"Text":"e4 or c2"}],"NestedOptionalReference":{"Text":"e4 or nor"},"NestedRequiredReference":{"Text":"e4 or nrr"}}', +'{"Number":null,"Text":"e4 rr","NestedCollection":[{"Text":"e4 rr c1"},{"Text":"e4 rr c2"}],"NestedOptionalReference":{"Text":"e4 rr nor"},"NestedRequiredReference":{"Text":"e4 rr nrr"}}', +4, +'e4') +"""); + + // missing required navigation + await context.Database.ExecuteSqlAsync( + $$$""" +INSERT INTO "Entities" ("Collection", "OptionalReference", "RequiredReference", "Id", "Name") +VALUES ( +'[{"Number":7,"Text":"e5 c1","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e5 c1 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e5 c1 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e5 c1 nor"}},{"Number":7,"Text":"e5 c2","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e5 c2 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e5 c2 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e5 c2 nor"}}]', +'{"Number":7,"Text":"e5 or","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e5 or c1"},{"DoB":"2000-01-01T00:00:00","Text":"e5 or c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e5 or nor"}}', +'{"Number":7,"Text":"e5 rr","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e5 rr c1"},{"DoB":"2000-01-01T00:00:00","Text":"e5 rr c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e5 rr nor"}}', +5, +'e5') +"""); + + // null required navigation + await context.Database.ExecuteSqlAsync( + $$$""" +INSERT INTO "Entities" ("Collection", "OptionalReference", "RequiredReference", "Id", "Name") +VALUES ( +'[{"Number":7,"Text":"e6 c1","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e6 c1 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e6 c1 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e6 c1 nor"},"NestedRequiredReference":null},{"Number":7,"Text":"e6 c2","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e6 c2 c1"},{"DoB":"2000-01-01T00:00:00","Text":"e6 c2 c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e6 c2 nor"},"NestedRequiredReference":null}]', +'{"Number":7,"Text":"e6 or","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e6 or c1"},{"DoB":"2000-01-01T00:00:00","Text":"e6 or c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e6 or nor"},"NestedRequiredReference":null}', +'{"Number":7,"Text":"e6 rr","NestedCollection":[{"DoB":"2000-01-01T00:00:00","Text":"e6 rr c1"},{"DoB":"2000-01-01T00:00:00","Text":"e6 rr c2"}],"NestedOptionalReference":{"DoB":"2000-01-01T00:00:00","Text":"e6 rr nor"},"NestedRequiredReference":null}', +6, +'e6') +"""); + } + protected override async Task Seed29219(DbContext ctx) { var entity1 = new MyEntity29219 From becaf2e4137efe8df1aa232d7bd0acb6e640fc84 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 14 Mar 2025 23:06:49 +0000 Subject: [PATCH 42/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250314.9 Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 From Version 8.0.15-servicing.25162.16 -> To Version 8.0.15-servicing.25164.9 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 14 +++++++------- eng/Versions.props | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/NuGet.config b/NuGet.config index 27620da33a3..d361865f016 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -19,7 +19,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 230f95b76b9..4e7b0b3fef1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -29,9 +29,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6eee28c27213784c1f8a112df1c90113585c4111 + f64f43502df9ae0b087be92136fa2242091b3145 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -39,7 +39,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6eee28c27213784c1f8a112df1c90113585c4111 + f64f43502df9ae0b087be92136fa2242091b3145 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -47,16 +47,16 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6eee28c27213784c1f8a112df1c90113585c4111 + f64f43502df9ae0b087be92136fa2242091b3145 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6eee28c27213784c1f8a112df1c90113585c4111 + f64f43502df9ae0b087be92136fa2242091b3145 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6eee28c27213784c1f8a112df1c90113585c4111 + f64f43502df9ae0b087be92136fa2242091b3145 diff --git a/eng/Versions.props b/eng/Versions.props index cdfbc34f757..cac6f8c99a4 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,13 +24,13 @@ 8.0.1 8.0.1 8.0.2 - 8.0.15-servicing.25162.16 + 8.0.15-servicing.25164.9 8.0.1 8.0.5 8.0.2 8.0.15 8.0.15 - 8.0.15-servicing.25162.16 + 8.0.15-servicing.25164.9 8.0.0-beta.25120.1 From 9c05314bb5907e8c6fbdb1b1a7b784b7c686daf2 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Sat, 15 Mar 2025 07:25:34 +0000 Subject: [PATCH 43/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250314.13 Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 From Version 8.0.15-servicing.25162.16 -> To Version 8.0.15-servicing.25164.13 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 14 +++++++------- eng/Versions.props | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/NuGet.config b/NuGet.config index d361865f016..3d215f31160 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -19,7 +19,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4e7b0b3fef1..b76f4bcfdf3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -29,9 +29,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f64f43502df9ae0b087be92136fa2242091b3145 + 50c4cb9fc31c47f03eac865d7bc518af173b74b7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -39,7 +39,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f64f43502df9ae0b087be92136fa2242091b3145 + 50c4cb9fc31c47f03eac865d7bc518af173b74b7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -47,16 +47,16 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f64f43502df9ae0b087be92136fa2242091b3145 + 50c4cb9fc31c47f03eac865d7bc518af173b74b7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f64f43502df9ae0b087be92136fa2242091b3145 + 50c4cb9fc31c47f03eac865d7bc518af173b74b7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f64f43502df9ae0b087be92136fa2242091b3145 + 50c4cb9fc31c47f03eac865d7bc518af173b74b7 diff --git a/eng/Versions.props b/eng/Versions.props index cac6f8c99a4..cac169bbad6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,13 +24,13 @@ 8.0.1 8.0.1 8.0.2 - 8.0.15-servicing.25164.9 + 8.0.15-servicing.25164.13 8.0.1 8.0.5 8.0.2 8.0.15 8.0.15 - 8.0.15-servicing.25164.9 + 8.0.15-servicing.25164.13 8.0.0-beta.25120.1 From 5d66db4bc7d62c46393db4d05267cee07e5a80bc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 06:09:00 +0000 Subject: [PATCH 44/79] Update dependencies from https://github.com/dotnet/arcade build 20250314.2 (#35795) [release/9.0] Update dependencies from dotnet/arcade --- NuGet.config | 6 ------ eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- eng/common/tools.ps1 | 4 ++-- eng/common/tools.sh | 4 ++-- global.json | 4 ++-- 6 files changed, 13 insertions(+), 19 deletions(-) diff --git a/NuGet.config b/NuGet.config index 72b77389930..d1a8a417e43 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,9 +4,6 @@ - - - @@ -23,9 +20,6 @@ - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5a8e4717320..3c048f65548 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - f33d9e642f0e68a61312164cd9e0baf4e142a999 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - f33d9e642f0e68a61312164cd9e0baf4e142a999 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee - + https://github.com/dotnet/arcade - f33d9e642f0e68a61312164cd9e0baf4e142a999 + 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee diff --git a/eng/Versions.props b/eng/Versions.props index f70ffcf2fdf..9b12c7525aa 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.3 - 9.0.0-beta.25161.4 + 9.0.0-beta.25164.2 17.8.3 diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index a46b6deb759..22b49e09d09 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -42,7 +42,7 @@ [bool]$useInstalledDotNetCli = if (Test-Path variable:useInstalledDotNetCli) { $useInstalledDotNetCli } else { $true } # Enable repos to use a particular version of the on-line dotnet-install scripts. -# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1 +# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.ps1 [string]$dotnetInstallScriptVersion = if (Test-Path variable:dotnetInstallScriptVersion) { $dotnetInstallScriptVersion } else { 'v1' } # True to use global NuGet cache instead of restoring packages to repository-local directory. @@ -262,7 +262,7 @@ function GetDotNetInstallScript([string] $dotnetRoot) { if (!(Test-Path $installScript)) { Create-Directory $dotnetRoot $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit - $uri = "https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1" + $uri = "https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1" Retry({ Write-Host "GET $uri" diff --git a/eng/common/tools.sh b/eng/common/tools.sh index 1159726a10f..01b09b65796 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -54,7 +54,7 @@ warn_as_error=${warn_as_error:-true} use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} # Enable repos to use a particular version of the on-line dotnet-install scripts. -# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh +# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. @@ -295,7 +295,7 @@ function with_retries { function GetDotNetInstallScript { local root=$1 local install_script="$root/dotnet-install.sh" - local install_script_url="https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh" + local install_script_url="https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh" if [[ ! -a "$install_script" ]]; then mkdir -p "$root" diff --git a/global.json b/global.json index 61faa20a7a5..101ff3fceb7 100644 --- a/global.json +++ b/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25161.4", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25161.4" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25164.2", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25164.2" } } From ab2e3cc2e07c1cafda973c05fccccbf1520125a8 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Wed, 2 Apr 2025 13:53:18 -0700 Subject: [PATCH 45/79] Update branding to 9.0.5 (#35889) --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 9b12c7525aa..9a62d591ec4 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 9.0.4 + 9.0.5 rtm From b991582fa07a2ee24abb5660ba8a6acb0c776244 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Wed, 2 Apr 2025 14:37:22 -0700 Subject: [PATCH 46/79] Update branding to 8.0.16 (#35888) --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index b8e5ef5f151..4bd5f2e7799 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 8.0.15 + 8.0.16 servicing From 2727815e24c72a0a8408a7a240a6dbf48bb0a993 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 3 Apr 2025 00:05:10 +0000 Subject: [PATCH 47/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250402.8 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Logging , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 , System.Text.Encodings.Web , System.Text.Json From Version 9.0.4 -> To Version 9.0.4 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 34 +++++++++++++++++----------------- eng/Versions.props | 4 ++-- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/NuGet.config b/NuGet.config index e6046bdda5d..bcee0f2d1f1 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3375a715882..f9c493eb438 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,47 +3,47 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f57e6dc747158ab7ade4e62a75a6750d16b771e8 + f80f87ea7e722c482ab9a81509d8b62aea66989b diff --git a/eng/Versions.props b/eng/Versions.props index e08402c17bc..f030b2fa9e1 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,11 +24,11 @@ 9.0.4 9.0.4 9.0.4 - 9.0.4-servicing.25163.5 + 9.0.4-servicing.25202.8 9.0.4 9.0.4 9.0.4 - 9.0.4-servicing.25163.5 + 9.0.4-servicing.25202.8 9.0.4 9.0.4 9.0.4 From 5109f3b4e312fbc3d3b6af5d159f2412a4e0a8df Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 06:12:56 +0000 Subject: [PATCH 48/79] Update dependencies from https://github.com/dotnet/arcade build 20250404.5 (#35912) [release/9.0] Update dependencies from dotnet/arcade --- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- global.json | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3c048f65548..cfe4be5bc21 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + 97cbc7361ff28b2948c8182720c166a744049f55 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + 97cbc7361ff28b2948c8182720c166a744049f55 - + https://github.com/dotnet/arcade - 5ba9ca776c1d0bb72b2791591e54cf51fc52dfee + 97cbc7361ff28b2948c8182720c166a744049f55 diff --git a/eng/Versions.props b/eng/Versions.props index 9a62d591ec4..739c70b4829 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.3 - 9.0.0-beta.25164.2 + 9.0.0-beta.25204.5 17.8.3 diff --git a/global.json b/global.json index 101ff3fceb7..24cbe202424 100644 --- a/global.json +++ b/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25164.2", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25164.2" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25204.5", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25204.5" } } From 32928fbc57d076dd09709935bcd44bb381f54e44 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 15:05:08 +0000 Subject: [PATCH 49/79] Update dependencies from https://github.com/dotnet/arcade build 20250408.7 (#35930) [release/8.0] Update dependencies from dotnet/arcade --- NuGet.config | 4 ++++ eng/Version.Details.xml | 12 +++++------ eng/Versions.props | 2 +- eng/common/generate-sbom-prep.ps1 | 20 +++++++++++++------ eng/common/generate-sbom-prep.sh | 17 ++++++++++------ eng/common/templates-official/job/job.yml | 3 ++- .../steps/generate-sbom.yml | 2 +- eng/common/tools.ps1 | 4 ++-- eng/common/tools.sh | 4 ++-- global.json | 8 ++++---- 10 files changed, 47 insertions(+), 29 deletions(-) diff --git a/NuGet.config b/NuGet.config index 3d215f31160..ec8464124ac 100644 --- a/NuGet.config +++ b/NuGet.config @@ -5,6 +5,8 @@ + + @@ -19,6 +21,8 @@ + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b76f4bcfdf3..3ec3bc94ab6 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -60,17 +60,17 @@ - + https://github.com/dotnet/arcade - 4ff4ce248e95ae74b0040de6a6c5939aa63120dc + c7a36e53f91e41943746f97a8c183549364c5092 - + https://github.com/dotnet/arcade - 4ff4ce248e95ae74b0040de6a6c5939aa63120dc + c7a36e53f91e41943746f97a8c183549364c5092 - + https://github.com/dotnet/arcade - 4ff4ce248e95ae74b0040de6a6c5939aa63120dc + c7a36e53f91e41943746f97a8c183549364c5092 diff --git a/eng/Versions.props b/eng/Versions.props index 9e13cf7888c..5ac3bf190b0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -33,7 +33,7 @@ 8.0.15-servicing.25164.13 - 8.0.0-beta.25120.1 + 8.0.0-beta.25208.7 diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1 index 3e5c1c74a1c..a0c7d792a76 100644 --- a/eng/common/generate-sbom-prep.ps1 +++ b/eng/common/generate-sbom-prep.ps1 @@ -4,18 +4,26 @@ Param( . $PSScriptRoot\pipeline-logging-functions.ps1 +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" +$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_' +$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName + +Write-Host "Artifact name before : $ArtifactName" +Write-Host "Artifact name after : $SafeArtifactName" + Write-Host "Creating dir $ManifestDirPath" + # create directory for sbom manifest to be placed -if (!(Test-Path -path $ManifestDirPath)) +if (!(Test-Path -path $SbomGenerationDir)) { - New-Item -ItemType Directory -path $ManifestDirPath - Write-Host "Successfully created directory $ManifestDirPath" + New-Item -ItemType Directory -path $SbomGenerationDir + Write-Host "Successfully created directory $SbomGenerationDir" } else{ Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." } Write-Host "Updating artifact name" -$artifact_name = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" -replace '["/:<>\\|?@*"() ]', '_' -Write-Host "Artifact name $artifact_name" -Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$artifact_name" +Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName" diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh index d5c76dc827b..bbb4922151e 100644 --- a/eng/common/generate-sbom-prep.sh +++ b/eng/common/generate-sbom-prep.sh @@ -14,19 +14,24 @@ done scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" . $scriptroot/pipeline-logging-functions.sh +# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. +artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" +safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" + manifest_dir=$1 -if [ ! -d "$manifest_dir" ] ; then - mkdir -p "$manifest_dir" - echo "Sbom directory created." $manifest_dir +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +sbom_generation_dir="$manifest_dir/$safe_artifact_name" + +if [ ! -d "$sbom_generation_dir" ] ; then + mkdir -p "$sbom_generation_dir" + echo "Sbom directory created." $sbom_generation_dir else Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." fi -artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" echo "Artifact name before : "$artifact_name -# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. -safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" echo "Artifact name after : "$safe_artifact_name export ARTIFACT_NAME=$safe_artifact_name echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name" diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index 1f035fee73f..98ccbd7a9c1 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -38,6 +38,7 @@ parameters: enableSbom: true PackageVersion: 7.0.0 BuildDropPath: '$(Build.SourcesDirectory)/artifacts' + ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom jobs: - job: ${{ parameters.name }} @@ -261,4 +262,4 @@ jobs: targetPath: '$(Build.SourcesDirectory)\eng\common\BuildConfiguration' artifactName: 'BuildConfiguration' displayName: 'Publish build retry configuration' - continueOnError: true \ No newline at end of file + continueOnError: true diff --git a/eng/common/templates-official/steps/generate-sbom.yml b/eng/common/templates-official/steps/generate-sbom.yml index 1bf43bf807a..daf0957b68d 100644 --- a/eng/common/templates-official/steps/generate-sbom.yml +++ b/eng/common/templates-official/steps/generate-sbom.yml @@ -35,7 +35,7 @@ steps: PackageName: ${{ parameters.packageName }} BuildDropPath: ${{ parameters.buildDropPath }} PackageVersion: ${{ parameters.packageVersion }} - ManifestDirPath: ${{ parameters.manifestDirPath }} + ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME) ${{ if ne(parameters.IgnoreDirectories, '') }}: AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index a00577ed17a..82b2798ba30 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -42,7 +42,7 @@ [bool]$useInstalledDotNetCli = if (Test-Path variable:useInstalledDotNetCli) { $useInstalledDotNetCli } else { $true } # Enable repos to use a particular version of the on-line dotnet-install scripts. -# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1 +# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.ps1 [string]$dotnetInstallScriptVersion = if (Test-Path variable:dotnetInstallScriptVersion) { $dotnetInstallScriptVersion } else { 'v1' } # True to use global NuGet cache instead of restoring packages to repository-local directory. @@ -263,7 +263,7 @@ function GetDotNetInstallScript([string] $dotnetRoot) { if (!(Test-Path $installScript)) { Create-Directory $dotnetRoot $ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit - $uri = "https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1" + $uri = "https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1" Retry({ Write-Host "GET $uri" diff --git a/eng/common/tools.sh b/eng/common/tools.sh index b9b329ce37f..68db1543023 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -54,7 +54,7 @@ warn_as_error=${warn_as_error:-true} use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} # Enable repos to use a particular version of the on-line dotnet-install scripts. -# default URL: https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh +# default URL: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. @@ -297,7 +297,7 @@ function with_retries { function GetDotNetInstallScript { local root=$1 local install_script="$root/dotnet-install.sh" - local install_script_url="https://dotnet.microsoft.com/download/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh" + local install_script_url="https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh" if [[ ! -a "$install_script" ]]; then mkdir -p "$root" diff --git a/global.json b/global.json index 91bd35ad978..d1843569289 100644 --- a/global.json +++ b/global.json @@ -1,11 +1,11 @@ { "sdk": { - "version": "8.0.113", + "version": "8.0.115", "allowPrerelease": true, "rollForward": "latestMajor" }, "tools": { - "dotnet": "8.0.113", + "dotnet": "8.0.115", "runtimes": { "dotnet": [ "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)" @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25120.1", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.25120.1" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25208.7", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.25208.7" } } From 19b2edd40e97c404dd8e04e8b20b722941d15920 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 18:10:44 +0000 Subject: [PATCH 50/79] Update dependencies from https://github.com/dotnet/arcade build 20250408.6 (#35931) [release/9.0] Update dependencies from dotnet/arcade --- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- global.json | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index cfe4be5bc21..79bc9ac9840 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - 97cbc7361ff28b2948c8182720c166a744049f55 + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 97cbc7361ff28b2948c8182720c166a744049f55 + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 - + https://github.com/dotnet/arcade - 97cbc7361ff28b2948c8182720c166a744049f55 + aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 diff --git a/eng/Versions.props b/eng/Versions.props index 739c70b4829..3529312b338 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.3 - 9.0.0-beta.25204.5 + 9.0.0-beta.25208.6 17.8.3 diff --git a/global.json b/global.json index 24cbe202424..70395de4fa1 100644 --- a/global.json +++ b/global.json @@ -1,11 +1,11 @@ { "sdk": { - "version": "9.0.104", + "version": "9.0.105", "allowPrerelease": true, "rollForward": "latestMajor" }, "tools": { - "dotnet": "9.0.104", + "dotnet": "9.0.105", "runtimes": { "dotnet": [ "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)" @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25204.5", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25204.5" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25208.6", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25208.6" } } From d0d53e51d0dc668fdd2a1854f13371f667fc7dfb Mon Sep 17 00:00:00 2001 From: Andriy Svyryd Date: Wed, 9 Apr 2025 17:16:31 -0700 Subject: [PATCH 51/79] Disable Cosmos tests on CI (#35933) --- azure-pipelines.yml | 25 ------------------- .../Query/AdHocJsonQueryCosmosTest.cs | 2 +- .../AdHocMiscellaneousQueryCosmosTest.cs | 2 +- 3 files changed, 2 insertions(+), 27 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 382f139f1d0..78837f93284 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -170,36 +170,11 @@ extends: - _runCounter: $[counter(variables['Build.Reason'], 0)] # Rely on task Arcade injects, not auto-injected build step. - skipComponentGovernanceDetection: true - - ${{ if notin(variables['Build.Reason'], 'PullRequest', 'Schedule') }}: - - _CosmosConnectionUrl: 'true' steps: - - bash: | - echo "##vso[task.setvariable variable=_CosmosConnectionUrl]https://ef-nightly-test.documents.azure.com:443/" - displayName: Prepare to run Cosmos tests on ef-nightly-test - condition: and(eq(variables['_CosmosConnectionUrl'], 'true'), or(endsWith(variables['_runCounter'], '0'), endsWith(variables['_runCounter'], '2'), endsWith(variables['_runCounter'], '4'), endsWith(variables['_runCounter'], '6'), endsWith(variables['_runCounter'], '8'))) - - bash: | - echo "##vso[task.setvariable variable=_CosmosConnectionUrl]https://ef-pr-test.documents.azure.com:443/" - displayName: Prepare to run Cosmos tests on ef-pr-test - condition: and(eq(variables['_CosmosConnectionUrl'], 'true'), or(endsWith(variables['_runCounter'], '1'), endsWith(variables['_runCounter'], '3'), endsWith(variables['_runCounter'], '5'), endsWith(variables['_runCounter'], '7'), endsWith(variables['_runCounter'], '9'))) - template: /eng/common/templates-official/steps/enable-internal-sources.yml - template: /eng/common/templates-official/steps/enable-internal-runtimes.yml - script: eng/common/cibuild.sh --configuration $(_BuildConfig) --prepareMachine $(_InternalRuntimeDownloadArgs) displayName: Build - - task: AzureCLI@2 - displayName: Run Cosmos tests - condition: notin(variables['Build.Reason'], 'PullRequest', 'Schedule') - inputs: - azureSubscription: EFCosmosTesting - scriptType: bash - scriptLocation: 'inlineScript' - inlineScript: | - ./test.sh --ci --configuration $(_BuildConfig) --projects $(Build.SourcesDirectory)/test/EFCore.Cosmos.FunctionalTests/EFCore.Cosmos.FunctionalTests.csproj - env: - Test__Cosmos__DefaultConnection: $(_CosmosConnectionUrl) - Test__Cosmos__UseTokenCredential: true - Test__Cosmos__SubscriptionId: d709b837-4a74-4aec-addc-b6e4b9b23e7e - Test__Cosmos__ResourceGroup: efcosmosci - name: Build templateContext: outputs: - output: pipelineArtifact diff --git a/test/EFCore.Cosmos.FunctionalTests/Query/AdHocJsonQueryCosmosTest.cs b/test/EFCore.Cosmos.FunctionalTests/Query/AdHocJsonQueryCosmosTest.cs index 979ad3d8ba0..563d63b7c08 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Query/AdHocJsonQueryCosmosTest.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Query/AdHocJsonQueryCosmosTest.cs @@ -159,7 +159,7 @@ protected override async Task Seed21006(Context21006 context) var wrapper = (CosmosClientWrapper)context.GetService(); var singletonWrapper = context.GetService(); - var entitiesContainer = singletonWrapper.Client.GetContainer(StoreName, containerId: "Entities"); + var entitiesContainer = singletonWrapper.Client.GetContainer(TestStore.Name, containerId: "Entities"); var missingTopLevel = $$""" diff --git a/test/EFCore.Cosmos.FunctionalTests/Query/AdHocMiscellaneousQueryCosmosTest.cs b/test/EFCore.Cosmos.FunctionalTests/Query/AdHocMiscellaneousQueryCosmosTest.cs index 9365b6dfc7e..fb9c9bc95f7 100644 --- a/test/EFCore.Cosmos.FunctionalTests/Query/AdHocMiscellaneousQueryCosmosTest.cs +++ b/test/EFCore.Cosmos.FunctionalTests/Query/AdHocMiscellaneousQueryCosmosTest.cs @@ -45,7 +45,7 @@ protected async Task Seed21006(JsonContext21006 context) { var wrapper = (CosmosClientWrapper)context.GetService(); var singletonWrapper = context.GetService(); - var entitiesContainer = singletonWrapper.Client.GetContainer(StoreName, containerId: "Entities"); + var entitiesContainer = singletonWrapper.Client.GetContainer(TestStore.Name, containerId: "Entities"); var missingTopLevel = $$""" From 0c098b3dda6f58b9a66805810ab48880c3a15707 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 11 Apr 2025 22:55:41 +0000 Subject: [PATCH 52/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250411.6 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Logging , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 , System.Text.Encodings.Web , System.Text.Json From Version 9.0.4 -> To Version 9.0.5 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 30 ++++++++++----------- 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/NuGet.config b/NuGet.config index bcee0f2d1f1..13253959af9 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f9c493eb438..a93f0e1b66c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,69 +1,69 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f80f87ea7e722c482ab9a81509d8b62aea66989b + 6634b4816dab3f77650f2ed23e687b13494fabe5 diff --git a/eng/Versions.props b/eng/Versions.props index f030b2fa9e1..bb797ffd9be 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -17,21 +17,21 @@ False - 9.0.4 - 9.0.4 - 9.0.4 - 9.0.4 - 9.0.4 - 9.0.4 - 9.0.4 - 9.0.4-servicing.25202.8 - 9.0.4 - 9.0.4 - 9.0.4 - 9.0.4-servicing.25202.8 - 9.0.4 - 9.0.4 - 9.0.4 + 9.0.5 + 9.0.5 + 9.0.5 + 9.0.5 + 9.0.5 + 9.0.5 + 9.0.5 + 9.0.5-servicing.25211.6 + 9.0.5 + 9.0.5 + 9.0.5 + 9.0.5-servicing.25211.6 + 9.0.5 + 9.0.5 + 9.0.5 9.0.0-beta.25164.2 From 1c96bcee4532ec2a43d70681a48c51011ac4e66d Mon Sep 17 00:00:00 2001 From: Maurycy Markowski Date: Mon, 14 Apr 2025 16:31:47 -0700 Subject: [PATCH 53/79] [release/9.0-staging] Cosmos Full Text Search support (query part) (#35909) * Limited port of https://github.com/dotnet/efcore/pull/35868 Fixes https://github.com/dotnet/efcore/issues/35476 Fixes https://github.com/dotnet/efcore/issues/35853 (need to fix this one, otherwise vector translator will try to translate full text methods and fail) Description This PR enables full-text search queries using EF Core 9 when targeting Azure Cosmos Db. This is one of the flagship new features for Cosmos and the aim here is to help with it's adoption. This is very limited port of the full feature we are adding in EF 10 Preview 4. We are only adding querying capabilities: function stubs for FullTextContains, FullTextContainsAll, FullTextContainsAny, FullTextScore and RRF as well as logic translating these signatures to built-in Cosmos functions. No model building or data manipulation - containers need to be created outside EF (using Cosmos SDK or in the Data Explorer). Customer impact Customers will be able to use the upcoming full text search capabilities when working with Azure Cosmos Db without the need to upgrade to EF 10 preview. How found Partner team ask. Regression No Testing Extensively tested on EF 10, manual testing on EF9. End-to-end testing is not possible because we can't create containers programmatically (no support for it inside EF Core itself, and the Cosmos SDK which supports it is currently only available in beta, so we can't take dependency on it). Instead, we created containers and data using EF 10, ported all the query tests from EF 10 and ran them using the EF9 bits. Risk Low. Code here is purely additive and actually localized to only a handful of places in the code: validation in ApplyOrdering/AppendOrdering, FTS method translator, parameter inliner and sql generator. Feature is marked as experimental and quirks have been added. * fix FTContainsAll/Any for constants, change TFScore signature to accept params, fixed SqlFunctionExpression to use the new ctor internally, added mandatory property overrides for FragmentExpression (vector search) fixed parameter inliner to not match parameter of type string, but only string[] when processing ContainsAll/Any --- src/EFCore.Analyzers/EFDiagnostics.cs | 1 + src/EFCore.Cosmos/EFCore.Cosmos.csproj | 1 + .../Extensions/CosmosDbFunctionsExtensions.cs | 54 ++++++++ .../Properties/CosmosStrings.Designer.cs | 22 +++ .../Properties/CosmosStrings.resx | 9 ++ .../CosmosMethodCallTranslatorProvider.cs | 3 +- .../Query/Internal/CosmosQuerySqlGenerator.cs | 12 ++ ...ressionValuesExpandingExpressionVisitor.cs | 127 ++++++++++++++---- ...ressionVisitor.PagingQueryingEnumerable.cs | 2 +- ...ingExpressionVisitor.QueryingEnumerable.cs | 2 +- .../Expressions/FragmentExpression.cs | 8 ++ .../Internal/Expressions/SelectExpression.cs | 28 ++++ .../Expressions/SqlFunctionExpression.cs | 35 ++++- .../CosmosFullTextSearchTranslator.cs | 116 ++++++++++++++++ .../CosmosVectorSearchTranslator.cs | 13 +- 15 files changed, 403 insertions(+), 30 deletions(-) create mode 100644 src/EFCore.Cosmos/Query/Internal/Translators/CosmosFullTextSearchTranslator.cs diff --git a/src/EFCore.Analyzers/EFDiagnostics.cs b/src/EFCore.Analyzers/EFDiagnostics.cs index c3021424089..13d885f600c 100644 --- a/src/EFCore.Analyzers/EFDiagnostics.cs +++ b/src/EFCore.Analyzers/EFDiagnostics.cs @@ -19,4 +19,5 @@ public static class EFDiagnostics public const string MetricsExperimental = "EF9101"; public const string PagingExperimental = "EF9102"; public const string CosmosVectorSearchExperimental = "EF9103"; + public const string CosmosFullTextSearchExperimental = "EF9104"; } diff --git a/src/EFCore.Cosmos/EFCore.Cosmos.csproj b/src/EFCore.Cosmos/EFCore.Cosmos.csproj index e5189d571d3..fe1ba24c8a0 100644 --- a/src/EFCore.Cosmos/EFCore.Cosmos.csproj +++ b/src/EFCore.Cosmos/EFCore.Cosmos.csproj @@ -12,6 +12,7 @@ $(NoWarn);EF9101 $(NoWarn);EF9102 $(NoWarn);EF9103 + $(NoWarn);EF9104 diff --git a/src/EFCore.Cosmos/Extensions/CosmosDbFunctionsExtensions.cs b/src/EFCore.Cosmos/Extensions/CosmosDbFunctionsExtensions.cs index 3dc681450be..c34b68cd07b 100644 --- a/src/EFCore.Cosmos/Extensions/CosmosDbFunctionsExtensions.cs +++ b/src/EFCore.Cosmos/Extensions/CosmosDbFunctionsExtensions.cs @@ -52,6 +52,60 @@ public static T CoalesceUndefined( T expression2) => throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(CoalesceUndefined))); + /// + /// Checks if the specified property contains the given keyword using full-text search. + /// + /// The instance. + /// The property to search. + /// The keyword to search for. + /// if the property contains the keyword; otherwise, . + [Experimental(EFDiagnostics.CosmosFullTextSearchExperimental)] + public static bool FullTextContains(this DbFunctions _, string property, string keyword) + => throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(FullTextContains))); + + /// + /// Checks if the specified property contains all the given keywords using full-text search. + /// + /// The instance. + /// The property to search. + /// The keywords to search for. + /// if the property contains all the keywords; otherwise, . + [Experimental(EFDiagnostics.CosmosFullTextSearchExperimental)] + public static bool FullTextContainsAll(this DbFunctions _, string property, params string[] keywords) + => throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(FullTextContainsAll))); + + /// + /// Checks if the specified property contains any of the given keywords using full-text search. + /// + /// The instance. + /// The property to search. + /// The keywords to search for. + /// if the property contains any of the keywords; otherwise, . + [Experimental(EFDiagnostics.CosmosFullTextSearchExperimental)] + public static bool FullTextContainsAny(this DbFunctions _, string property, params string[] keywords) + => throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(FullTextContainsAny))); + + /// + /// Returns the full-text search score for the specified property and keywords. + /// + /// The instance. + /// The property to score. + /// The keywords to score by. + /// The full-text search score. + [Experimental(EFDiagnostics.CosmosFullTextSearchExperimental)] + public static double FullTextScore(this DbFunctions _, string property, params string[] keywords) + => throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(FullTextScore))); + + /// + /// Combines scores provided by two or more specified functions. + /// + /// The instance. + /// The functions to compute the score for. + /// The combined score. + [Experimental(EFDiagnostics.CosmosFullTextSearchExperimental)] + public static double Rrf(this DbFunctions _, params double[] functions) + => throw new InvalidOperationException(CoreStrings.FunctionOnClient(nameof(Rrf))); + /// /// Returns the distance between two vectors, using the distance function and data type defined using /// + /// Ordering based on scoring function is not supported inside '{orderByDescending}'. Use '{orderBy}' instead. + /// + public static string OrderByDescendingScoringFunction(object? orderByDescending, object? orderBy) + => string.Format( + GetString("OrderByDescendingScoringFunction", nameof(orderByDescending), nameof(orderBy)), + orderByDescending, orderBy); + + /// + /// Only one ordering using scoring function is allowed. Use 'EF.Functions.{rrf}' method to combine multiple scoring functions. + /// + public static string OrderByMultipleScoringFunctionWithoutRrf(object? rrf) + => string.Format( + GetString("OrderByMultipleScoringFunctionWithoutRrf", nameof(rrf)), + rrf); + + /// + /// Ordering using a scoring function is mutually exclusive with other forms of ordering. + /// + public static string OrderByScoringFunctionMixedWithRegularOrderby + => GetString("OrderByScoringFunctionMixedWithRegularOrderby"); + /// /// The entity of type '{entityType}' is mapped as a part of the document mapped to '{missingEntityType}', but there is no tracked entity of this type with the corresponding key value. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the key values. /// diff --git a/src/EFCore.Cosmos/Properties/CosmosStrings.resx b/src/EFCore.Cosmos/Properties/CosmosStrings.resx index 8f9a875524b..09182e651e6 100644 --- a/src/EFCore.Cosmos/Properties/CosmosStrings.resx +++ b/src/EFCore.Cosmos/Properties/CosmosStrings.resx @@ -283,6 +283,15 @@ Exactly one of '{param1}' or '{param2}' must be set. + + Ordering based on scoring function is not supported inside '{orderByDescending}'. Use '{orderBy}' instead. + + + Only one ordering using scoring function is allowed. Use 'EF.Functions.{rrf}' method to combine multiple scoring functions. + + + Ordering using a scoring function is mutually exclusive with other forms of ordering. + The entity of type '{entityType}' is mapped as a part of the document mapped to '{missingEntityType}', but there is no tracked entity of this type with the corresponding key value. Consider using 'DbContextOptionsBuilder.EnableSensitiveDataLogging' to see the key values. diff --git a/src/EFCore.Cosmos/Query/Internal/CosmosMethodCallTranslatorProvider.cs b/src/EFCore.Cosmos/Query/Internal/CosmosMethodCallTranslatorProvider.cs index 352e3d443e1..000c449a7c0 100644 --- a/src/EFCore.Cosmos/Query/Internal/CosmosMethodCallTranslatorProvider.cs +++ b/src/EFCore.Cosmos/Query/Internal/CosmosMethodCallTranslatorProvider.cs @@ -36,7 +36,8 @@ public CosmosMethodCallTranslatorProvider( new CosmosRegexTranslator(sqlExpressionFactory), new CosmosStringMethodTranslator(sqlExpressionFactory), new CosmosTypeCheckingTranslator(sqlExpressionFactory), - new CosmosVectorSearchTranslator(sqlExpressionFactory, typeMappingSource) + new CosmosVectorSearchTranslator(sqlExpressionFactory, typeMappingSource), + new CosmosFullTextSearchTranslator(sqlExpressionFactory, typeMappingSource) //new LikeTranslator(sqlExpressionFactory), //new EnumHasFlagTranslator(sqlExpressionFactory), //new GetValueOrDefaultTranslator(sqlExpressionFactory), diff --git a/src/EFCore.Cosmos/Query/Internal/CosmosQuerySqlGenerator.cs b/src/EFCore.Cosmos/Query/Internal/CosmosQuerySqlGenerator.cs index 67b1437208a..5da126d0827 100644 --- a/src/EFCore.Cosmos/Query/Internal/CosmosQuerySqlGenerator.cs +++ b/src/EFCore.Cosmos/Query/Internal/CosmosQuerySqlGenerator.cs @@ -14,6 +14,9 @@ namespace Microsoft.EntityFrameworkCore.Cosmos.Query.Internal; /// public class CosmosQuerySqlGenerator(ITypeMappingSource typeMappingSource) : SqlExpressionVisitor { + private static readonly bool UseOldBehavior35476 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35476", out var enabled35476) && enabled35476; + private readonly IndentedStringBuilder _sqlBuilder = new(); private IReadOnlyDictionary _parameterValues = null!; private List _sqlParameters = null!; @@ -341,6 +344,15 @@ protected override Expression VisitSelect(SelectExpression selectExpression) { _sqlBuilder.AppendLine().Append("ORDER BY "); + var orderByScoringFunction = selectExpression.Orderings is [{ Expression: SqlFunctionExpression { IsScoringFunction: true } }]; + if (!UseOldBehavior35476 && orderByScoringFunction) + { + _sqlBuilder.Append("RANK "); + } + + Check.DebugAssert(UseOldBehavior35476 || orderByScoringFunction || selectExpression.Orderings.All(x => x.Expression is not SqlFunctionExpression { IsScoringFunction: true }), + "Scoring function can only appear as first (and only) ordering, or not at all."); + GenerateList(selectExpression.Orderings, e => Visit(e)); } diff --git a/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.InExpressionValuesExpandingExpressionVisitor.cs b/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.InExpressionValuesExpandingExpressionVisitor.cs index 98563fd0a2a..e23cb211fe9 100644 --- a/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.InExpressionValuesExpandingExpressionVisitor.cs +++ b/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.InExpressionValuesExpandingExpressionVisitor.cs @@ -9,48 +9,129 @@ namespace Microsoft.EntityFrameworkCore.Cosmos.Query.Internal; public partial class CosmosShapedQueryCompilingExpressionVisitor { - private sealed class InExpressionValuesExpandingExpressionVisitor( + private static readonly bool UseOldBehavior35476 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35476", out var enabled35476) && enabled35476; + + private sealed class ParameterInliner( ISqlExpressionFactory sqlExpressionFactory, IReadOnlyDictionary parametersValues) : ExpressionVisitor { protected override Expression VisitExtension(Expression expression) { - if (expression is InExpression inExpression) + if (!UseOldBehavior35476) { - IReadOnlyList values; + expression = base.VisitExtension(expression); + } - switch (inExpression) + switch (expression) + { + // Inlines array parameter of InExpression, transforming: 'item IN (@valuesArray)' to: 'item IN (value1, value2)' + case InExpression inExpression: { - case { Values: IReadOnlyList values2 }: - values = values2; - break; - - // TODO: IN with subquery (return immediately, nothing to do here) + IReadOnlyList values; - case { ValuesParameter: SqlParameterExpression valuesParameter }: + switch (inExpression) { - var typeMapping = valuesParameter.TypeMapping; - var mutableValues = new List(); - foreach (var value in (IEnumerable)parametersValues[valuesParameter.Name]) + case { Values: IReadOnlyList values2 }: + values = values2; + break; + + // TODO: IN with subquery (return immediately, nothing to do here) + + case { ValuesParameter: SqlParameterExpression valuesParameter }: { - mutableValues.Add(sqlExpressionFactory.Constant(value, value?.GetType() ?? typeof(object), typeMapping)); + var typeMapping = valuesParameter.TypeMapping; + var mutableValues = new List(); + foreach (var value in (IEnumerable)parametersValues[valuesParameter.Name]) + { + mutableValues.Add(sqlExpressionFactory.Constant(value, value?.GetType() ?? typeof(object), typeMapping)); + } + + values = mutableValues; + break; } - values = mutableValues; - break; + default: + throw new UnreachableException(); } - default: - throw new UnreachableException(); + return values.Count == 0 + ? sqlExpressionFactory.ApplyDefaultTypeMapping(sqlExpressionFactory.Constant(false)) + : sqlExpressionFactory.In((SqlExpression)Visit(inExpression.Item), values); } - return values.Count == 0 - ? sqlExpressionFactory.ApplyDefaultTypeMapping(sqlExpressionFactory.Constant(false)) - : sqlExpressionFactory.In((SqlExpression)Visit(inExpression.Item), values); - } + // Converts Offset and Limit parameters to constants when ORDER BY RANK is detected in the SelectExpression (i.e. we order by scoring function) + // Cosmos only supports constants in Offset and Limit for this scenario currently (ORDER BY RANK limitation) + case SelectExpression { Orderings: [{ Expression: SqlFunctionExpression { IsScoringFunction: true } }], Limit: var limit, Offset: var offset } hybridSearch + when !UseOldBehavior35476 && (limit is SqlParameterExpression || offset is SqlParameterExpression): + { + if (hybridSearch.Limit is SqlParameterExpression limitPrm) + { + hybridSearch.ApplyLimit( + sqlExpressionFactory.Constant( + parametersValues[limitPrm.Name], + limitPrm.TypeMapping)); + } + + if (hybridSearch.Offset is SqlParameterExpression offsetPrm) + { + hybridSearch.ApplyOffset( + sqlExpressionFactory.Constant( + parametersValues[offsetPrm.Name], + offsetPrm.TypeMapping)); + } + + return base.VisitExtension(expression); + } - return base.VisitExtension(expression); + // Inlines array parameter of full-text functions, transforming FullTextContainsAll(x, @keywordsArray) to FullTextContainsAll(x, keyword1, keyword2)) + case SqlFunctionExpression + { + Name: "FullTextContainsAny" or "FullTextContainsAll", + Arguments: [var property, SqlParameterExpression { TypeMapping: { ElementTypeMapping: var elementTypeMapping }, Type: Type type } keywords] + } fullTextContainsAllAnyFunction + when !UseOldBehavior35476 && type == typeof(string[]): + { + var keywordValues = new List(); + foreach (var value in (IEnumerable)parametersValues[keywords.Name]) + { + keywordValues.Add(sqlExpressionFactory.Constant(value, typeof(string), elementTypeMapping)); + } + + return sqlExpressionFactory.Function( + fullTextContainsAllAnyFunction.Name, + [property, .. keywordValues], + fullTextContainsAllAnyFunction.Type, + fullTextContainsAllAnyFunction.TypeMapping); + } + + // Inlines array parameter of full-text score, transforming FullTextScore(x, @keywordsArray) to FullTextScore(x, [keyword1, keyword2])) + case SqlFunctionExpression + { + Name: "FullTextScore", + IsScoringFunction: true, + Arguments: [var property, SqlParameterExpression { TypeMapping: { ElementTypeMapping: not null } typeMapping } keywords] + } fullTextScoreFunction + when !UseOldBehavior35476: + { + var keywordValues = new List(); + foreach (var value in (IEnumerable)parametersValues[keywords.Name]) + { + keywordValues.Add((string)value); + } + + return new SqlFunctionExpression( + fullTextScoreFunction.Name, + isScoringFunction: true, + [property, sqlExpressionFactory.Constant(keywordValues, typeMapping)], + fullTextScoreFunction.Type, + fullTextScoreFunction.TypeMapping); + } + + default: + return expression; + } } } } diff --git a/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.PagingQueryingEnumerable.cs b/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.PagingQueryingEnumerable.cs index e90c24664a5..6e84ffa7827 100644 --- a/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.PagingQueryingEnumerable.cs +++ b/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.PagingQueryingEnumerable.cs @@ -75,7 +75,7 @@ public IAsyncEnumerator> GetAsyncEnumerator(CancellationToken canc private CosmosSqlQuery GenerateQuery() => _querySqlGeneratorFactory.Create().GetSqlQuery( - (SelectExpression)new InExpressionValuesExpandingExpressionVisitor( + (SelectExpression)new ParameterInliner( _sqlExpressionFactory, _cosmosQueryContext.ParameterValues) .Visit(_selectExpression), diff --git a/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.QueryingEnumerable.cs b/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.QueryingEnumerable.cs index 07b0c22115c..26c7d885cdc 100644 --- a/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.QueryingEnumerable.cs +++ b/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.QueryingEnumerable.cs @@ -71,7 +71,7 @@ IEnumerator IEnumerable.GetEnumerator() private CosmosSqlQuery GenerateQuery() => _querySqlGeneratorFactory.Create().GetSqlQuery( - (SelectExpression)new InExpressionValuesExpandingExpressionVisitor( + (SelectExpression)new ParameterInliner( _sqlExpressionFactory, _cosmosQueryContext.ParameterValues) .Visit(_selectExpression), diff --git a/src/EFCore.Cosmos/Query/Internal/Expressions/FragmentExpression.cs b/src/EFCore.Cosmos/Query/Internal/Expressions/FragmentExpression.cs index cdb0bbff323..3efd431ca2f 100644 --- a/src/EFCore.Cosmos/Query/Internal/Expressions/FragmentExpression.cs +++ b/src/EFCore.Cosmos/Query/Internal/Expressions/FragmentExpression.cs @@ -23,6 +23,14 @@ public class FragmentExpression(string fragment) : Expression, IPrintableExpress /// public virtual string Fragment { get; } = fragment; + /// + public override ExpressionType NodeType + => base.NodeType; + + /// + public override Type Type + => typeof(object); + /// protected override Expression VisitChildren(ExpressionVisitor visitor) => this; diff --git a/src/EFCore.Cosmos/Query/Internal/Expressions/SelectExpression.cs b/src/EFCore.Cosmos/Query/Internal/Expressions/SelectExpression.cs index 3f31abdf5a8..5b735680b43 100644 --- a/src/EFCore.Cosmos/Query/Internal/Expressions/SelectExpression.cs +++ b/src/EFCore.Cosmos/Query/Internal/Expressions/SelectExpression.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using Microsoft.EntityFrameworkCore.Cosmos.Extensions; using Microsoft.EntityFrameworkCore.Cosmos.Internal; using Microsoft.EntityFrameworkCore.Internal; @@ -16,6 +17,9 @@ namespace Microsoft.EntityFrameworkCore.Cosmos.Query.Internal; [DebuggerDisplay("{PrintShortSql(), nq}")] public sealed class SelectExpression : Expression, IPrintableExpression { + private static readonly bool UseOldBehavior35476 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35476", out var enabled35476) && enabled35476; + private IDictionary _projectionMapping = new Dictionary(); private readonly List _sources = []; private readonly List _projection = []; @@ -381,6 +385,12 @@ public void ApplyOffset(SqlExpression sqlExpression) /// public void ApplyOrdering(OrderingExpression orderingExpression) { + if (!UseOldBehavior35476 && orderingExpression is { Expression: SqlFunctionExpression { IsScoringFunction: true }, IsAscending: false }) + { + throw new InvalidOperationException( + CosmosStrings.OrderByDescendingScoringFunction(nameof(Queryable.OrderByDescending), nameof(Queryable.OrderBy))); + } + _orderings.Clear(); _orderings.Add(orderingExpression); } @@ -393,6 +403,19 @@ public void ApplyOrdering(OrderingExpression orderingExpression) /// public void AppendOrdering(OrderingExpression orderingExpression) { + if (!UseOldBehavior35476 && _orderings.Count > 0) + { + var existingScoringFunctionOrdering = _orderings is [{ Expression: SqlFunctionExpression { IsScoringFunction: true } }]; + var appendingScoringFunctionOrdering = orderingExpression.Expression is SqlFunctionExpression { IsScoringFunction: true }; + if (appendingScoringFunctionOrdering || existingScoringFunctionOrdering) + { + throw new InvalidOperationException( + appendingScoringFunctionOrdering && existingScoringFunctionOrdering + ? CosmosStrings.OrderByMultipleScoringFunctionWithoutRrf(nameof(CosmosDbFunctionsExtensions.Rrf)) + : CosmosStrings.OrderByScoringFunctionMixedWithRegularOrderby); + } + } + if (_orderings.FirstOrDefault(o => o.Expression.Equals(orderingExpression.Expression)) == null) { _orderings.Add(orderingExpression); @@ -752,6 +775,11 @@ private void PrintSql(ExpressionPrinter expressionPrinter, bool withTags = true) if (Orderings.Any()) { expressionPrinter.AppendLine().Append("ORDER BY "); + if (!UseOldBehavior35476 && Orderings is [{ Expression: SqlFunctionExpression { IsScoringFunction: true } }]) + { + expressionPrinter.Append("RANK "); + } + expressionPrinter.VisitCollection(Orderings); } diff --git a/src/EFCore.Cosmos/Query/Internal/Expressions/SqlFunctionExpression.cs b/src/EFCore.Cosmos/Query/Internal/Expressions/SqlFunctionExpression.cs index 91b53ca7039..960b2c6f0eb 100644 --- a/src/EFCore.Cosmos/Query/Internal/Expressions/SqlFunctionExpression.cs +++ b/src/EFCore.Cosmos/Query/Internal/Expressions/SqlFunctionExpression.cs @@ -3,6 +3,8 @@ // ReSharper disable once CheckNamespace +using System.Diagnostics.CodeAnalysis; + namespace Microsoft.EntityFrameworkCore.Cosmos.Query.Internal; /// @@ -24,10 +26,28 @@ public SqlFunctionExpression( IEnumerable arguments, Type type, CoreTypeMapping? typeMapping) + : this(name, isScoringFunction: false, arguments, type, typeMapping) + { + } + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + [Experimental(EFDiagnostics.CosmosFullTextSearchExperimental)] + public SqlFunctionExpression( + string name, + bool isScoringFunction, + IEnumerable arguments, + Type type, + CoreTypeMapping? typeMapping) : base(type, typeMapping) { Name = name; Arguments = arguments.ToList(); + IsScoringFunction = isScoringFunction; } /// @@ -38,6 +58,15 @@ public SqlFunctionExpression( /// public virtual string Name { get; } + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + [Experimental(EFDiagnostics.CosmosFullTextSearchExperimental)] + public virtual bool IsScoringFunction { get; } + /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in @@ -63,7 +92,7 @@ protected override Expression VisitChildren(ExpressionVisitor visitor) } return changed - ? new SqlFunctionExpression(Name, arguments, Type, TypeMapping) + ? new SqlFunctionExpression(Name, IsScoringFunction, arguments, Type, TypeMapping) : this; } @@ -74,7 +103,7 @@ protected override Expression VisitChildren(ExpressionVisitor visitor) /// doing so can result in application failures when updating to a new Entity Framework Core release. /// public virtual SqlFunctionExpression ApplyTypeMapping(CoreTypeMapping? typeMapping) - => new(Name, Arguments, Type, typeMapping ?? TypeMapping); + => new(Name, IsScoringFunction, Arguments, Type, typeMapping ?? TypeMapping); /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to @@ -85,7 +114,7 @@ public virtual SqlFunctionExpression ApplyTypeMapping(CoreTypeMapping? typeMappi public virtual SqlFunctionExpression Update(IReadOnlyList arguments) => arguments.SequenceEqual(Arguments) ? this - : new SqlFunctionExpression(Name, arguments, Type, TypeMapping); + : new SqlFunctionExpression(Name, IsScoringFunction, arguments, Type, TypeMapping); /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to diff --git a/src/EFCore.Cosmos/Query/Internal/Translators/CosmosFullTextSearchTranslator.cs b/src/EFCore.Cosmos/Query/Internal/Translators/CosmosFullTextSearchTranslator.cs new file mode 100644 index 00000000000..11c4209100e --- /dev/null +++ b/src/EFCore.Cosmos/Query/Internal/Translators/CosmosFullTextSearchTranslator.cs @@ -0,0 +1,116 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.EntityFrameworkCore.Cosmos.Extensions; + +namespace Microsoft.EntityFrameworkCore.Cosmos.Query.Internal; + +/// +/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to +/// the same compatibility standards as public APIs. It may be changed or removed without notice in +/// any release. You should only use it directly in your code with extreme caution and knowing that +/// doing so can result in application failures when updating to a new Entity Framework Core release. +/// +public class CosmosFullTextSearchTranslator(ISqlExpressionFactory sqlExpressionFactory, ITypeMappingSource typeMappingSource) + : IMethodCallTranslator +{ + private static readonly bool UseOldBehavior35476 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35476", out var enabled35476) && enabled35476; + + /// + /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to + /// the same compatibility standards as public APIs. It may be changed or removed without notice in + /// any release. You should only use it directly in your code with extreme caution and knowing that + /// doing so can result in application failures when updating to a new Entity Framework Core release. + /// + public SqlExpression? Translate( + SqlExpression? instance, + MethodInfo method, + IReadOnlyList arguments, + IDiagnosticsLogger logger) + { + if (UseOldBehavior35476 || method.DeclaringType != typeof(CosmosDbFunctionsExtensions)) + { + return null; + } + + return method.Name switch + { + nameof(CosmosDbFunctionsExtensions.FullTextContains) + when arguments is [_, var property, var keyword] => sqlExpressionFactory.Function( + "FullTextContains", + [ + property, + keyword, + ], + typeof(bool), + typeMappingSource.FindMapping(typeof(bool))), + + nameof(CosmosDbFunctionsExtensions.FullTextScore) + when arguments is [_, var property, var keywords] => BuildScoringFunction( + sqlExpressionFactory, + "FullTextScore", + [ + property, + keywords, + ], + typeof(double), + typeMappingSource.FindMapping(typeof(double))), + + nameof(CosmosDbFunctionsExtensions.Rrf) + when arguments is [_, ArrayConstantExpression functions] => BuildScoringFunction( + sqlExpressionFactory, + "RRF", + functions.Items, + typeof(double), + typeMappingSource.FindMapping(typeof(double))), + + nameof(CosmosDbFunctionsExtensions.FullTextContainsAny) or nameof(CosmosDbFunctionsExtensions.FullTextContainsAll) + when arguments is [_, SqlExpression property, SqlConstantExpression { Type: var keywordClrType, Value: string[] values } keywords] + && keywordClrType == typeof(string[]) => sqlExpressionFactory.Function( + method.Name == nameof(CosmosDbFunctionsExtensions.FullTextContainsAny) ? "FullTextContainsAny" : "FullTextContainsAll", + [property, .. values.Select(x => sqlExpressionFactory.Constant(x))], + typeof(bool), + typeMappingSource.FindMapping(typeof(bool))), + + nameof(CosmosDbFunctionsExtensions.FullTextContainsAny) or nameof(CosmosDbFunctionsExtensions.FullTextContainsAll) + when arguments is [_, SqlExpression property, SqlParameterExpression { Type: var keywordClrType } keywords] + && keywordClrType == typeof(string[]) => sqlExpressionFactory.Function( + method.Name == nameof(CosmosDbFunctionsExtensions.FullTextContainsAny) ? "FullTextContainsAny" : "FullTextContainsAll", + [property, keywords], + typeof(bool), + typeMappingSource.FindMapping(typeof(bool))), + + nameof(CosmosDbFunctionsExtensions.FullTextContainsAny) or nameof(CosmosDbFunctionsExtensions.FullTextContainsAll) + when arguments is [_, SqlExpression property, ArrayConstantExpression keywords] => sqlExpressionFactory.Function( + method.Name == nameof(CosmosDbFunctionsExtensions.FullTextContainsAny) ? "FullTextContainsAny" : "FullTextContainsAll", + [property, .. keywords.Items], + typeof(bool), + typeMappingSource.FindMapping(typeof(bool))), + + _ => null + }; + } + + private SqlExpression BuildScoringFunction( + ISqlExpressionFactory sqlExpressionFactory, + string functionName, + IEnumerable arguments, + Type returnType, + CoreTypeMapping? typeMapping = null) + { + var typeMappedArguments = new List(); + + foreach (var argument in arguments) + { + typeMappedArguments.Add(argument is SqlExpression sqlArgument ? sqlExpressionFactory.ApplyDefaultTypeMapping(sqlArgument) : argument); + } + + return new SqlFunctionExpression( + functionName, + isScoringFunction: true, + typeMappedArguments, + returnType, + typeMapping); + } +} diff --git a/src/EFCore.Cosmos/Query/Internal/Translators/CosmosVectorSearchTranslator.cs b/src/EFCore.Cosmos/Query/Internal/Translators/CosmosVectorSearchTranslator.cs index 9c6e62d02a2..d77ddbf4373 100644 --- a/src/EFCore.Cosmos/Query/Internal/Translators/CosmosVectorSearchTranslator.cs +++ b/src/EFCore.Cosmos/Query/Internal/Translators/CosmosVectorSearchTranslator.cs @@ -18,6 +18,9 @@ namespace Microsoft.EntityFrameworkCore.Cosmos.Query.Internal; public class CosmosVectorSearchTranslator(ISqlExpressionFactory sqlExpressionFactory, ITypeMappingSource typeMappingSource) : IMethodCallTranslator { + private static readonly bool UseOldBehavior35853 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35853", out var enabled35853) && enabled35853; + /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in @@ -30,7 +33,15 @@ public class CosmosVectorSearchTranslator(ISqlExpressionFactory sqlExpressionFac IReadOnlyList arguments, IDiagnosticsLogger logger) { - if (method.DeclaringType != typeof(CosmosDbFunctionsExtensions) + if (!UseOldBehavior35853) + { + if (method.DeclaringType != typeof(CosmosDbFunctionsExtensions) + || method.Name != nameof(CosmosDbFunctionsExtensions.VectorDistance)) + { + return null; + } + } + else if (method.DeclaringType != typeof(CosmosDbFunctionsExtensions) && method.Name != nameof(CosmosDbFunctionsExtensions.VectorDistance)) { return null; From 8f67cf8489be6fbf949daa7081213a6fe5c634f0 Mon Sep 17 00:00:00 2001 From: Maurycy Markowski Date: Tue, 15 Apr 2025 10:10:06 -0700 Subject: [PATCH 54/79] [release/9.0] Bump version of Cosmos SDK from 3.45 to 3.48 to improve hybrid search experience out of the box (#35954) bumping cosmos sdk version to improve hybrid search experience out of the box - this is a dry run, will incorporate these changes to the proper 9.0 PR once/if we have green light for the bump Continuation of #35909 Description As part of adding full text search support we realized that some scenarios (specifically hybrid search and some instances of ContainsAll) don't work with the Cosmos SDK that is currently referenced by EFCore.Cosmos 9.x package. The issues can be solved by bumping SDK version to 3.48 Customer impact Customers trying full text search will experience errors for some scenarios - cryptic exception (Syntax error near '-' for hybrid, and invalid results for some ContainsAll queries). Workaround is to manually upgrade Cosmos SDK dependency. How found Internal testing by the partner team. Regression No Testing All current Cosmos tests pass. Performed smoke test to validate that breaking change added in the SDK (requiring explicit Newtonsoft.Json dependency) doesn't have impact on the customer app. Risk Low. This can only affect customers using EFCore.Cosmos, one breaking change introduced in the SDK is benign from the perspective of customers using EFCore to communicate with Cosmos (EFCore package absorbs the breaking change). --- Directory.Packages.props | 2 +- src/EFCore.Cosmos/EFCore.Cosmos.csproj | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 5975e2b9a33..662be990703 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -36,7 +36,7 @@ - + diff --git a/src/EFCore.Cosmos/EFCore.Cosmos.csproj b/src/EFCore.Cosmos/EFCore.Cosmos.csproj index fe1ba24c8a0..a3bd6fe8baf 100644 --- a/src/EFCore.Cosmos/EFCore.Cosmos.csproj +++ b/src/EFCore.Cosmos/EFCore.Cosmos.csproj @@ -50,6 +50,8 @@ + + From 3ca997ccd6ba554a74a9764ba02a7acb1c948a81 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 16 Apr 2025 00:30:58 +0000 Subject: [PATCH 55/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250415.9 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Logging , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 , System.Text.Encodings.Web , System.Text.Json From Version 9.0.4 -> To Version 9.0.5 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 34 +++++++++++++++++----------------- eng/Versions.props | 4 ++-- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/NuGet.config b/NuGet.config index 13253959af9..d6eecbfcd48 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a93f0e1b66c..529b2ad1b09 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,47 +3,47 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6634b4816dab3f77650f2ed23e687b13494fabe5 + e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 diff --git a/eng/Versions.props b/eng/Versions.props index bb797ffd9be..8458015b53b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,11 +24,11 @@ 9.0.5 9.0.5 9.0.5 - 9.0.5-servicing.25211.6 + 9.0.5-servicing.25215.9 9.0.5 9.0.5 9.0.5 - 9.0.5-servicing.25211.6 + 9.0.5-servicing.25215.9 9.0.5 9.0.5 9.0.5 From 74ab20679ea9ee21b088cde8c01133e783a4742f Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 17 Apr 2025 00:11:59 +0000 Subject: [PATCH 56/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250415.6 Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport From Version 8.0.15-servicing.25164.13 -> To Version 8.0.16-servicing.25215.6 --- NuGet.config | 8 ++------ eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 8 ++++---- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/NuGet.config b/NuGet.config index ec8464124ac..353a7af9ad1 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,9 +4,7 @@ - - - + @@ -21,9 +19,7 @@ - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3ec3bc94ab6..419d315a06d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -29,9 +29,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 50c4cb9fc31c47f03eac865d7bc518af173b74b7 + efd5742bb5dd1677fbbbeb277bcfb5c9025548e5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -45,18 +45,18 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 50c4cb9fc31c47f03eac865d7bc518af173b74b7 + efd5742bb5dd1677fbbbeb277bcfb5c9025548e5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 50c4cb9fc31c47f03eac865d7bc518af173b74b7 + efd5742bb5dd1677fbbbeb277bcfb5c9025548e5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 50c4cb9fc31c47f03eac865d7bc518af173b74b7 + efd5742bb5dd1677fbbbeb277bcfb5c9025548e5 diff --git a/eng/Versions.props b/eng/Versions.props index 5ac3bf190b0..02aa8630aed 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,13 +24,13 @@ 8.0.1 8.0.1 8.0.2 - 8.0.15-servicing.25164.13 + 8.0.16-servicing.25215.6 8.0.1 8.0.5 8.0.2 - 8.0.15 - 8.0.15 - 8.0.15-servicing.25164.13 + 8.0.16 + 8.0.16 + 8.0.16-servicing.25215.6 8.0.0-beta.25208.7 From c728c1c3cea8d737d4ea960410bff67ddb4e1ecd Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 05:45:26 +0000 Subject: [PATCH 57/79] Update dependencies from https://github.com/dotnet/arcade build 20250425.6 (#36006) [release/9.0] Update dependencies from dotnet/arcade --- NuGet.config | 2 -- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- eng/common/core-templates/job/source-build.yml | 2 ++ .../core-templates/job/source-index-stage1.yml | 4 ++-- eng/common/core-templates/steps/source-build.yml | 1 + global.json | 4 ++-- 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/NuGet.config b/NuGet.config index e6046bdda5d..d1a8a417e43 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,6 @@ - @@ -21,7 +20,6 @@ - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d25dda95e20..7c8d894592f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 + bfbc858ba868b60fffaf7b2150f1d2165b01e786 - + https://github.com/dotnet/arcade - aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 + bfbc858ba868b60fffaf7b2150f1d2165b01e786 - + https://github.com/dotnet/arcade - aa61e8c20a869bcc994f8b29eb07d927d2bec6f4 + bfbc858ba868b60fffaf7b2150f1d2165b01e786 diff --git a/eng/Versions.props b/eng/Versions.props index 098a1bd0102..e0f89a20148 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.4 - 9.0.0-beta.25208.6 + 9.0.0-beta.25225.6 17.8.3 diff --git a/eng/common/core-templates/job/source-build.yml b/eng/common/core-templates/job/source-build.yml index c4713c8b6ed..d47f09d58fd 100644 --- a/eng/common/core-templates/job/source-build.yml +++ b/eng/common/core-templates/job/source-build.yml @@ -26,6 +26,8 @@ parameters: # Specifies the build script to invoke to perform the build in the repo. The default # './build.sh' should work for typical Arcade repositories, but this is customizable for # difficult situations. + # buildArguments: '' + # Specifies additional build arguments to pass to the build script. # jobProperties: {} # A list of job properties to inject at the top level, for potential extensibility beyond # container and pool. diff --git a/eng/common/core-templates/job/source-index-stage1.yml b/eng/common/core-templates/job/source-index-stage1.yml index 205fb5b3a39..8b833332b3e 100644 --- a/eng/common/core-templates/job/source-index-stage1.yml +++ b/eng/common/core-templates/job/source-index-stage1.yml @@ -1,7 +1,7 @@ parameters: runAsPublic: false - sourceIndexUploadPackageVersion: 2.0.0-20240522.1 - sourceIndexProcessBinlogPackageVersion: 1.0.1-20240522.1 + sourceIndexUploadPackageVersion: 2.0.0-20250425.2 + sourceIndexProcessBinlogPackageVersion: 1.0.1-20250425.2 sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" preSteps: [] diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml index 2915d29bb7f..37133b55b75 100644 --- a/eng/common/core-templates/steps/source-build.yml +++ b/eng/common/core-templates/steps/source-build.yml @@ -79,6 +79,7 @@ steps: ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \ --configuration $buildConfig \ --restore --build --pack $publishArgs -bl \ + ${{ parameters.platform.buildArguments }} \ $officialBuildArgs \ $internalRuntimeDownloadArgs \ $internalRestoreArgs \ diff --git a/global.json b/global.json index 70395de4fa1..93d3c09d1de 100644 --- a/global.json +++ b/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25208.6", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25208.6" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25225.6", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25225.6" } } From 512a7f29d9abd3b1fc563e52557f415d3659e406 Mon Sep 17 00:00:00 2001 From: Sean Reeser Date: Wed, 7 May 2025 14:47:42 -0700 Subject: [PATCH 58/79] Update branding to 8.0.17 --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 5ac3bf190b0..e0e31facadb 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 8.0.16 + 8.0.17 servicing From 76faf7c1a86b2bcb8834314f7eb038f222f470ee Mon Sep 17 00:00:00 2001 From: Sean Reeser Date: Wed, 7 May 2025 14:47:52 -0700 Subject: [PATCH 59/79] Update branding to 9.0.6 --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index e0f89a20148..227990ca8f2 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 9.0.5 + 9.0.6 rtm From 44c091f550dece986511fe5806dc7f26cb6e7eaf Mon Sep 17 00:00:00 2001 From: Andriy Svyryd Date: Wed, 7 May 2025 16:04:35 -0700 Subject: [PATCH 60/79] Revert job.yml changes --- eng/common/templates-official/job/job.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index b9c0583ed8a..817555505aa 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -4,7 +4,6 @@ parameters: runAsPublic: false PackageVersion: 9.0.0 BuildDropPath: '$(Build.SourcesDirectory)/artifacts' - ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom jobs: - template: /eng/common/core-templates/job/job.yml From 015f17036796d4ea56c330b2b99b1a9311a5b26f Mon Sep 17 00:00:00 2001 From: Maurycy Markowski Date: Mon, 12 May 2025 14:53:01 -0700 Subject: [PATCH 61/79] Fix to #35983 - Cosmos/FTS: update translation of FullTextScore to use multiple keywords rather than keyword array (#36000) Port of #35984 Fixes #35983 Description Reacting to Cosmos changing the signature of FullTextScore function. Customer impact TBD How found Partner team ask. Regression No Testing Extensively tested on EF 10, manual testing on EF9. End-to-end testing is not possible because we can't create containers programmatically (no support for it inside EF Core itself, and the Cosmos SDK which supports it is currently only available in beta, so we can't take dependency on it). Instead, we created containers and data using EF 10, ported all the query tests from EF 10 and ran them using the EF9 bits. Partner team will conduct additional testing on their end. Risk Low. Localized change to translation - method signature exposed by EF is already in place. New translation now resembles other FullText methods, so same techniques can be used for translation (essentially re-using code that has been in place for other methods and working). Full text search support is experimental on EF9. Added quirk just in case. --- Directory.Packages.props | 2 +- ...ressionValuesExpandingExpressionVisitor.cs | 35 +++++++++++++++-- .../CosmosFullTextSearchTranslator.cs | 38 ++++++++++++++++--- 3 files changed, 64 insertions(+), 11 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 662be990703..c04cc84129e 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -36,7 +36,7 @@ - + diff --git a/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.InExpressionValuesExpandingExpressionVisitor.cs b/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.InExpressionValuesExpandingExpressionVisitor.cs index e23cb211fe9..a3cdfa86608 100644 --- a/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.InExpressionValuesExpandingExpressionVisitor.cs +++ b/src/EFCore.Cosmos/Query/Internal/CosmosShapedQueryCompilingExpressionVisitor.InExpressionValuesExpandingExpressionVisitor.cs @@ -10,7 +10,10 @@ namespace Microsoft.EntityFrameworkCore.Cosmos.Query.Internal; public partial class CosmosShapedQueryCompilingExpressionVisitor { private static readonly bool UseOldBehavior35476 = - AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35476", out var enabled35476) && enabled35476; + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35476", out var enabled35476) && enabled35476; + + private static readonly bool UseOldBehavior35983 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35983", out var enabled35983) && enabled35983; private sealed class ParameterInliner( ISqlExpressionFactory sqlExpressionFactory, @@ -85,7 +88,7 @@ protected override Expression VisitExtension(Expression expression) return base.VisitExtension(expression); } - // Inlines array parameter of full-text functions, transforming FullTextContainsAll(x, @keywordsArray) to FullTextContainsAll(x, keyword1, keyword2)) + // Inlines array parameter of full-text functions, transforming FullTextContainsAll(x, @keywordsArray) to FullTextContainsAll(x, keyword1, keyword2) case SqlFunctionExpression { Name: "FullTextContainsAny" or "FullTextContainsAll", @@ -106,14 +109,38 @@ protected override Expression VisitExtension(Expression expression) fullTextContainsAllAnyFunction.TypeMapping); } - // Inlines array parameter of full-text score, transforming FullTextScore(x, @keywordsArray) to FullTextScore(x, [keyword1, keyword2])) + // Inlines array parameter of full-text score, transforming FullTextScore(x, @keywordsArray) to FullTextScore(x, keyword1, keyword2) + case SqlFunctionExpression + { + Name: "FullTextScore", + IsScoringFunction: true, + Arguments: [var property, SqlParameterExpression { TypeMapping: { ElementTypeMapping: var elementTypeMapping }, Type: Type type } keywords] + } fullTextScoreFunction + when !UseOldBehavior35476 && !UseOldBehavior35983 && type == typeof(string[]): + { + var keywordValues = new List(); + foreach (var value in (IEnumerable)parametersValues[keywords.Name]) + { + keywordValues.Add(sqlExpressionFactory.Constant(value, typeof(string), elementTypeMapping)); + } + + return new SqlFunctionExpression( + fullTextScoreFunction.Name, + isScoringFunction: true, + [property, .. keywordValues], + fullTextScoreFunction.Type, + fullTextScoreFunction.TypeMapping); + } + + // Legacy path for #35983 + // Inlines array parameter of full-text score, transforming FullTextScore(x, @keywordsArray) to FullTextScore(x, [keyword1, keyword2]) case SqlFunctionExpression { Name: "FullTextScore", IsScoringFunction: true, Arguments: [var property, SqlParameterExpression { TypeMapping: { ElementTypeMapping: not null } typeMapping } keywords] } fullTextScoreFunction - when !UseOldBehavior35476: + when !UseOldBehavior35476 && UseOldBehavior35983: { var keywordValues = new List(); foreach (var value in (IEnumerable)parametersValues[keywords.Name]) diff --git a/src/EFCore.Cosmos/Query/Internal/Translators/CosmosFullTextSearchTranslator.cs b/src/EFCore.Cosmos/Query/Internal/Translators/CosmosFullTextSearchTranslator.cs index 11c4209100e..db9995c074e 100644 --- a/src/EFCore.Cosmos/Query/Internal/Translators/CosmosFullTextSearchTranslator.cs +++ b/src/EFCore.Cosmos/Query/Internal/Translators/CosmosFullTextSearchTranslator.cs @@ -15,7 +15,10 @@ public class CosmosFullTextSearchTranslator(ISqlExpressionFactory sqlExpressionF : IMethodCallTranslator { private static readonly bool UseOldBehavior35476 = - AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35476", out var enabled35476) && enabled35476; + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35476", out var enabled35476) && enabled35476; + + private static readonly bool UseOldBehavior35983 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue35983", out var enabled35983) && enabled35983; /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to @@ -47,13 +50,36 @@ public class CosmosFullTextSearchTranslator(ISqlExpressionFactory sqlExpressionF typeMappingSource.FindMapping(typeof(bool))), nameof(CosmosDbFunctionsExtensions.FullTextScore) - when arguments is [_, var property, var keywords] => BuildScoringFunction( + when !UseOldBehavior35983 && arguments is [_, SqlExpression property, SqlConstantExpression { Type: var keywordClrType, Value: string[] values } keywords] + && keywordClrType == typeof(string[]) => BuildScoringFunction( + sqlExpressionFactory, + "FullTextScore", + [property, .. values.Select(x => sqlExpressionFactory.Constant(x))], + typeof(double), + typeMappingSource.FindMapping(typeof(double))), + + nameof(CosmosDbFunctionsExtensions.FullTextScore) + when !UseOldBehavior35983 && arguments is [_, SqlExpression property, SqlParameterExpression { Type: var keywordClrType } keywords] + && keywordClrType == typeof(string[]) => BuildScoringFunction( + sqlExpressionFactory, + "FullTextScore", + [property, keywords], + typeof(double), + typeMappingSource.FindMapping(typeof(double))), + + nameof(CosmosDbFunctionsExtensions.FullTextScore) + when !UseOldBehavior35983 && arguments is [_, SqlExpression property, ArrayConstantExpression keywords] => BuildScoringFunction( sqlExpressionFactory, "FullTextScore", - [ - property, - keywords, - ], + [property, .. keywords.Items], + typeof(double), + typeMappingSource.FindMapping(typeof(double))), + + nameof(CosmosDbFunctionsExtensions.FullTextScore) + when UseOldBehavior35983 && arguments is [_, var property, var keywords] => BuildScoringFunction( + sqlExpressionFactory, + "FullTextScore", + [property, keywords], typeof(double), typeMappingSource.FindMapping(typeof(double))), From db3af35867d38aba6d106c15ce3e7b33f2811b8a Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 21:59:57 +0000 Subject: [PATCH 62/79] Update dependencies from https://github.com/dotnet/arcade build 20250513.4 (#36085) [release/8.0] Update dependencies from dotnet/arcade --- NuGet.config | 6 ------ eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- eng/common/sdl/packages.config | 2 +- eng/common/templates-official/job/source-build.yml | 2 +- .../templates-official/job/source-index-stage1.yml | 4 ++-- eng/common/templates-official/jobs/source-build.yml | 2 +- eng/common/templates/job/source-build.yml | 4 ++-- eng/common/templates/job/source-index-stage1.yml | 4 ++-- eng/common/templates/jobs/source-build.yml | 2 +- global.json | 8 ++++---- 11 files changed, 21 insertions(+), 27 deletions(-) diff --git a/NuGet.config b/NuGet.config index ec8464124ac..77b2bf048ad 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,9 +4,6 @@ - - - @@ -21,9 +18,6 @@ - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3ec3bc94ab6..2c582c662bd 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -60,17 +60,17 @@ - + https://github.com/dotnet/arcade - c7a36e53f91e41943746f97a8c183549364c5092 + 20ab70a74d52b68f4271bd946884e24049b14f83 - + https://github.com/dotnet/arcade - c7a36e53f91e41943746f97a8c183549364c5092 + 20ab70a74d52b68f4271bd946884e24049b14f83 - + https://github.com/dotnet/arcade - c7a36e53f91e41943746f97a8c183549364c5092 + 20ab70a74d52b68f4271bd946884e24049b14f83 diff --git a/eng/Versions.props b/eng/Versions.props index e0e31facadb..5c71a0e53c1 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -33,7 +33,7 @@ 8.0.15-servicing.25164.13 - 8.0.0-beta.25208.7 + 8.0.0-beta.25263.4 diff --git a/eng/common/sdl/packages.config b/eng/common/sdl/packages.config index 4585cfd6bba..e5f543ea68c 100644 --- a/eng/common/sdl/packages.config +++ b/eng/common/sdl/packages.config @@ -1,4 +1,4 @@ - + diff --git a/eng/common/templates-official/job/source-build.yml b/eng/common/templates-official/job/source-build.yml index f983033bb02..4217d6d8b14 100644 --- a/eng/common/templates-official/job/source-build.yml +++ b/eng/common/templates-official/job/source-build.yml @@ -54,7 +54,7 @@ jobs: pool: ${{ if eq(variables['System.TeamProject'], 'public') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] - demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open + demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] diff --git a/eng/common/templates-official/job/source-index-stage1.yml b/eng/common/templates-official/job/source-index-stage1.yml index 60dfb6b2d1c..fb632b71a25 100644 --- a/eng/common/templates-official/job/source-index-stage1.yml +++ b/eng/common/templates-official/job/source-index-stage1.yml @@ -1,7 +1,7 @@ parameters: runAsPublic: false - sourceIndexUploadPackageVersion: 2.0.0-20240502.12 - sourceIndexProcessBinlogPackageVersion: 1.0.1-20240129.2 + sourceIndexUploadPackageVersion: 2.0.0-20250425.2 + sourceIndexProcessBinlogPackageVersion: 1.0.1-20250425.2 sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" preSteps: [] diff --git a/eng/common/templates-official/jobs/source-build.yml b/eng/common/templates-official/jobs/source-build.yml index 5cf6a269c0b..b9247be1547 100644 --- a/eng/common/templates-official/jobs/source-build.yml +++ b/eng/common/templates-official/jobs/source-build.yml @@ -14,7 +14,7 @@ parameters: # This is the default platform provided by Arcade, intended for use by a managed-only repo. defaultManagedPlatform: name: 'Managed' - container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8' + container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-9-amd64' # Defines the platforms on which to run build jobs. One job is created for each platform, and the # object in this array is sent to the job template as 'platform'. If no platforms are specified, diff --git a/eng/common/templates/job/source-build.yml b/eng/common/templates/job/source-build.yml index c0ff472b697..c48f95d93d9 100644 --- a/eng/common/templates/job/source-build.yml +++ b/eng/common/templates/job/source-build.yml @@ -54,11 +54,11 @@ jobs: pool: ${{ if eq(variables['System.TeamProject'], 'public') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] - demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open + demands: ImageOverride -equals Build.Ubuntu.2204.Amd64.Open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - demands: ImageOverride -equals Build.Ubuntu.1804.Amd64 + demands: ImageOverride -equals Build.Ubuntu.2204.Amd64 ${{ if ne(parameters.platform.pool, '') }}: pool: ${{ parameters.platform.pool }} diff --git a/eng/common/templates/job/source-index-stage1.yml b/eng/common/templates/job/source-index-stage1.yml index 0b6bb89dc78..8538f44bab2 100644 --- a/eng/common/templates/job/source-index-stage1.yml +++ b/eng/common/templates/job/source-index-stage1.yml @@ -1,7 +1,7 @@ parameters: runAsPublic: false - sourceIndexUploadPackageVersion: 2.0.0-20240502.12 - sourceIndexProcessBinlogPackageVersion: 1.0.1-20240129.2 + sourceIndexUploadPackageVersion: 2.0.0-20250425.2 + sourceIndexProcessBinlogPackageVersion: 1.0.1-20250425.2 sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" preSteps: [] diff --git a/eng/common/templates/jobs/source-build.yml b/eng/common/templates/jobs/source-build.yml index 5f46bfa895c..3ec99710810 100644 --- a/eng/common/templates/jobs/source-build.yml +++ b/eng/common/templates/jobs/source-build.yml @@ -14,7 +14,7 @@ parameters: # This is the default platform provided by Arcade, intended for use by a managed-only repo. defaultManagedPlatform: name: 'Managed' - container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8' + container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-9-amd64' # Defines the platforms on which to run build jobs. One job is created for each platform, and the # object in this array is sent to the job template as 'platform'. If no platforms are specified, diff --git a/global.json b/global.json index d1843569289..59a75ab3972 100644 --- a/global.json +++ b/global.json @@ -1,11 +1,11 @@ { "sdk": { - "version": "8.0.115", + "version": "8.0.116", "allowPrerelease": true, "rollForward": "latestMajor" }, "tools": { - "dotnet": "8.0.115", + "dotnet": "8.0.116", "runtimes": { "dotnet": [ "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)" @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25208.7", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.25208.7" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25263.4", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.25263.4" } } From b677f33f6831c14b0883e576bf15230544b05ced Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 22:26:44 +0000 Subject: [PATCH 63/79] [release/9.0] Update dependencies from dotnet/arcade (#36065) [release/9.0] Update dependencies from dotnet/arcade --- eng/Version.Details.xml | 12 +- eng/Versions.props | 2 +- global.json | 8 +- .../build-configuration.json | 4 + .../eng/common/PSScriptAnalyzerSettings.psd1 | 11 + src/arcade/eng/common/README.md | 28 ++ src/arcade/eng/common/SetupNugetSources.ps1 | 171 ++++++++ src/arcade/eng/common/SetupNugetSources.sh | 167 ++++++++ src/arcade/eng/common/build.cmd | 3 + .../common/core-templates/job/onelocbuild.yml | 121 ++++++ .../core-templates/jobs/source-build.yml | 58 +++ .../post-build/common-variables.yml | 22 + .../post-build/setup-maestro-vars.yml | 74 ++++ .../steps/component-governance.yml | 16 + .../steps/enable-internal-runtimes.yml | 32 ++ .../steps/enable-internal-sources.yml | 47 ++ .../steps/get-federated-access-token.yml | 42 ++ .../steps/publish-build-artifacts.yml | 20 + .../steps/publish-pipeline-artifacts.yml | 20 + .../core-templates/steps/retain-build.yml | 28 ++ .../core-templates/steps/send-to-helix.yml | 93 ++++ .../variables/pool-providers.yml | 8 + .../eng/common/cross/armel/tizen/tizen.patch | 9 + .../common/cross/riscv64/tizen/tizen.patch | 9 + .../eng/common/cross/tizen-build-rootfs.sh | 82 ++++ src/arcade/eng/common/darc-init.ps1 | 47 ++ src/arcade/eng/common/darc-init.sh | 82 ++++ src/arcade/eng/common/dotnet-install.cmd | 2 + src/arcade/eng/common/dotnet-install.ps1 | 28 ++ src/arcade/eng/common/dotnet-install.sh | 94 ++++ .../common/enable-cross-org-publishing.ps1 | 13 + src/arcade/eng/common/generate-locproject.ps1 | 189 +++++++++ src/arcade/eng/common/generate-sbom-prep.ps1 | 29 ++ src/arcade/eng/common/generate-sbom-prep.sh | 39 ++ src/arcade/eng/common/helixpublish.proj | 27 ++ src/arcade/eng/common/init-tools-native.cmd | 3 + src/arcade/eng/common/init-tools-native.ps1 | 203 +++++++++ src/arcade/eng/common/init-tools-native.sh | 238 +++++++++++ .../eng/common/internal-feed-operations.ps1 | 132 ++++++ .../eng/common/internal-feed-operations.sh | 141 ++++++ .../eng/common/internal/Directory.Build.props | 11 + src/arcade/eng/common/internal/NuGet.config | 7 + src/arcade/eng/common/internal/Tools.csproj | 22 + .../common/loc/P22DotNetHtmlLocalization.lss | 29 ++ src/arcade/eng/common/msbuild.ps1 | 28 ++ src/arcade/eng/common/msbuild.sh | 58 +++ .../eng/common/native/CommonLibrary.psm1 | 401 ++++++++++++++++++ .../eng/common/native/common-library.sh | 172 ++++++++ src/arcade/eng/common/native/init-compiler.sh | 146 +++++++ .../eng/common/native/init-distro-rid.sh | 110 +++++ .../eng/common/native/init-os-and-arch.sh | 85 ++++ .../eng/common/native/install-cmake-test.sh | 117 +++++ src/arcade/eng/common/native/install-cmake.sh | 117 +++++ src/arcade/eng/common/native/install-tool.ps1 | 132 ++++++ .../eng/common/pipeline-logging-functions.ps1 | 260 ++++++++++++ .../eng/common/pipeline-logging-functions.sh | 206 +++++++++ .../post-build/check-channel-consistency.ps1 | 48 +++ .../common/post-build/nuget-validation.ps1 | 22 + .../common/post-build/nuget-verification.ps1 | 121 ++++++ .../eng/common/post-build/redact-logs.ps1 | 89 ++++ .../post-build/sourcelink-validation.ps1 | 327 ++++++++++++++ .../common/post-build/symbols-validation.ps1 | 337 +++++++++++++++ src/arcade/eng/common/retain-build.ps1 | 45 ++ src/arcade/eng/common/sdl/NuGet.config | 18 + .../eng/common/sdl/configure-sdl-tool.ps1 | 130 ++++++ .../eng/common/sdl/execute-all-sdl-tools.ps1 | 167 ++++++++ .../common/sdl/extract-artifact-archives.ps1 | 63 +++ .../common/sdl/extract-artifact-packages.ps1 | 82 ++++ src/arcade/eng/common/sdl/init-sdl.ps1 | 55 +++ src/arcade/eng/common/sdl/run-sdl.ps1 | 49 +++ src/arcade/eng/common/sdl/sdl.ps1 | 38 ++ .../eng/common/sdl/trim-assets-version.ps1 | 75 ++++ src/arcade/eng/common/template-guidance.md | 133 ++++++ .../templates-official/job/onelocbuild.yml | 7 + .../job/publish-build-assets.yml | 7 + .../templates-official/job/source-build.yml | 7 + .../job/source-index-stage1.yml | 7 + .../templates-official/jobs/codeql-build.yml | 7 + .../common/templates-official/jobs/jobs.yml | 7 + .../templates-official/jobs/source-build.yml | 7 + .../post-build/common-variables.yml | 8 + .../post-build/post-build.yml | 8 + .../post-build/setup-maestro-vars.yml | 8 + .../steps/component-governance.yml | 7 + .../steps/enable-internal-runtimes.yml | 9 + .../steps/enable-internal-sources.yml | 7 + .../steps/generate-sbom.yml | 7 + .../steps/get-delegation-sas.yml | 7 + .../steps/get-federated-access-token.yml | 7 + .../templates-official/steps/publish-logs.yml | 7 + .../steps/publish-pipeline-artifacts.yml | 28 ++ .../templates-official/steps/retain-build.yml | 7 + .../steps/send-to-helix.yml | 7 + .../templates-official/steps/source-build.yml | 7 + .../variables/pool-providers.yml | 45 ++ .../variables/sdl-variables.yml | 7 + .../eng/common/templates/job/onelocbuild.yml | 7 + .../templates/job/publish-build-assets.yml | 7 + .../eng/common/templates/job/source-build.yml | 7 + .../templates/job/source-index-stage1.yml | 7 + .../common/templates/jobs/codeql-build.yml | 7 + src/arcade/eng/common/templates/jobs/jobs.yml | 7 + .../common/templates/jobs/source-build.yml | 7 + .../templates/post-build/common-variables.yml | 8 + .../templates/post-build/post-build.yml | 8 + .../post-build/setup-maestro-vars.yml | 8 + .../templates/steps/component-governance.yml | 7 + .../steps/enable-internal-runtimes.yml | 10 + .../steps/enable-internal-sources.yml | 7 + .../common/templates/steps/generate-sbom.yml | 7 + .../templates/steps/get-delegation-sas.yml | 7 + .../steps/get-federated-access-token.yml | 7 + .../common/templates/steps/publish-logs.yml | 7 + .../steps/publish-pipeline-artifacts.yml | 34 ++ .../common/templates/steps/retain-build.yml | 7 + .../common/templates/steps/send-to-helix.yml | 7 + .../common/templates/steps/source-build.yml | 7 + .../templates/variables/pool-providers.yml | 59 +++ 118 files changed, 6507 insertions(+), 11 deletions(-) create mode 100644 src/arcade/eng/common/BuildConfiguration/build-configuration.json create mode 100644 src/arcade/eng/common/PSScriptAnalyzerSettings.psd1 create mode 100644 src/arcade/eng/common/README.md create mode 100644 src/arcade/eng/common/SetupNugetSources.ps1 create mode 100644 src/arcade/eng/common/SetupNugetSources.sh create mode 100644 src/arcade/eng/common/build.cmd create mode 100644 src/arcade/eng/common/core-templates/job/onelocbuild.yml create mode 100644 src/arcade/eng/common/core-templates/jobs/source-build.yml create mode 100644 src/arcade/eng/common/core-templates/post-build/common-variables.yml create mode 100644 src/arcade/eng/common/core-templates/post-build/setup-maestro-vars.yml create mode 100644 src/arcade/eng/common/core-templates/steps/component-governance.yml create mode 100644 src/arcade/eng/common/core-templates/steps/enable-internal-runtimes.yml create mode 100644 src/arcade/eng/common/core-templates/steps/enable-internal-sources.yml create mode 100644 src/arcade/eng/common/core-templates/steps/get-federated-access-token.yml create mode 100644 src/arcade/eng/common/core-templates/steps/publish-build-artifacts.yml create mode 100644 src/arcade/eng/common/core-templates/steps/publish-pipeline-artifacts.yml create mode 100644 src/arcade/eng/common/core-templates/steps/retain-build.yml create mode 100644 src/arcade/eng/common/core-templates/steps/send-to-helix.yml create mode 100644 src/arcade/eng/common/core-templates/variables/pool-providers.yml create mode 100644 src/arcade/eng/common/cross/armel/tizen/tizen.patch create mode 100644 src/arcade/eng/common/cross/riscv64/tizen/tizen.patch create mode 100644 src/arcade/eng/common/cross/tizen-build-rootfs.sh create mode 100644 src/arcade/eng/common/darc-init.ps1 create mode 100644 src/arcade/eng/common/darc-init.sh create mode 100644 src/arcade/eng/common/dotnet-install.cmd create mode 100644 src/arcade/eng/common/dotnet-install.ps1 create mode 100644 src/arcade/eng/common/dotnet-install.sh create mode 100644 src/arcade/eng/common/enable-cross-org-publishing.ps1 create mode 100644 src/arcade/eng/common/generate-locproject.ps1 create mode 100644 src/arcade/eng/common/generate-sbom-prep.ps1 create mode 100644 src/arcade/eng/common/generate-sbom-prep.sh create mode 100644 src/arcade/eng/common/helixpublish.proj create mode 100644 src/arcade/eng/common/init-tools-native.cmd create mode 100644 src/arcade/eng/common/init-tools-native.ps1 create mode 100644 src/arcade/eng/common/init-tools-native.sh create mode 100644 src/arcade/eng/common/internal-feed-operations.ps1 create mode 100644 src/arcade/eng/common/internal-feed-operations.sh create mode 100644 src/arcade/eng/common/internal/Directory.Build.props create mode 100644 src/arcade/eng/common/internal/NuGet.config create mode 100644 src/arcade/eng/common/internal/Tools.csproj create mode 100644 src/arcade/eng/common/loc/P22DotNetHtmlLocalization.lss create mode 100644 src/arcade/eng/common/msbuild.ps1 create mode 100644 src/arcade/eng/common/msbuild.sh create mode 100644 src/arcade/eng/common/native/CommonLibrary.psm1 create mode 100644 src/arcade/eng/common/native/common-library.sh create mode 100644 src/arcade/eng/common/native/init-compiler.sh create mode 100644 src/arcade/eng/common/native/init-distro-rid.sh create mode 100644 src/arcade/eng/common/native/init-os-and-arch.sh create mode 100644 src/arcade/eng/common/native/install-cmake-test.sh create mode 100644 src/arcade/eng/common/native/install-cmake.sh create mode 100644 src/arcade/eng/common/native/install-tool.ps1 create mode 100644 src/arcade/eng/common/pipeline-logging-functions.ps1 create mode 100644 src/arcade/eng/common/pipeline-logging-functions.sh create mode 100644 src/arcade/eng/common/post-build/check-channel-consistency.ps1 create mode 100644 src/arcade/eng/common/post-build/nuget-validation.ps1 create mode 100644 src/arcade/eng/common/post-build/nuget-verification.ps1 create mode 100644 src/arcade/eng/common/post-build/redact-logs.ps1 create mode 100644 src/arcade/eng/common/post-build/sourcelink-validation.ps1 create mode 100644 src/arcade/eng/common/post-build/symbols-validation.ps1 create mode 100644 src/arcade/eng/common/retain-build.ps1 create mode 100644 src/arcade/eng/common/sdl/NuGet.config create mode 100644 src/arcade/eng/common/sdl/configure-sdl-tool.ps1 create mode 100644 src/arcade/eng/common/sdl/execute-all-sdl-tools.ps1 create mode 100644 src/arcade/eng/common/sdl/extract-artifact-archives.ps1 create mode 100644 src/arcade/eng/common/sdl/extract-artifact-packages.ps1 create mode 100644 src/arcade/eng/common/sdl/init-sdl.ps1 create mode 100644 src/arcade/eng/common/sdl/run-sdl.ps1 create mode 100644 src/arcade/eng/common/sdl/sdl.ps1 create mode 100644 src/arcade/eng/common/sdl/trim-assets-version.ps1 create mode 100644 src/arcade/eng/common/template-guidance.md create mode 100644 src/arcade/eng/common/templates-official/job/onelocbuild.yml create mode 100644 src/arcade/eng/common/templates-official/job/publish-build-assets.yml create mode 100644 src/arcade/eng/common/templates-official/job/source-build.yml create mode 100644 src/arcade/eng/common/templates-official/job/source-index-stage1.yml create mode 100644 src/arcade/eng/common/templates-official/jobs/codeql-build.yml create mode 100644 src/arcade/eng/common/templates-official/jobs/jobs.yml create mode 100644 src/arcade/eng/common/templates-official/jobs/source-build.yml create mode 100644 src/arcade/eng/common/templates-official/post-build/common-variables.yml create mode 100644 src/arcade/eng/common/templates-official/post-build/post-build.yml create mode 100644 src/arcade/eng/common/templates-official/post-build/setup-maestro-vars.yml create mode 100644 src/arcade/eng/common/templates-official/steps/component-governance.yml create mode 100644 src/arcade/eng/common/templates-official/steps/enable-internal-runtimes.yml create mode 100644 src/arcade/eng/common/templates-official/steps/enable-internal-sources.yml create mode 100644 src/arcade/eng/common/templates-official/steps/generate-sbom.yml create mode 100644 src/arcade/eng/common/templates-official/steps/get-delegation-sas.yml create mode 100644 src/arcade/eng/common/templates-official/steps/get-federated-access-token.yml create mode 100644 src/arcade/eng/common/templates-official/steps/publish-logs.yml create mode 100644 src/arcade/eng/common/templates-official/steps/publish-pipeline-artifacts.yml create mode 100644 src/arcade/eng/common/templates-official/steps/retain-build.yml create mode 100644 src/arcade/eng/common/templates-official/steps/send-to-helix.yml create mode 100644 src/arcade/eng/common/templates-official/steps/source-build.yml create mode 100644 src/arcade/eng/common/templates-official/variables/pool-providers.yml create mode 100644 src/arcade/eng/common/templates-official/variables/sdl-variables.yml create mode 100644 src/arcade/eng/common/templates/job/onelocbuild.yml create mode 100644 src/arcade/eng/common/templates/job/publish-build-assets.yml create mode 100644 src/arcade/eng/common/templates/job/source-build.yml create mode 100644 src/arcade/eng/common/templates/job/source-index-stage1.yml create mode 100644 src/arcade/eng/common/templates/jobs/codeql-build.yml create mode 100644 src/arcade/eng/common/templates/jobs/jobs.yml create mode 100644 src/arcade/eng/common/templates/jobs/source-build.yml create mode 100644 src/arcade/eng/common/templates/post-build/common-variables.yml create mode 100644 src/arcade/eng/common/templates/post-build/post-build.yml create mode 100644 src/arcade/eng/common/templates/post-build/setup-maestro-vars.yml create mode 100644 src/arcade/eng/common/templates/steps/component-governance.yml create mode 100644 src/arcade/eng/common/templates/steps/enable-internal-runtimes.yml create mode 100644 src/arcade/eng/common/templates/steps/enable-internal-sources.yml create mode 100644 src/arcade/eng/common/templates/steps/generate-sbom.yml create mode 100644 src/arcade/eng/common/templates/steps/get-delegation-sas.yml create mode 100644 src/arcade/eng/common/templates/steps/get-federated-access-token.yml create mode 100644 src/arcade/eng/common/templates/steps/publish-logs.yml create mode 100644 src/arcade/eng/common/templates/steps/publish-pipeline-artifacts.yml create mode 100644 src/arcade/eng/common/templates/steps/retain-build.yml create mode 100644 src/arcade/eng/common/templates/steps/send-to-helix.yml create mode 100644 src/arcade/eng/common/templates/steps/source-build.yml create mode 100644 src/arcade/eng/common/templates/variables/pool-providers.yml diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7c8d894592f..1326215c2eb 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - bfbc858ba868b60fffaf7b2150f1d2165b01e786 + 93823d49ca01742464ad1c0b49ea940e693b1be3 - + https://github.com/dotnet/arcade - bfbc858ba868b60fffaf7b2150f1d2165b01e786 + 93823d49ca01742464ad1c0b49ea940e693b1be3 - + https://github.com/dotnet/arcade - bfbc858ba868b60fffaf7b2150f1d2165b01e786 + 93823d49ca01742464ad1c0b49ea940e693b1be3 diff --git a/eng/Versions.props b/eng/Versions.props index 227990ca8f2..0f6fecc8ee5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.4 - 9.0.0-beta.25225.6 + 9.0.0-beta.25263.5 17.8.3 diff --git a/global.json b/global.json index 93d3c09d1de..35da46f6c9b 100644 --- a/global.json +++ b/global.json @@ -1,11 +1,11 @@ { "sdk": { - "version": "9.0.105", + "version": "9.0.106", "allowPrerelease": true, "rollForward": "latestMajor" }, "tools": { - "dotnet": "9.0.105", + "dotnet": "9.0.106", "runtimes": { "dotnet": [ "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)" @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25225.6", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25225.6" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25263.5", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25263.5" } } diff --git a/src/arcade/eng/common/BuildConfiguration/build-configuration.json b/src/arcade/eng/common/BuildConfiguration/build-configuration.json new file mode 100644 index 00000000000..3d1cc89894c --- /dev/null +++ b/src/arcade/eng/common/BuildConfiguration/build-configuration.json @@ -0,0 +1,4 @@ +{ + "RetryCountLimit": 1, + "RetryByAnyError": false +} diff --git a/src/arcade/eng/common/PSScriptAnalyzerSettings.psd1 b/src/arcade/eng/common/PSScriptAnalyzerSettings.psd1 new file mode 100644 index 00000000000..4c1ea7c98ea --- /dev/null +++ b/src/arcade/eng/common/PSScriptAnalyzerSettings.psd1 @@ -0,0 +1,11 @@ +@{ + IncludeRules=@('PSAvoidUsingCmdletAliases', + 'PSAvoidUsingWMICmdlet', + 'PSAvoidUsingPositionalParameters', + 'PSAvoidUsingInvokeExpression', + 'PSUseDeclaredVarsMoreThanAssignments', + 'PSUseCmdletCorrectly', + 'PSStandardDSCFunctionsInResource', + 'PSUseIdenticalMandatoryParametersForDSC', + 'PSUseIdenticalParametersForDSC') +} \ No newline at end of file diff --git a/src/arcade/eng/common/README.md b/src/arcade/eng/common/README.md new file mode 100644 index 00000000000..ff49c371527 --- /dev/null +++ b/src/arcade/eng/common/README.md @@ -0,0 +1,28 @@ +# Don't touch this folder + + uuuuuuuuuuuuuuuuuuuu + u" uuuuuuuuuuuuuuuuuu "u + u" u$$$$$$$$$$$$$$$$$$$$u "u + u" u$$$$$$$$$$$$$$$$$$$$$$$$u "u + u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u + u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u + u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u + $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ + $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ + $ $$$" ... "$... ...$" ... "$$$ ... "$$$ $ + $ $$$u `"$$$$$$$ $$$ $$$$$ $$ $$$ $$$ $ + $ $$$$$$uu "$$$$ $$$ $$$$$ $$ """ u$$$ $ + $ $$$""$$$ $$$$ $$$u "$$$" u$$ $$$$$$$$ $ + $ $$$$....,$$$$$..$$$$$....,$$$$..$$$$$$$$ $ + $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ + "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u" + "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u" + "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u" + "u "$$$$$$$$$$$$$$$$$$$$$$$$" u" + "u "$$$$$$$$$$$$$$$$$$$$" u" + "u """""""""""""""""" u" + """""""""""""""""""" + +!!! Changes made in this directory are subject to being overwritten by automation !!! + +The files in this directory are shared by all Arcade repos and managed by automation. If you need to make changes to these files, open an issue or submit a pull request to https://github.com/dotnet/arcade first. diff --git a/src/arcade/eng/common/SetupNugetSources.ps1 b/src/arcade/eng/common/SetupNugetSources.ps1 new file mode 100644 index 00000000000..5db4ad71ee2 --- /dev/null +++ b/src/arcade/eng/common/SetupNugetSources.ps1 @@ -0,0 +1,171 @@ +# This script adds internal feeds required to build commits that depend on internal package sources. For instance, +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables +# disabled internal Maestro (darc-int*) feeds. +# +# Optionally, this script also adds a credential entry for each of the internal feeds if supplied. +# +# See example call for this script below. +# +# - task: PowerShell@2 +# displayName: Setup Private Feeds Credentials +# condition: eq(variables['Agent.OS'], 'Windows_NT') +# inputs: +# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 +# arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token +# env: +# Token: $(dn-bot-dnceng-artifact-feeds-rw) +# +# Note that the NuGetAuthenticate task should be called after SetupNugetSources. +# This ensures that: +# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt) +# - The credential provider is installed. +# +# This logic is also abstracted into enable-internal-sources.yml. + +[CmdletBinding()] +param ( + [Parameter(Mandatory = $true)][string]$ConfigFile, + $Password +) + +$ErrorActionPreference = "Stop" +Set-StrictMode -Version 2.0 +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + +. $PSScriptRoot\tools.ps1 + +# Add source entry to PackageSources +function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) { + $packageSource = $sources.SelectSingleNode("add[@key='$SourceName']") + + if ($packageSource -eq $null) + { + $packageSource = $doc.CreateElement("add") + $packageSource.SetAttribute("key", $SourceName) + $packageSource.SetAttribute("value", $SourceEndPoint) + $sources.AppendChild($packageSource) | Out-Null + } + else { + Write-Host "Package source $SourceName already present." + } + + AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd +} + +# Add a credential node for the specified source +function AddCredential($creds, $source, $username, $pwd) { + # If no cred supplied, don't do anything. + if (!$pwd) { + return; + } + + # Looks for credential configuration for the given SourceName. Create it if none is found. + $sourceElement = $creds.SelectSingleNode($Source) + if ($sourceElement -eq $null) + { + $sourceElement = $doc.CreateElement($Source) + $creds.AppendChild($sourceElement) | Out-Null + } + + # Add the node to the credential if none is found. + $usernameElement = $sourceElement.SelectSingleNode("add[@key='Username']") + if ($usernameElement -eq $null) + { + $usernameElement = $doc.CreateElement("add") + $usernameElement.SetAttribute("key", "Username") + $sourceElement.AppendChild($usernameElement) | Out-Null + } + $usernameElement.SetAttribute("value", $Username) + + # Add the to the credential if none is found. + # Add it as a clear text because there is no support for encrypted ones in non-windows .Net SDKs. + # -> https://github.com/NuGet/Home/issues/5526 + $passwordElement = $sourceElement.SelectSingleNode("add[@key='ClearTextPassword']") + if ($passwordElement -eq $null) + { + $passwordElement = $doc.CreateElement("add") + $passwordElement.SetAttribute("key", "ClearTextPassword") + $sourceElement.AppendChild($passwordElement) | Out-Null + } + + $passwordElement.SetAttribute("value", $pwd) +} + +function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $pwd) { + $maestroPrivateSources = $Sources.SelectNodes("add[contains(@key,'darc-int')]") + + Write-Host "Inserting credentials for $($maestroPrivateSources.Count) Maestro's private feeds." + + ForEach ($PackageSource in $maestroPrivateSources) { + Write-Host "`tInserting credential for Maestro's feed:" $PackageSource.Key + AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -pwd $pwd + } +} + +function EnablePrivatePackageSources($DisabledPackageSources) { + $maestroPrivateSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]") + ForEach ($DisabledPackageSource in $maestroPrivateSources) { + Write-Host "`tEnsuring private source '$($DisabledPackageSource.key)' is enabled by deleting it from disabledPackageSource" + # Due to https://github.com/NuGet/Home/issues/10291, we must actually remove the disabled entries + $DisabledPackageSources.RemoveChild($DisabledPackageSource) + } +} + +if (!(Test-Path $ConfigFile -PathType Leaf)) { + Write-PipelineTelemetryError -Category 'Build' -Message "Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile" + ExitWithExitCode 1 +} + +# Load NuGet.config +$doc = New-Object System.Xml.XmlDocument +$filename = (Get-Item $ConfigFile).FullName +$doc.Load($filename) + +# Get reference to or create one if none exist already +$sources = $doc.DocumentElement.SelectSingleNode("packageSources") +if ($sources -eq $null) { + $sources = $doc.CreateElement("packageSources") + $doc.DocumentElement.AppendChild($sources) | Out-Null +} + +$creds = $null +if ($Password) { + # Looks for a node. Create it if none is found. + $creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials") + if ($creds -eq $null) { + $creds = $doc.CreateElement("packageSourceCredentials") + $doc.DocumentElement.AppendChild($creds) | Out-Null + } +} + +# Check for disabledPackageSources; we'll enable any darc-int ones we find there +$disabledSources = $doc.DocumentElement.SelectSingleNode("disabledPackageSources") +if ($disabledSources -ne $null) { + Write-Host "Checking for any darc-int disabled package sources in the disabledPackageSources node" + EnablePrivatePackageSources -DisabledPackageSources $disabledSources +} + +$userName = "dn-bot" + +# Insert credential nodes for Maestro's private feeds +InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -pwd $Password + +# 3.1 uses a different feed url format so it's handled differently here +$dotnet31Source = $sources.SelectSingleNode("add[@key='dotnet3.1']") +if ($dotnet31Source -ne $null) { + AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password + AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password +} + +$dotnetVersions = @('5','6','7','8','9') + +foreach ($dotnetVersion in $dotnetVersions) { + $feedPrefix = "dotnet" + $dotnetVersion; + $dotnetSource = $sources.SelectSingleNode("add[@key='$feedPrefix']") + if ($dotnetSource -ne $null) { + AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password + AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password + } +} + +$doc.Save($filename) diff --git a/src/arcade/eng/common/SetupNugetSources.sh b/src/arcade/eng/common/SetupNugetSources.sh new file mode 100644 index 00000000000..4604b61b032 --- /dev/null +++ b/src/arcade/eng/common/SetupNugetSources.sh @@ -0,0 +1,167 @@ +#!/usr/bin/env bash + +# This script adds internal feeds required to build commits that depend on internal package sources. For instance, +# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables +# disabled internal Maestro (darc-int*) feeds. +# +# Optionally, this script also adds a credential entry for each of the internal feeds if supplied. +# +# See example call for this script below. +# +# - task: Bash@3 +# displayName: Setup Internal Feeds +# inputs: +# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh +# arguments: $(Build.SourcesDirectory)/NuGet.config +# condition: ne(variables['Agent.OS'], 'Windows_NT') +# - task: NuGetAuthenticate@1 +# +# Note that the NuGetAuthenticate task should be called after SetupNugetSources. +# This ensures that: +# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt) +# - The credential provider is installed. +# +# This logic is also abstracted into enable-internal-sources.yml. + +ConfigFile=$1 +CredToken=$2 +NL='\n' +TB=' ' + +source="${BASH_SOURCE[0]}" + +# resolve $source until the file is no longer a symlink +while [[ -h "$source" ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +. "$scriptroot/tools.sh" + +if [ ! -f "$ConfigFile" ]; then + Write-PipelineTelemetryError -Category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile" + ExitWithExitCode 1 +fi + +if [[ `uname -s` == "Darwin" ]]; then + NL=$'\\\n' + TB='' +fi + +# Ensure there is a ... section. +grep -i "" $ConfigFile +if [ "$?" != "0" ]; then + echo "Adding ... section." + ConfigNodeHeader="" + PackageSourcesTemplate="${TB}${NL}${TB}" + + sed -i.bak "s|$ConfigNodeHeader|$ConfigNodeHeader${NL}$PackageSourcesTemplate|" $ConfigFile +fi + +# Ensure there is a ... section. +grep -i "" $ConfigFile +if [ "$?" != "0" ]; then + echo "Adding ... section." + + PackageSourcesNodeFooter="" + PackageSourceCredentialsTemplate="${TB}${NL}${TB}" + + sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourcesNodeFooter${NL}$PackageSourceCredentialsTemplate|" $ConfigFile +fi + +PackageSources=() + +# Ensure dotnet3.1-internal and dotnet3.1-internal-transport are in the packageSources if the public dotnet3.1 feeds are present +grep -i "" + + sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile + fi + PackageSources+=('dotnet3.1-internal') + + grep -i "" $ConfigFile + if [ "$?" != "0" ]; then + echo "Adding dotnet3.1-internal-transport to the packageSources." + PackageSourcesNodeFooter="" + PackageSourceTemplate="${TB}" + + sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile + fi + PackageSources+=('dotnet3.1-internal-transport') +fi + +DotNetVersions=('5' '6' '7' '8' '9') + +for DotNetVersion in ${DotNetVersions[@]} ; do + FeedPrefix="dotnet${DotNetVersion}"; + grep -i "" + + sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile + fi + PackageSources+=("$FeedPrefix-internal") + + grep -i "" $ConfigFile + if [ "$?" != "0" ]; then + echo "Adding $FeedPrefix-internal-transport to the packageSources." + PackageSourcesNodeFooter="" + PackageSourceTemplate="${TB}" + + sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile + fi + PackageSources+=("$FeedPrefix-internal-transport") + fi +done + +# I want things split line by line +PrevIFS=$IFS +IFS=$'\n' +PackageSources+="$IFS" +PackageSources+=$(grep -oh '"darc-int-[^"]*"' $ConfigFile | tr -d '"') +IFS=$PrevIFS + +if [ "$CredToken" ]; then + for FeedName in ${PackageSources[@]} ; do + # Check if there is no existing credential for this FeedName + grep -i "<$FeedName>" $ConfigFile + if [ "$?" != "0" ]; then + echo "Adding credentials for $FeedName." + + PackageSourceCredentialsNodeFooter="" + NewCredential="${TB}${TB}<$FeedName>${NL}${NL}${NL}" + + sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile + fi + done +fi + +# Re-enable any entries in disabledPackageSources where the feed name contains darc-int +grep -i "" $ConfigFile +if [ "$?" == "0" ]; then + DisabledDarcIntSources=() + echo "Re-enabling any disabled \"darc-int\" package sources in $ConfigFile" + DisabledDarcIntSources+=$(grep -oh '"darc-int-[^"]*" value="true"' $ConfigFile | tr -d '"') + for DisabledSourceName in ${DisabledDarcIntSources[@]} ; do + if [[ $DisabledSourceName == darc-int* ]] + then + OldDisableValue="" + NewDisableValue="" + sed -i.bak "s|$OldDisableValue|$NewDisableValue|" $ConfigFile + echo "Neutralized disablePackageSources entry for '$DisabledSourceName'" + fi + done +fi diff --git a/src/arcade/eng/common/build.cmd b/src/arcade/eng/common/build.cmd new file mode 100644 index 00000000000..99daf368aba --- /dev/null +++ b/src/arcade/eng/common/build.cmd @@ -0,0 +1,3 @@ +@echo off +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0build.ps1""" %*" +exit /b %ErrorLevel% diff --git a/src/arcade/eng/common/core-templates/job/onelocbuild.yml b/src/arcade/eng/common/core-templates/job/onelocbuild.yml new file mode 100644 index 00000000000..00feec8ebbc --- /dev/null +++ b/src/arcade/eng/common/core-templates/job/onelocbuild.yml @@ -0,0 +1,121 @@ +parameters: + # Optional: dependencies of the job + dependsOn: '' + + # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool + pool: '' + + CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex + GithubPat: $(BotAccount-dotnet-bot-repo-PAT) + + SourcesDirectory: $(Build.SourcesDirectory) + CreatePr: true + AutoCompletePr: false + ReusePr: true + UseLfLineEndings: true + UseCheckedInLocProjectJson: false + SkipLocProjectJsonGeneration: false + LanguageSet: VS_Main_Languages + LclSource: lclFilesInRepo + LclPackageId: '' + RepoType: gitHub + GitHubOrg: dotnet + MirrorRepo: '' + MirrorBranch: main + condition: '' + JobNameSuffix: '' + is1ESPipeline: '' +jobs: +- job: OneLocBuild${{ parameters.JobNameSuffix }} + + dependsOn: ${{ parameters.dependsOn }} + + displayName: OneLocBuild${{ parameters.JobNameSuffix }} + + variables: + - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat + - name: _GenerateLocProjectArguments + value: -SourcesDirectory ${{ parameters.SourcesDirectory }} + -LanguageSet "${{ parameters.LanguageSet }}" + -CreateNeutralXlfs + - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}: + - name: _GenerateLocProjectArguments + value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson + - template: /eng/common/core-templates/variables/pool-providers.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + + ${{ if ne(parameters.pool, '') }}: + pool: ${{ parameters.pool }} + ${{ if eq(parameters.pool, '') }}: + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022 + os: windows + + steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}: + - task: Powershell@2 + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1 + arguments: $(_GenerateLocProjectArguments) + displayName: Generate LocProject.json + condition: ${{ parameters.condition }} + + - task: OneLocBuild@2 + displayName: OneLocBuild + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + inputs: + locProj: eng/Localize/LocProject.json + outDir: $(Build.ArtifactStagingDirectory) + lclSource: ${{ parameters.LclSource }} + lclPackageId: ${{ parameters.LclPackageId }} + isCreatePrSelected: ${{ parameters.CreatePr }} + isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }} + ${{ if eq(parameters.CreatePr, true) }}: + isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }} + ${{ if eq(parameters.RepoType, 'gitHub') }}: + isShouldReusePrSelected: ${{ parameters.ReusePr }} + packageSourceAuth: patAuth + patVariable: ${{ parameters.CeapexPat }} + ${{ if eq(parameters.RepoType, 'gitHub') }}: + repoType: ${{ parameters.RepoType }} + gitHubPatVariable: "${{ parameters.GithubPat }}" + ${{ if ne(parameters.MirrorRepo, '') }}: + isMirrorRepoSelected: true + gitHubOrganization: ${{ parameters.GitHubOrg }} + mirrorRepo: ${{ parameters.MirrorRepo }} + mirrorBranch: ${{ parameters.MirrorBranch }} + condition: ${{ parameters.condition }} + + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish Localization Files + pathToPublish: '$(Build.ArtifactStagingDirectory)/loc' + publishLocation: Container + artifactName: Loc + condition: ${{ parameters.condition }} + + - template: /eng/common/core-templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + args: + displayName: Publish LocProject.json + pathToPublish: '$(Build.SourcesDirectory)/eng/Localize/' + publishLocation: Container + artifactName: Loc + condition: ${{ parameters.condition }} \ No newline at end of file diff --git a/src/arcade/eng/common/core-templates/jobs/source-build.yml b/src/arcade/eng/common/core-templates/jobs/source-build.yml new file mode 100644 index 00000000000..a10ccfbee6d --- /dev/null +++ b/src/arcade/eng/common/core-templates/jobs/source-build.yml @@ -0,0 +1,58 @@ +parameters: + # This template adds arcade-powered source-build to CI. A job is created for each platform, as + # well as an optional server job that completes when all platform jobs complete. + + # The name of the "join" job for all source-build platforms. If set to empty string, the job is + # not included. Existing repo pipelines can use this job depend on all source-build jobs + # completing without maintaining a separate list of every single job ID: just depend on this one + # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'. + allCompletedJobId: '' + + # See /eng/common/core-templates/job/source-build.yml + jobNamePrefix: 'Source_Build' + + # This is the default platform provided by Arcade, intended for use by a managed-only repo. + defaultManagedPlatform: + name: 'Managed' + container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9' + + # Defines the platforms on which to run build jobs. One job is created for each platform, and the + # object in this array is sent to the job template as 'platform'. If no platforms are specified, + # one job runs on 'defaultManagedPlatform'. + platforms: [] + + is1ESPipeline: '' + + # If set to true and running on a non-public project, + # Internal nuget and blob storage locations will be enabled. + # This is not enabled by default because many repositories do not need internal sources + # and do not need to have the required service connections approved in the pipeline. + enableInternalSources: false + +jobs: + +- ${{ if ne(parameters.allCompletedJobId, '') }}: + - job: ${{ parameters.allCompletedJobId }} + displayName: Source-Build Complete + pool: server + dependsOn: + - ${{ each platform in parameters.platforms }}: + - ${{ parameters.jobNamePrefix }}_${{ platform.name }} + - ${{ if eq(length(parameters.platforms), 0) }}: + - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }} + +- ${{ each platform in parameters.platforms }}: + - template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + jobNamePrefix: ${{ parameters.jobNamePrefix }} + platform: ${{ platform }} + enableInternalSources: ${{ parameters.enableInternalSources }} + +- ${{ if eq(length(parameters.platforms), 0) }}: + - template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + jobNamePrefix: ${{ parameters.jobNamePrefix }} + platform: ${{ parameters.defaultManagedPlatform }} + enableInternalSources: ${{ parameters.enableInternalSources }} diff --git a/src/arcade/eng/common/core-templates/post-build/common-variables.yml b/src/arcade/eng/common/core-templates/post-build/common-variables.yml new file mode 100644 index 00000000000..d5627a994ae --- /dev/null +++ b/src/arcade/eng/common/core-templates/post-build/common-variables.yml @@ -0,0 +1,22 @@ +variables: + - group: Publish-Build-Assets + + # Whether the build is internal or not + - name: IsInternalBuild + value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }} + + # Default Maestro++ API Endpoint and API Version + - name: MaestroApiEndPoint + value: "https://maestro.dot.net" + - name: MaestroApiVersion + value: "2020-02-20" + + - name: SourceLinkCLIVersion + value: 3.0.0 + - name: SymbolToolVersion + value: 1.0.1 + - name: BinlogToolVersion + value: 1.0.11 + + - name: runCodesignValidationInjection + value: false diff --git a/src/arcade/eng/common/core-templates/post-build/setup-maestro-vars.yml b/src/arcade/eng/common/core-templates/post-build/setup-maestro-vars.yml new file mode 100644 index 00000000000..f7602980dbe --- /dev/null +++ b/src/arcade/eng/common/core-templates/post-build/setup-maestro-vars.yml @@ -0,0 +1,74 @@ +parameters: + BARBuildId: '' + PromoteToChannelIds: '' + is1ESPipeline: '' + +steps: + - ${{ if eq(parameters.is1ESPipeline, '') }}: + - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error + + - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download Release Configs + inputs: + buildType: current + artifactName: ReleaseConfigs + checkDownloadedFiles: true + + - task: AzureCLI@2 + name: setReleaseVars + displayName: Set Release Configs Vars + inputs: + azureSubscription: "Darc: Maestro Production" + scriptType: pscore + scriptLocation: inlineScript + inlineScript: | + try { + if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') { + $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt + + $BarId = $Content | Select -Index 0 + $Channels = $Content | Select -Index 1 + $IsStableBuild = $Content | Select -Index 2 + + $AzureDevOpsProject = $Env:System_TeamProject + $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId + $AzureDevOpsBuildId = $Env:Build_BuildId + } + else { + . $(Build.SourcesDirectory)\eng\common\tools.ps1 + $darc = Get-Darc + $buildInfo = & $darc get-build ` + --id ${{ parameters.BARBuildId }} ` + --extended ` + --output-format json ` + --ci ` + | convertFrom-Json + + $BarId = ${{ parameters.BARBuildId }} + $Channels = $Env:PromoteToMaestroChannels -split "," + $Channels = $Channels -join "][" + $Channels = "[$Channels]" + + $IsStableBuild = $buildInfo.stable + $AzureDevOpsProject = $buildInfo.azureDevOpsProject + $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId + $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId + } + + Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId" + Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels" + Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild" + + Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject" + Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId" + Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId" + } + catch { + Write-Host $_ + Write-Host $_.Exception + Write-Host $_.ScriptStackTrace + exit 1 + } + env: + PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }} diff --git a/src/arcade/eng/common/core-templates/steps/component-governance.yml b/src/arcade/eng/common/core-templates/steps/component-governance.yml new file mode 100644 index 00000000000..cf0649aa956 --- /dev/null +++ b/src/arcade/eng/common/core-templates/steps/component-governance.yml @@ -0,0 +1,16 @@ +parameters: + disableComponentGovernance: false + componentGovernanceIgnoreDirectories: '' + is1ESPipeline: false + displayName: 'Component Detection' + +steps: +- ${{ if eq(parameters.disableComponentGovernance, 'true') }}: + - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" + displayName: Set skipComponentGovernanceDetection variable +- ${{ if ne(parameters.disableComponentGovernance, 'true') }}: + - task: ComponentGovernanceComponentDetection@0 + continueOnError: true + displayName: ${{ parameters.displayName }} + inputs: + ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} diff --git a/src/arcade/eng/common/core-templates/steps/enable-internal-runtimes.yml b/src/arcade/eng/common/core-templates/steps/enable-internal-runtimes.yml new file mode 100644 index 00000000000..6bdbf62ac50 --- /dev/null +++ b/src/arcade/eng/common/core-templates/steps/enable-internal-runtimes.yml @@ -0,0 +1,32 @@ +# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' +# variable with the base64-encoded SAS token, by default + +parameters: +- name: federatedServiceConnection + type: string + default: 'dotnetbuilds-internal-read' +- name: outputVariableName + type: string + default: 'dotnetbuilds-internal-container-read-token-base64' +- name: expiryInHours + type: number + default: 1 +- name: base64Encode + type: boolean + default: true +- name: is1ESPipeline + type: boolean + default: false + +steps: +- ${{ if ne(variables['System.TeamProject'], 'public') }}: + - template: /eng/common/core-templates/steps/get-delegation-sas.yml + parameters: + federatedServiceConnection: ${{ parameters.federatedServiceConnection }} + outputVariableName: ${{ parameters.outputVariableName }} + expiryInHours: ${{ parameters.expiryInHours }} + base64Encode: ${{ parameters.base64Encode }} + storageAccount: dotnetbuilds + container: internal + permissions: rl + is1ESPipeline: ${{ parameters.is1ESPipeline }} \ No newline at end of file diff --git a/src/arcade/eng/common/core-templates/steps/enable-internal-sources.yml b/src/arcade/eng/common/core-templates/steps/enable-internal-sources.yml new file mode 100644 index 00000000000..64f881bffc3 --- /dev/null +++ b/src/arcade/eng/common/core-templates/steps/enable-internal-sources.yml @@ -0,0 +1,47 @@ +parameters: +# This is the Azure federated service connection that we log into to get an access token. +- name: nugetFederatedServiceConnection + type: string + default: 'dnceng-artifacts-feeds-read' +- name: is1ESPipeline + type: boolean + default: false +# Legacy parameters to allow for PAT usage +- name: legacyCredential + type: string + default: '' + +steps: +- ${{ if ne(variables['System.TeamProject'], 'public') }}: + - ${{ if ne(parameters.legacyCredential, '') }}: + - task: PowerShell@2 + displayName: Setup Internal Feeds + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 + arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token + env: + Token: ${{ parameters.legacyCredential }} + # If running on dnceng (internal project), just use the default behavior for NuGetAuthenticate. + # If running on DevDiv, NuGetAuthenticate is not really an option. It's scoped to a single feed, and we have many feeds that + # may be added. Instead, we'll use the traditional approach (add cred to nuget.config), but use an account token. + - ${{ else }}: + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - task: PowerShell@2 + displayName: Setup Internal Feeds + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 + arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config + - ${{ else }}: + - template: /eng/common/templates/steps/get-federated-access-token.yml + parameters: + federatedServiceConnection: ${{ parameters.nugetFederatedServiceConnection }} + outputVariableName: 'dnceng-artifacts-feeds-read-access-token' + - task: PowerShell@2 + displayName: Setup Internal Feeds + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 + arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token) + # This is required in certain scenarios to install the ADO credential provider. + # It installed by default in some msbuild invocations (e.g. VS msbuild), but needs to be installed for others + # (e.g. dotnet msbuild). + - task: NuGetAuthenticate@1 diff --git a/src/arcade/eng/common/core-templates/steps/get-federated-access-token.yml b/src/arcade/eng/common/core-templates/steps/get-federated-access-token.yml new file mode 100644 index 00000000000..3a4d4410c48 --- /dev/null +++ b/src/arcade/eng/common/core-templates/steps/get-federated-access-token.yml @@ -0,0 +1,42 @@ +parameters: +- name: federatedServiceConnection + type: string +- name: outputVariableName + type: string +- name: is1ESPipeline + type: boolean +- name: stepName + type: string + default: 'getFederatedAccessToken' +- name: condition + type: string + default: '' +# Resource to get a token for. Common values include: +# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps +# - 'https://storage.azure.com/' for storage +# Defaults to Azure DevOps +- name: resource + type: string + default: '499b84ac-1321-427f-aa17-267ca6975798' +- name: isStepOutputVariable + type: boolean + default: false + +steps: +- task: AzureCLI@2 + displayName: 'Getting federated access token for feeds' + name: ${{ parameters.stepName }} + ${{ if ne(parameters.condition, '') }}: + condition: ${{ parameters.condition }} + inputs: + azureSubscription: ${{ parameters.federatedServiceConnection }} + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to get access token for resource '${{ parameters.resource }}'" + exit 1 + } + Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken" \ No newline at end of file diff --git a/src/arcade/eng/common/core-templates/steps/publish-build-artifacts.yml b/src/arcade/eng/common/core-templates/steps/publish-build-artifacts.yml new file mode 100644 index 00000000000..f24ce346684 --- /dev/null +++ b/src/arcade/eng/common/core-templates/steps/publish-build-artifacts.yml @@ -0,0 +1,20 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: false +- name: args + type: object + default: {} +steps: +- ${{ if ne(parameters.is1ESPipeline, true) }}: + - template: /eng/common/templates/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + ${{ each parameter in parameters.args }}: + ${{ parameter.key }}: ${{ parameter.value }} +- ${{ else }}: + - template: /eng/common/templates-official/steps/publish-build-artifacts.yml + parameters: + is1ESPipeline: ${{ parameters.is1ESPipeline }} + ${{ each parameter in parameters.args }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/core-templates/steps/publish-pipeline-artifacts.yml b/src/arcade/eng/common/core-templates/steps/publish-pipeline-artifacts.yml new file mode 100644 index 00000000000..2efec04dc2c --- /dev/null +++ b/src/arcade/eng/common/core-templates/steps/publish-pipeline-artifacts.yml @@ -0,0 +1,20 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: false + +- name: args + type: object + default: {} + +steps: +- ${{ if ne(parameters.is1ESPipeline, true) }}: + - template: /eng/common/templates/steps/publish-pipeline-artifacts.yml + parameters: + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} +- ${{ else }}: + - template: /eng/common/templates-official/steps/publish-pipeline-artifacts.yml + parameters: + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/core-templates/steps/retain-build.yml b/src/arcade/eng/common/core-templates/steps/retain-build.yml new file mode 100644 index 00000000000..83d97a26a01 --- /dev/null +++ b/src/arcade/eng/common/core-templates/steps/retain-build.yml @@ -0,0 +1,28 @@ +parameters: + # Optional azure devops PAT with build execute permissions for the build's organization, + # only needed if the build that should be retained ran on a different organization than + # the pipeline where this template is executing from + Token: '' + # Optional BuildId to retain, defaults to the current running build + BuildId: '' + # Azure devops Organization URI for the build in the https://dev.azure.com/ format. + # Defaults to the organization the current pipeline is running on + AzdoOrgUri: '$(System.CollectionUri)' + # Azure devops project for the build. Defaults to the project the current pipeline is running on + AzdoProject: '$(System.TeamProject)' + +steps: + - task: powershell@2 + inputs: + targetType: 'filePath' + filePath: eng/common/retain-build.ps1 + pwsh: true + arguments: > + -AzdoOrgUri: ${{parameters.AzdoOrgUri}} + -AzdoProject ${{parameters.AzdoProject}} + -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }} + -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}} + displayName: Enable permanent build retention + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + BUILD_ID: $(Build.BuildId) \ No newline at end of file diff --git a/src/arcade/eng/common/core-templates/steps/send-to-helix.yml b/src/arcade/eng/common/core-templates/steps/send-to-helix.yml new file mode 100644 index 00000000000..68fa739c4ab --- /dev/null +++ b/src/arcade/eng/common/core-templates/steps/send-to-helix.yml @@ -0,0 +1,93 @@ +# Please remember to update the documentation if you make changes to these parameters! +parameters: + HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ + HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' + HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number + HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues + HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group + HelixProjectPath: 'eng/common/helixpublish.proj' # optional -- path to the project file to build relative to BUILD_SOURCESDIRECTORY + HelixProjectArguments: '' # optional -- arguments passed to the build command + HelixConfiguration: '' # optional -- additional property attached to a job + HelixPreCommands: '' # optional -- commands to run before Helix work item execution + HelixPostCommands: '' # optional -- commands to run after Helix work item execution + WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects + WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects + WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects + CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload + XUnitProjects: '' # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true + XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects + XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects + XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner + XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects + IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion + DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json + DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json + WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." + IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set + HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) + Creator: '' # optional -- if the build is external, use this to specify who is sending the job + DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO + condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() + continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false + +steps: + - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' + displayName: ${{ parameters.DisplayNamePrefix }} (Windows) + env: + BuildConfig: $(_BuildConfig) + HelixSource: ${{ parameters.HelixSource }} + HelixType: ${{ parameters.HelixType }} + HelixBuild: ${{ parameters.HelixBuild }} + HelixConfiguration: ${{ parameters.HelixConfiguration }} + HelixTargetQueues: ${{ parameters.HelixTargetQueues }} + HelixAccessToken: ${{ parameters.HelixAccessToken }} + HelixPreCommands: ${{ parameters.HelixPreCommands }} + HelixPostCommands: ${{ parameters.HelixPostCommands }} + WorkItemDirectory: ${{ parameters.WorkItemDirectory }} + WorkItemCommand: ${{ parameters.WorkItemCommand }} + WorkItemTimeout: ${{ parameters.WorkItemTimeout }} + CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} + XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} + XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} + XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} + XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} + IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} + DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} + DotNetCliVersion: ${{ parameters.DotNetCliVersion }} + WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} + HelixBaseUri: ${{ parameters.HelixBaseUri }} + Creator: ${{ parameters.Creator }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) + continueOnError: ${{ parameters.continueOnError }} + - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog + displayName: ${{ parameters.DisplayNamePrefix }} (Unix) + env: + BuildConfig: $(_BuildConfig) + HelixSource: ${{ parameters.HelixSource }} + HelixType: ${{ parameters.HelixType }} + HelixBuild: ${{ parameters.HelixBuild }} + HelixConfiguration: ${{ parameters.HelixConfiguration }} + HelixTargetQueues: ${{ parameters.HelixTargetQueues }} + HelixAccessToken: ${{ parameters.HelixAccessToken }} + HelixPreCommands: ${{ parameters.HelixPreCommands }} + HelixPostCommands: ${{ parameters.HelixPostCommands }} + WorkItemDirectory: ${{ parameters.WorkItemDirectory }} + WorkItemCommand: ${{ parameters.WorkItemCommand }} + WorkItemTimeout: ${{ parameters.WorkItemTimeout }} + CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} + XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} + XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} + XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} + XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} + IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} + DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} + DotNetCliVersion: ${{ parameters.DotNetCliVersion }} + WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} + HelixBaseUri: ${{ parameters.HelixBaseUri }} + Creator: ${{ parameters.Creator }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) + continueOnError: ${{ parameters.continueOnError }} diff --git a/src/arcade/eng/common/core-templates/variables/pool-providers.yml b/src/arcade/eng/common/core-templates/variables/pool-providers.yml new file mode 100644 index 00000000000..41053d382a2 --- /dev/null +++ b/src/arcade/eng/common/core-templates/variables/pool-providers.yml @@ -0,0 +1,8 @@ +parameters: + is1ESPipeline: false + +variables: + - ${{ if eq(parameters.is1ESPipeline, 'true') }}: + - template: /eng/common/templates-official/variables/pool-providers.yml + - ${{ else }}: + - template: /eng/common/templates/variables/pool-providers.yml \ No newline at end of file diff --git a/src/arcade/eng/common/cross/armel/tizen/tizen.patch b/src/arcade/eng/common/cross/armel/tizen/tizen.patch new file mode 100644 index 00000000000..ca7c7c1ff75 --- /dev/null +++ b/src/arcade/eng/common/cross/armel/tizen/tizen.patch @@ -0,0 +1,9 @@ +diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so +--- a/usr/lib/libc.so 2016-12-30 23:00:08.284951863 +0900 ++++ b/usr/lib/libc.so 2016-12-30 23:00:32.140951815 +0900 +@@ -2,4 +2,4 @@ + Use the shared library, but some functions are only in + the static library, so try that secondarily. */ + OUTPUT_FORMAT(elf32-littlearm) +-GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.3 ) ) ++GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux.so.3 ) ) diff --git a/src/arcade/eng/common/cross/riscv64/tizen/tizen.patch b/src/arcade/eng/common/cross/riscv64/tizen/tizen.patch new file mode 100644 index 00000000000..eb6d1c07470 --- /dev/null +++ b/src/arcade/eng/common/cross/riscv64/tizen/tizen.patch @@ -0,0 +1,9 @@ +diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so +--- a/usr/lib64/libc.so 2016-12-30 23:00:08.284951863 +0900 ++++ b/usr/lib64/libc.so 2016-12-30 23:00:32.140951815 +0900 +@@ -2,4 +2,4 @@ + Use the shared library, but some functions are only in + the static library, so try that secondarily. */ + OUTPUT_FORMAT(elf64-littleriscv) +-GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib64/ld-linux-riscv64-lp64d.so.1 ) ) ++GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux-riscv64-lp64d.so.1 ) ) diff --git a/src/arcade/eng/common/cross/tizen-build-rootfs.sh b/src/arcade/eng/common/cross/tizen-build-rootfs.sh new file mode 100644 index 00000000000..ba31c93285f --- /dev/null +++ b/src/arcade/eng/common/cross/tizen-build-rootfs.sh @@ -0,0 +1,82 @@ +#!/usr/bin/env bash +set -e + +ARCH=$1 +LINK_ARCH=$ARCH + +case "$ARCH" in + arm) + TIZEN_ARCH="armv7hl" + ;; + armel) + TIZEN_ARCH="armv7l" + LINK_ARCH="arm" + ;; + arm64) + TIZEN_ARCH="aarch64" + ;; + x86) + TIZEN_ARCH="i686" + ;; + x64) + TIZEN_ARCH="x86_64" + LINK_ARCH="x86" + ;; + riscv64) + TIZEN_ARCH="riscv64" + LINK_ARCH="riscv" + ;; + *) + echo "Unsupported architecture for tizen: $ARCH" + exit 1 +esac + +__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +__TIZEN_CROSSDIR="$__CrossDir/${ARCH}/tizen" + +if [[ -z "$ROOTFS_DIR" ]]; then + echo "ROOTFS_DIR is not defined." + exit 1; +fi + +TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp +mkdir -p $TIZEN_TMP_DIR + +# Download files +echo ">>Start downloading files" +VERBOSE=1 $__CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR $TIZEN_ARCH +echo "<>Start constructing Tizen rootfs" +TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm` +cd $ROOTFS_DIR +for f in $TIZEN_RPM_FILES; do + rpm2cpio $f | cpio -idm --quiet +done +echo "<>Start configuring Tizen rootfs" +ln -sfn asm-${LINK_ARCH} ./usr/include/asm +patch -p1 < $__TIZEN_CROSSDIR/tizen.patch +if [[ "$TIZEN_ARCH" == "riscv64" ]]; then + echo "Fixing broken symlinks in $PWD" + rm ./usr/lib64/libresolv.so + ln -s ../../lib64/libresolv.so.2 ./usr/lib64/libresolv.so + rm ./usr/lib64/libpthread.so + ln -s ../../lib64/libpthread.so.0 ./usr/lib64/libpthread.so + rm ./usr/lib64/libdl.so + ln -s ../../lib64/libdl.so.2 ./usr/lib64/libdl.so + rm ./usr/lib64/libutil.so + ln -s ../../lib64/libutil.so.1 ./usr/lib64/libutil.so + rm ./usr/lib64/libm.so + ln -s ../../lib64/libm.so.6 ./usr/lib64/libm.so + rm ./usr/lib64/librt.so + ln -s ../../lib64/librt.so.1 ./usr/lib64/librt.so + rm ./lib/ld-linux-riscv64-lp64d.so.1 + ln -s ../lib64/ld-linux-riscv64-lp64d.so.1 ./lib/ld-linux-riscv64-lp64d.so.1 +fi +echo "< 0 ]]; do + opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")" + case "$opt" in + --darcversion) + darcVersion=$2 + shift + ;; + --versionendpoint) + versionEndpoint=$2 + shift + ;; + --verbosity) + verbosity=$2 + shift + ;; + --toolpath) + toolpath=$2 + shift + ;; + *) + echo "Invalid argument: $1" + usage + exit 1 + ;; + esac + + shift +done + +# resolve $source until the file is no longer a symlink +while [[ -h "$source" ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +. "$scriptroot/tools.sh" + +if [ -z "$darcVersion" ]; then + darcVersion=$(curl -X GET "$versionEndpoint" -H "accept: text/plain") +fi + +function InstallDarcCli { + local darc_cli_package_name="microsoft.dotnet.darc" + + InitializeDotNetCli true + local dotnet_root=$_InitializeDotNetCli + + if [ -z "$toolpath" ]; then + local tool_list=$($dotnet_root/dotnet tool list -g) + if [[ $tool_list = *$darc_cli_package_name* ]]; then + echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name -g) + fi + else + local tool_list=$($dotnet_root/dotnet tool list --tool-path "$toolpath") + if [[ $tool_list = *$darc_cli_package_name* ]]; then + echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name --tool-path "$toolpath") + fi + fi + + local arcadeServicesSource="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" + + echo "Installing Darc CLI version $darcVersion..." + echo "You may need to restart your command shell if this is the first dotnet tool you have installed." + if [ -z "$toolpath" ]; then + echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g) + else + echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath") + fi +} + +InstallDarcCli diff --git a/src/arcade/eng/common/dotnet-install.cmd b/src/arcade/eng/common/dotnet-install.cmd new file mode 100644 index 00000000000..b1c2642e76f --- /dev/null +++ b/src/arcade/eng/common/dotnet-install.cmd @@ -0,0 +1,2 @@ +@echo off +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0dotnet-install.ps1""" %*" \ No newline at end of file diff --git a/src/arcade/eng/common/dotnet-install.ps1 b/src/arcade/eng/common/dotnet-install.ps1 new file mode 100644 index 00000000000..811f0f717f7 --- /dev/null +++ b/src/arcade/eng/common/dotnet-install.ps1 @@ -0,0 +1,28 @@ +[CmdletBinding(PositionalBinding=$false)] +Param( + [string] $verbosity = 'minimal', + [string] $architecture = '', + [string] $version = 'Latest', + [string] $runtime = 'dotnet', + [string] $RuntimeSourceFeed = '', + [string] $RuntimeSourceFeedKey = '' +) + +. $PSScriptRoot\tools.ps1 + +$dotnetRoot = Join-Path $RepoRoot '.dotnet' + +$installdir = $dotnetRoot +try { + if ($architecture -and $architecture.Trim() -eq 'x86') { + $installdir = Join-Path $installdir 'x86' + } + InstallDotNet $installdir $version $architecture $runtime $true -RuntimeSourceFeed $RuntimeSourceFeed -RuntimeSourceFeedKey $RuntimeSourceFeedKey +} +catch { + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_ + ExitWithExitCode 1 +} + +ExitWithExitCode 0 diff --git a/src/arcade/eng/common/dotnet-install.sh b/src/arcade/eng/common/dotnet-install.sh new file mode 100644 index 00000000000..7b9d97e3bd4 --- /dev/null +++ b/src/arcade/eng/common/dotnet-install.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash + +source="${BASH_SOURCE[0]}" +# resolve $source until the file is no longer a symlink +while [[ -h "$source" ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +. "$scriptroot/tools.sh" + +version='Latest' +architecture='' +runtime='dotnet' +runtimeSourceFeed='' +runtimeSourceFeedKey='' +while [[ $# > 0 ]]; do + opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")" + case "$opt" in + -version|-v) + shift + version="$1" + ;; + -architecture|-a) + shift + architecture="$1" + ;; + -runtime|-r) + shift + runtime="$1" + ;; + -runtimesourcefeed) + shift + runtimeSourceFeed="$1" + ;; + -runtimesourcefeedkey) + shift + runtimeSourceFeedKey="$1" + ;; + *) + Write-PipelineTelemetryError -Category 'Build' -Message "Invalid argument: $1" + exit 1 + ;; + esac + shift +done + +# Use uname to determine what the CPU is, see https://en.wikipedia.org/wiki/Uname#Examples +cpuname=$(uname -m) +case $cpuname in + arm64|aarch64) + buildarch=arm64 + if [ "$(getconf LONG_BIT)" -lt 64 ]; then + # This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS) + buildarch=arm + fi + ;; + loongarch64) + buildarch=loongarch64 + ;; + amd64|x86_64) + buildarch=x64 + ;; + armv*l) + buildarch=arm + ;; + i[3-6]86) + buildarch=x86 + ;; + riscv64) + buildarch=riscv64 + ;; + *) + echo "Unknown CPU $cpuname detected, treating it as x64" + buildarch=x64 + ;; +esac + +dotnetRoot="${repo_root}.dotnet" +if [[ $architecture != "" ]] && [[ $architecture != $buildarch ]]; then + dotnetRoot="$dotnetRoot/$architecture" +fi + +InstallDotNet "$dotnetRoot" $version "$architecture" $runtime true $runtimeSourceFeed $runtimeSourceFeedKey || { + local exit_code=$? + Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2 + ExitWithExitCode $exit_code +} + +ExitWithExitCode 0 diff --git a/src/arcade/eng/common/enable-cross-org-publishing.ps1 b/src/arcade/eng/common/enable-cross-org-publishing.ps1 new file mode 100644 index 00000000000..da09da4f1fc --- /dev/null +++ b/src/arcade/eng/common/enable-cross-org-publishing.ps1 @@ -0,0 +1,13 @@ +param( + [string] $token +) + + +. $PSScriptRoot\pipeline-logging-functions.ps1 + +# Write-PipelineSetVariable will no-op if a variable named $ci is not defined +# Since this script is only ever called in AzDO builds, just universally set it +$ci = $true + +Write-PipelineSetVariable -Name 'VSS_NUGET_ACCESSTOKEN' -Value $token -IsMultiJobVariable $false +Write-PipelineSetVariable -Name 'VSS_NUGET_URI_PREFIXES' -Value 'https://dnceng.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/dnceng/;https://devdiv.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/devdiv/' -IsMultiJobVariable $false diff --git a/src/arcade/eng/common/generate-locproject.ps1 b/src/arcade/eng/common/generate-locproject.ps1 new file mode 100644 index 00000000000..524aaa57f2b --- /dev/null +++ b/src/arcade/eng/common/generate-locproject.ps1 @@ -0,0 +1,189 @@ +Param( + [Parameter(Mandatory=$true)][string] $SourcesDirectory, # Directory where source files live; if using a Localize directory it should live in here + [string] $LanguageSet = 'VS_Main_Languages', # Language set to be used in the LocProject.json + [switch] $UseCheckedInLocProjectJson, # When set, generates a LocProject.json and compares it to one that already exists in the repo; otherwise just generates one + [switch] $CreateNeutralXlfs # Creates neutral xlf files. Only set to false when running locally +) + +# Generates LocProject.json files for the OneLocBuild task. OneLocBuildTask is described here: +# https://ceapex.visualstudio.com/CEINTL/_wiki/wikis/CEINTL.wiki/107/Localization-with-OneLocBuild-Task + +Set-StrictMode -Version 2.0 +$ErrorActionPreference = "Stop" +. $PSScriptRoot\pipeline-logging-functions.ps1 + +$exclusionsFilePath = "$SourcesDirectory\eng\Localize\LocExclusions.json" +$exclusions = @{ Exclusions = @() } +if (Test-Path -Path $exclusionsFilePath) +{ + $exclusions = Get-Content "$exclusionsFilePath" | ConvertFrom-Json +} + +Push-Location "$SourcesDirectory" # push location for Resolve-Path -Relative to work + +# Template files +$jsonFiles = @() +$jsonTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\.template\.config\\localize\\.+\.en\.json" } # .NET templating pattern +$jsonTemplateFiles | ForEach-Object { + $null = $_.Name -Match "(.+)\.[\w-]+\.json" # matches '[filename].[langcode].json + + $destinationFile = "$($_.Directory.FullName)\$($Matches.1).json" + $jsonFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru +} + +$jsonWinformsTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\\strings\.json" } # current winforms pattern + +$wxlFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\.+\.wxl" -And -Not( $_.Directory.Name -Match "\d{4}" ) } # localized files live in four digit lang ID directories; this excludes them +if (-not $wxlFiles) { + $wxlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\1033\\.+\.wxl" } # pick up en files (1033 = en) specifically so we can copy them to use as the neutral xlf files + if ($wxlEnFiles) { + $wxlFiles = @() + $wxlEnFiles | ForEach-Object { + $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)" + $wxlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru + } + } +} + +$macosHtmlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\.lproj\\.+\.html$" } # add installer HTML files +$macosHtmlFiles = @() +if ($macosHtmlEnFiles) { + $macosHtmlEnFiles | ForEach-Object { + $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)" + $macosHtmlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru + } +} + +$xlfFiles = @() + +$allXlfFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory\*\*.xlf" +$langXlfFiles = @() +if ($allXlfFiles) { + $null = $allXlfFiles[0].FullName -Match "\.([\w-]+)\.xlf" # matches '[langcode].xlf' + $firstLangCode = $Matches.1 + $langXlfFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory\*\*.$firstLangCode.xlf" +} +$langXlfFiles | ForEach-Object { + $null = $_.Name -Match "(.+)\.[\w-]+\.xlf" # matches '[filename].[langcode].xlf + + $destinationFile = "$($_.Directory.FullName)\$($Matches.1).xlf" + $xlfFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru +} + +$locFiles = $jsonFiles + $jsonWinformsTemplateFiles + $xlfFiles + +$locJson = @{ + Projects = @( + @{ + LanguageSet = $LanguageSet + LocItems = @( + $locFiles | ForEach-Object { + $outputPath = "$(($_.DirectoryName | Resolve-Path -Relative) + "\")" + $continue = $true + foreach ($exclusion in $exclusions.Exclusions) { + if ($_.FullName.Contains($exclusion)) + { + $continue = $false + } + } + $sourceFile = ($_.FullName | Resolve-Path -Relative) + if (!$CreateNeutralXlfs -and $_.Extension -eq '.xlf') { + Remove-Item -Path $sourceFile + } + if ($continue) + { + if ($_.Directory.Name -eq 'en' -and $_.Extension -eq '.json') { + return @{ + SourceFile = $sourceFile + CopyOption = "LangIDOnPath" + OutputPath = "$($_.Directory.Parent.FullName | Resolve-Path -Relative)\" + } + } else { + return @{ + SourceFile = $sourceFile + CopyOption = "LangIDOnName" + OutputPath = $outputPath + } + } + } + } + ) + }, + @{ + LanguageSet = $LanguageSet + CloneLanguageSet = "WiX_CloneLanguages" + LssFiles = @( "wxl_loc.lss" ) + LocItems = @( + $wxlFiles | ForEach-Object { + $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\" + $continue = $true + foreach ($exclusion in $exclusions.Exclusions) { + if ($_.FullName.Contains($exclusion)) { + $continue = $false + } + } + $sourceFile = ($_.FullName | Resolve-Path -Relative) + if ($continue) + { + return @{ + SourceFile = $sourceFile + CopyOption = "LangIDOnPath" + OutputPath = $outputPath + } + } + } + ) + }, + @{ + LanguageSet = $LanguageSet + CloneLanguageSet = "VS_macOS_CloneLanguages" + LssFiles = @( ".\eng\common\loc\P22DotNetHtmlLocalization.lss" ) + LocItems = @( + $macosHtmlFiles | ForEach-Object { + $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\" + $continue = $true + foreach ($exclusion in $exclusions.Exclusions) { + if ($_.FullName.Contains($exclusion)) { + $continue = $false + } + } + $sourceFile = ($_.FullName | Resolve-Path -Relative) + $lciFile = $sourceFile + ".lci" + if ($continue) { + $result = @{ + SourceFile = $sourceFile + CopyOption = "LangIDOnPath" + OutputPath = $outputPath + } + if (Test-Path $lciFile -PathType Leaf) { + $result["LciFile"] = $lciFile + } + return $result + } + } + ) + } + ) +} + +$json = ConvertTo-Json $locJson -Depth 5 +Write-Host "LocProject.json generated:`n`n$json`n`n" +Pop-Location + +if (!$UseCheckedInLocProjectJson) { + New-Item "$SourcesDirectory\eng\Localize\LocProject.json" -Force # Need this to make sure the Localize directory is created + Set-Content "$SourcesDirectory\eng\Localize\LocProject.json" $json +} +else { + New-Item "$SourcesDirectory\eng\Localize\LocProject-generated.json" -Force # Need this to make sure the Localize directory is created + Set-Content "$SourcesDirectory\eng\Localize\LocProject-generated.json" $json + + if ((Get-FileHash "$SourcesDirectory\eng\Localize\LocProject-generated.json").Hash -ne (Get-FileHash "$SourcesDirectory\eng\Localize\LocProject.json").Hash) { + Write-PipelineTelemetryError -Category "OneLocBuild" -Message "Existing LocProject.json differs from generated LocProject.json. Download LocProject-generated.json and compare them." + + exit 1 + } + else { + Write-Host "Generated LocProject.json and current LocProject.json are identical." + } +} diff --git a/src/arcade/eng/common/generate-sbom-prep.ps1 b/src/arcade/eng/common/generate-sbom-prep.ps1 new file mode 100644 index 00000000000..a0c7d792a76 --- /dev/null +++ b/src/arcade/eng/common/generate-sbom-prep.ps1 @@ -0,0 +1,29 @@ +Param( + [Parameter(Mandatory=$true)][string] $ManifestDirPath # Manifest directory where sbom will be placed +) + +. $PSScriptRoot\pipeline-logging-functions.ps1 + +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" +$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_' +$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName + +Write-Host "Artifact name before : $ArtifactName" +Write-Host "Artifact name after : $SafeArtifactName" + +Write-Host "Creating dir $ManifestDirPath" + +# create directory for sbom manifest to be placed +if (!(Test-Path -path $SbomGenerationDir)) +{ + New-Item -ItemType Directory -path $SbomGenerationDir + Write-Host "Successfully created directory $SbomGenerationDir" +} +else{ + Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." +} + +Write-Host "Updating artifact name" +Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName" diff --git a/src/arcade/eng/common/generate-sbom-prep.sh b/src/arcade/eng/common/generate-sbom-prep.sh new file mode 100644 index 00000000000..b8ecca72bbf --- /dev/null +++ b/src/arcade/eng/common/generate-sbom-prep.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +source="${BASH_SOURCE[0]}" + +# resolve $SOURCE until the file is no longer a symlink +while [[ -h $source ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" +. $scriptroot/pipeline-logging-functions.sh + + +# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. +artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" +safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" +manifest_dir=$1 + +# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly +# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. +sbom_generation_dir="$manifest_dir/$safe_artifact_name" + +if [ ! -d "$sbom_generation_dir" ] ; then + mkdir -p "$sbom_generation_dir" + echo "Sbom directory created." $sbom_generation_dir +else + Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." +fi + +echo "Artifact name before : "$artifact_name +echo "Artifact name after : "$safe_artifact_name +export ARTIFACT_NAME=$safe_artifact_name +echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name" + +exit 0 diff --git a/src/arcade/eng/common/helixpublish.proj b/src/arcade/eng/common/helixpublish.proj new file mode 100644 index 00000000000..c1323bf4121 --- /dev/null +++ b/src/arcade/eng/common/helixpublish.proj @@ -0,0 +1,27 @@ + + + + + msbuild + + + + + %(Identity) + + + + + + $(WorkItemDirectory) + $(WorkItemCommand) + $(WorkItemTimeout) + + + + + + + + + diff --git a/src/arcade/eng/common/init-tools-native.cmd b/src/arcade/eng/common/init-tools-native.cmd new file mode 100644 index 00000000000..438cd548c45 --- /dev/null +++ b/src/arcade/eng/common/init-tools-native.cmd @@ -0,0 +1,3 @@ +@echo off +powershell -NoProfile -NoLogo -ExecutionPolicy ByPass -command "& """%~dp0init-tools-native.ps1""" %*" +exit /b %ErrorLevel% \ No newline at end of file diff --git a/src/arcade/eng/common/init-tools-native.ps1 b/src/arcade/eng/common/init-tools-native.ps1 new file mode 100644 index 00000000000..27ccdb9ecc9 --- /dev/null +++ b/src/arcade/eng/common/init-tools-native.ps1 @@ -0,0 +1,203 @@ +<# +.SYNOPSIS +Entry point script for installing native tools + +.DESCRIPTION +Reads $RepoRoot\global.json file to determine native assets to install +and executes installers for those tools + +.PARAMETER BaseUri +Base file directory or Url from which to acquire tool archives + +.PARAMETER InstallDirectory +Directory to install native toolset. This is a command-line override for the default +Install directory precedence order: +- InstallDirectory command-line override +- NETCOREENG_INSTALL_DIRECTORY environment variable +- (default) %USERPROFILE%/.netcoreeng/native + +.PARAMETER Clean +Switch specifying to not install anything, but cleanup native asset folders + +.PARAMETER Force +Clean and then install tools + +.PARAMETER DownloadRetries +Total number of retry attempts + +.PARAMETER RetryWaitTimeInSeconds +Wait time between retry attempts in seconds + +.PARAMETER GlobalJsonFile +File path to global.json file + +.PARAMETER PathPromotion +Optional switch to enable either promote native tools specified in the global.json to the path (in Azure Pipelines) +or break the build if a native tool is not found on the path (on a local dev machine) + +.NOTES +#> +[CmdletBinding(PositionalBinding=$false)] +Param ( + [string] $BaseUri = 'https://netcorenativeassets.blob.core.windows.net/resource-packages/external', + [string] $InstallDirectory, + [switch] $Clean = $False, + [switch] $Force = $False, + [int] $DownloadRetries = 5, + [int] $RetryWaitTimeInSeconds = 30, + [string] $GlobalJsonFile, + [switch] $PathPromotion +) + +if (!$GlobalJsonFile) { + $GlobalJsonFile = Join-Path (Get-Item $PSScriptRoot).Parent.Parent.FullName 'global.json' +} + +Set-StrictMode -version 2.0 +$ErrorActionPreference='Stop' + +. $PSScriptRoot\pipeline-logging-functions.ps1 +Import-Module -Name (Join-Path $PSScriptRoot 'native\CommonLibrary.psm1') + +try { + # Define verbose switch if undefined + $Verbose = $VerbosePreference -Eq 'Continue' + + $EngCommonBaseDir = Join-Path $PSScriptRoot 'native\' + $NativeBaseDir = $InstallDirectory + if (!$NativeBaseDir) { + $NativeBaseDir = CommonLibrary\Get-NativeInstallDirectory + } + $Env:CommonLibrary_NativeInstallDir = $NativeBaseDir + $InstallBin = Join-Path $NativeBaseDir 'bin' + $InstallerPath = Join-Path $EngCommonBaseDir 'install-tool.ps1' + + # Process tools list + Write-Host "Processing $GlobalJsonFile" + If (-Not (Test-Path $GlobalJsonFile)) { + Write-Host "Unable to find '$GlobalJsonFile'" + exit 0 + } + $NativeTools = Get-Content($GlobalJsonFile) -Raw | + ConvertFrom-Json | + Select-Object -Expand 'native-tools' -ErrorAction SilentlyContinue + if ($NativeTools) { + if ($PathPromotion -eq $True) { + $ArcadeToolsDirectory = "$env:SYSTEMDRIVE\arcade-tools" + if (Test-Path $ArcadeToolsDirectory) { # if this directory exists, we should use native tools on machine + $NativeTools.PSObject.Properties | ForEach-Object { + $ToolName = $_.Name + $ToolVersion = $_.Value + $InstalledTools = @{} + + if ((Get-Command "$ToolName" -ErrorAction SilentlyContinue) -eq $null) { + if ($ToolVersion -eq "latest") { + $ToolVersion = "" + } + $ToolDirectories = (Get-ChildItem -Path "$ArcadeToolsDirectory" -Filter "$ToolName-$ToolVersion*" | Sort-Object -Descending) + if ($ToolDirectories -eq $null) { + Write-Error "Unable to find directory for $ToolName $ToolVersion; please make sure the tool is installed on this image." + exit 1 + } + $ToolDirectory = $ToolDirectories[0] + $BinPathFile = "$($ToolDirectory.FullName)\binpath.txt" + if (-not (Test-Path -Path "$BinPathFile")) { + Write-Error "Unable to find binpath.txt in '$($ToolDirectory.FullName)' ($ToolName $ToolVersion); artifact is either installed incorrectly or is not a bootstrappable tool." + exit 1 + } + $BinPath = Get-Content "$BinPathFile" + $ToolPath = Convert-Path -Path $BinPath + Write-Host "Adding $ToolName to the path ($ToolPath)..." + Write-Host "##vso[task.prependpath]$ToolPath" + $env:PATH = "$ToolPath;$env:PATH" + $InstalledTools += @{ $ToolName = $ToolDirectory.FullName } + } + } + return $InstalledTools + } else { + $NativeTools.PSObject.Properties | ForEach-Object { + $ToolName = $_.Name + $ToolVersion = $_.Value + + if ((Get-Command "$ToolName" -ErrorAction SilentlyContinue) -eq $null) { + Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "$ToolName not found on path. Please install $ToolName $ToolVersion before proceeding." + Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "If this is running on a build machine, the arcade-tools directory was not found, which means there's an error with the image." + } + } + exit 0 + } + } else { + $NativeTools.PSObject.Properties | ForEach-Object { + $ToolName = $_.Name + $ToolVersion = $_.Value + $LocalInstallerArguments = @{ ToolName = "$ToolName" } + $LocalInstallerArguments += @{ InstallPath = "$InstallBin" } + $LocalInstallerArguments += @{ BaseUri = "$BaseUri" } + $LocalInstallerArguments += @{ CommonLibraryDirectory = "$EngCommonBaseDir" } + $LocalInstallerArguments += @{ Version = "$ToolVersion" } + + if ($Verbose) { + $LocalInstallerArguments += @{ Verbose = $True } + } + if (Get-Variable 'Force' -ErrorAction 'SilentlyContinue') { + if($Force) { + $LocalInstallerArguments += @{ Force = $True } + } + } + if ($Clean) { + $LocalInstallerArguments += @{ Clean = $True } + } + + Write-Verbose "Installing $ToolName version $ToolVersion" + Write-Verbose "Executing '$InstallerPath $($LocalInstallerArguments.Keys.ForEach({"-$_ '$($LocalInstallerArguments.$_)'"}) -join ' ')'" + & $InstallerPath @LocalInstallerArguments + if ($LASTEXITCODE -Ne "0") { + $errMsg = "$ToolName installation failed" + if ((Get-Variable 'DoNotAbortNativeToolsInstallationOnFailure' -ErrorAction 'SilentlyContinue') -and $DoNotAbortNativeToolsInstallationOnFailure) { + $showNativeToolsWarning = $true + if ((Get-Variable 'DoNotDisplayNativeToolsInstallationWarnings' -ErrorAction 'SilentlyContinue') -and $DoNotDisplayNativeToolsInstallationWarnings) { + $showNativeToolsWarning = $false + } + if ($showNativeToolsWarning) { + Write-Warning $errMsg + } + $toolInstallationFailure = $true + } else { + # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482 + Write-Host $errMsg + exit 1 + } + } + } + + if ((Get-Variable 'toolInstallationFailure' -ErrorAction 'SilentlyContinue') -and $toolInstallationFailure) { + # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482 + Write-Host 'Native tools bootstrap failed' + exit 1 + } + } + } + else { + Write-Host 'No native tools defined in global.json' + exit 0 + } + + if ($Clean) { + exit 0 + } + if (Test-Path $InstallBin) { + Write-Host 'Native tools are available from ' (Convert-Path -Path $InstallBin) + Write-Host "##vso[task.prependpath]$(Convert-Path -Path $InstallBin)" + return $InstallBin + } + elseif (-not ($PathPromotion)) { + Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message 'Native tools install directory does not exist, installation failed' + exit 1 + } + exit 0 +} +catch { + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message $_ + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/init-tools-native.sh b/src/arcade/eng/common/init-tools-native.sh new file mode 100644 index 00000000000..3e6a8d6acf2 --- /dev/null +++ b/src/arcade/eng/common/init-tools-native.sh @@ -0,0 +1,238 @@ +#!/usr/bin/env bash + +source="${BASH_SOURCE[0]}" +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +base_uri='https://netcorenativeassets.blob.core.windows.net/resource-packages/external' +install_directory='' +clean=false +force=false +download_retries=5 +retry_wait_time_seconds=30 +global_json_file="$(dirname "$(dirname "${scriptroot}")")/global.json" +declare -a native_assets + +. $scriptroot/pipeline-logging-functions.sh +. $scriptroot/native/common-library.sh + +while (($# > 0)); do + lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")" + case $lowerI in + --baseuri) + base_uri=$2 + shift 2 + ;; + --installdirectory) + install_directory=$2 + shift 2 + ;; + --clean) + clean=true + shift 1 + ;; + --force) + force=true + shift 1 + ;; + --donotabortonfailure) + donotabortonfailure=true + shift 1 + ;; + --donotdisplaywarnings) + donotdisplaywarnings=true + shift 1 + ;; + --downloadretries) + download_retries=$2 + shift 2 + ;; + --retrywaittimeseconds) + retry_wait_time_seconds=$2 + shift 2 + ;; + --help) + echo "Common settings:" + echo " --installdirectory Directory to install native toolset." + echo " This is a command-line override for the default" + echo " Install directory precedence order:" + echo " - InstallDirectory command-line override" + echo " - NETCOREENG_INSTALL_DIRECTORY environment variable" + echo " - (default) %USERPROFILE%/.netcoreeng/native" + echo "" + echo " --clean Switch specifying not to install anything, but cleanup native asset folders" + echo " --donotabortonfailure Switch specifiying whether to abort native tools installation on failure" + echo " --donotdisplaywarnings Switch specifiying whether to display warnings during native tools installation on failure" + echo " --force Clean and then install tools" + echo " --help Print help and exit" + echo "" + echo "Advanced settings:" + echo " --baseuri Base URI for where to download native tools from" + echo " --downloadretries Number of times a download should be attempted" + echo " --retrywaittimeseconds Wait time between download attempts" + echo "" + exit 0 + ;; + esac +done + +function ReadGlobalJsonNativeTools { + # happy path: we have a proper JSON parsing tool `jq(1)` in PATH! + if command -v jq &> /dev/null; then + + # jq: read each key/value pair under "native-tools" entry and emit: + # KEY="" VALUE="" + # followed by a null byte. + # + # bash: read line with null byte delimeter and push to array (for later `eval`uation). + + while IFS= read -rd '' line; do + native_assets+=("$line") + done < <(jq -r '. | + select(has("native-tools")) | + ."native-tools" | + keys[] as $k | + @sh "KEY=\($k) VALUE=\(.[$k])\u0000"' "$global_json_file") + + return + fi + + # Warning: falling back to manually parsing JSON, which is not recommended. + + # Following routine matches the output and escaping logic of jq(1)'s @sh formatter used above. + # It has been tested with several weird strings with escaped characters in entries (key and value) + # and results were compared with the output of jq(1) in binary representation using xxd(1); + # just before the assignment to 'native_assets' array (above and below). + + # try to capture the section under "native-tools". + if [[ ! "$(cat "$global_json_file")" =~ \"native-tools\"[[:space:]\:\{]*([^\}]+) ]]; then + return + fi + + section="${BASH_REMATCH[1]}" + + parseStarted=0 + possibleEnd=0 + escaping=0 + escaped=0 + isKey=1 + + for (( i=0; i<${#section}; i++ )); do + char="${section:$i:1}" + if ! ((parseStarted)) && [[ "$char" =~ [[:space:],:] ]]; then continue; fi + + if ! ((escaping)) && [[ "$char" == "\\" ]]; then + escaping=1 + elif ((escaping)) && ! ((escaped)); then + escaped=1 + fi + + if ! ((parseStarted)) && [[ "$char" == "\"" ]]; then + parseStarted=1 + possibleEnd=0 + elif [[ "$char" == "'" ]]; then + token="$token'\\\''" + possibleEnd=0 + elif ((escaping)) || [[ "$char" != "\"" ]]; then + token="$token$char" + possibleEnd=1 + fi + + if ((possibleEnd)) && ! ((escaping)) && [[ "$char" == "\"" ]]; then + # Use printf to unescape token to match jq(1)'s @sh formatting rules. + # do not use 'token="$(printf "$token")"' syntax, as $() eats the trailing linefeed. + printf -v token "'$token'" + + if ((isKey)); then + KEY="$token" + isKey=0 + else + line="KEY=$KEY VALUE=$token" + native_assets+=("$line") + isKey=1 + fi + + # reset for next token + parseStarted=0 + token= + elif ((escaping)) && ((escaped)); then + escaping=0 + escaped=0 + fi + done +} + +native_base_dir=$install_directory +if [[ -z $install_directory ]]; then + native_base_dir=$(GetNativeInstallDirectory) +fi + +install_bin="${native_base_dir}/bin" +installed_any=false + +ReadGlobalJsonNativeTools + +if [[ ${#native_assets[@]} -eq 0 ]]; then + echo "No native tools defined in global.json" + exit 0; +else + native_installer_dir="$scriptroot/native" + for index in "${!native_assets[@]}"; do + eval "${native_assets["$index"]}" + + installer_path="$native_installer_dir/install-$KEY.sh" + installer_command="$installer_path" + installer_command+=" --baseuri $base_uri" + installer_command+=" --installpath $install_bin" + installer_command+=" --version $VALUE" + echo $installer_command + + if [[ $force = true ]]; then + installer_command+=" --force" + fi + + if [[ $clean = true ]]; then + installer_command+=" --clean" + fi + + if [[ -a $installer_path ]]; then + $installer_command + if [[ $? != 0 ]]; then + if [[ $donotabortonfailure = true ]]; then + if [[ $donotdisplaywarnings != true ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Execution Failed" + fi + else + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Execution Failed" + exit 1 + fi + else + $installed_any = true + fi + else + if [[ $donotabortonfailure == true ]]; then + if [[ $donotdisplaywarnings != true ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Execution Failed: no install script" + fi + else + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Execution Failed: no install script" + exit 1 + fi + fi + done +fi + +if [[ $clean = true ]]; then + exit 0 +fi + +if [[ -d $install_bin ]]; then + echo "Native tools are available from $install_bin" + echo "##vso[task.prependpath]$install_bin" +else + if [[ $installed_any = true ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Native tools install directory does not exist, installation failed" + exit 1 + fi +fi + +exit 0 diff --git a/src/arcade/eng/common/internal-feed-operations.ps1 b/src/arcade/eng/common/internal-feed-operations.ps1 new file mode 100644 index 00000000000..92b77347d99 --- /dev/null +++ b/src/arcade/eng/common/internal-feed-operations.ps1 @@ -0,0 +1,132 @@ +param( + [Parameter(Mandatory=$true)][string] $Operation, + [string] $AuthToken, + [string] $CommitSha, + [string] $RepoName, + [switch] $IsFeedPrivate +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 +. $PSScriptRoot\tools.ps1 + +# Sets VSS_NUGET_EXTERNAL_FEED_ENDPOINTS based on the "darc-int-*" feeds defined in NuGet.config. This is needed +# in build agents by CredProvider to authenticate the restore requests to internal feeds as specified in +# https://github.com/microsoft/artifacts-credprovider/blob/0f53327cd12fd893d8627d7b08a2171bf5852a41/README.md#environment-variables. This should ONLY be called from identified +# internal builds +function SetupCredProvider { + param( + [string] $AuthToken + ) + + # Install the Cred Provider NuGet plugin + Write-Host 'Setting up Cred Provider NuGet plugin in the agent...' + Write-Host "Getting 'installcredprovider.ps1' from 'https://github.com/microsoft/artifacts-credprovider'..." + + $url = 'https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.ps1' + + Write-Host "Writing the contents of 'installcredprovider.ps1' locally..." + Invoke-WebRequest $url -OutFile installcredprovider.ps1 + + Write-Host 'Installing plugin...' + .\installcredprovider.ps1 -Force + + Write-Host "Deleting local copy of 'installcredprovider.ps1'..." + Remove-Item .\installcredprovider.ps1 + + if (-Not("$env:USERPROFILE\.nuget\plugins\netcore")) { + Write-PipelineTelemetryError -Category 'Arcade' -Message 'CredProvider plugin was not installed correctly!' + ExitWithExitCode 1 + } + else { + Write-Host 'CredProvider plugin was installed correctly!' + } + + # Then, we set the 'VSS_NUGET_EXTERNAL_FEED_ENDPOINTS' environment variable to restore from the stable + # feeds successfully + + $nugetConfigPath = Join-Path $RepoRoot "NuGet.config" + + if (-Not (Test-Path -Path $nugetConfigPath)) { + Write-PipelineTelemetryError -Category 'Build' -Message 'NuGet.config file not found in repo root!' + ExitWithExitCode 1 + } + + $endpoints = New-Object System.Collections.ArrayList + $nugetConfigPackageSources = Select-Xml -Path $nugetConfigPath -XPath "//packageSources/add[contains(@key, 'darc-int-')]/@value" | foreach{$_.Node.Value} + + if (($nugetConfigPackageSources | Measure-Object).Count -gt 0 ) { + foreach ($stableRestoreResource in $nugetConfigPackageSources) { + $trimmedResource = ([string]$stableRestoreResource).Trim() + [void]$endpoints.Add(@{endpoint="$trimmedResource"; password="$AuthToken"}) + } + } + + if (($endpoints | Measure-Object).Count -gt 0) { + $endpointCredentials = @{endpointCredentials=$endpoints} | ConvertTo-Json -Compress + + # Create the environment variables the AzDo way + Write-LoggingCommand -Area 'task' -Event 'setvariable' -Data $endpointCredentials -Properties @{ + 'variable' = 'VSS_NUGET_EXTERNAL_FEED_ENDPOINTS' + 'issecret' = 'false' + } + + # We don't want sessions cached since we will be updating the endpoints quite frequently + Write-LoggingCommand -Area 'task' -Event 'setvariable' -Data 'False' -Properties @{ + 'variable' = 'NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED' + 'issecret' = 'false' + } + } + else + { + Write-Host 'No internal endpoints found in NuGet.config' + } +} + +#Workaround for https://github.com/microsoft/msbuild/issues/4430 +function InstallDotNetSdkAndRestoreArcade { + $dotnetTempDir = Join-Path $RepoRoot "dotnet" + $dotnetSdkVersion="2.1.507" # After experimentation we know this version works when restoring the SDK (compared to 3.0.*) + $dotnet = "$dotnetTempDir\dotnet.exe" + $restoreProjPath = "$PSScriptRoot\restore.proj" + + Write-Host "Installing dotnet SDK version $dotnetSdkVersion to restore Arcade SDK..." + InstallDotNetSdk "$dotnetTempDir" "$dotnetSdkVersion" + + '' | Out-File "$restoreProjPath" + + & $dotnet restore $restoreProjPath + + Write-Host 'Arcade SDK restored!' + + if (Test-Path -Path $restoreProjPath) { + Remove-Item $restoreProjPath + } + + if (Test-Path -Path $dotnetTempDir) { + Remove-Item $dotnetTempDir -Recurse + } +} + +try { + Push-Location $PSScriptRoot + + if ($Operation -like 'setup') { + SetupCredProvider $AuthToken + } + elseif ($Operation -like 'install-restore') { + InstallDotNetSdkAndRestoreArcade + } + else { + Write-PipelineTelemetryError -Category 'Arcade' -Message "Unknown operation '$Operation'!" + ExitWithExitCode 1 + } +} +catch { + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Category 'Arcade' -Message $_ + ExitWithExitCode 1 +} +finally { + Pop-Location +} diff --git a/src/arcade/eng/common/internal-feed-operations.sh b/src/arcade/eng/common/internal-feed-operations.sh new file mode 100644 index 00000000000..9378223ba09 --- /dev/null +++ b/src/arcade/eng/common/internal-feed-operations.sh @@ -0,0 +1,141 @@ +#!/usr/bin/env bash + +set -e + +# Sets VSS_NUGET_EXTERNAL_FEED_ENDPOINTS based on the "darc-int-*" feeds defined in NuGet.config. This is needed +# in build agents by CredProvider to authenticate the restore requests to internal feeds as specified in +# https://github.com/microsoft/artifacts-credprovider/blob/0f53327cd12fd893d8627d7b08a2171bf5852a41/README.md#environment-variables. +# This should ONLY be called from identified internal builds +function SetupCredProvider { + local authToken=$1 + + # Install the Cred Provider NuGet plugin + echo "Setting up Cred Provider NuGet plugin in the agent..."... + echo "Getting 'installcredprovider.ps1' from 'https://github.com/microsoft/artifacts-credprovider'..." + + local url="https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.sh" + + echo "Writing the contents of 'installcredprovider.ps1' locally..." + local installcredproviderPath="installcredprovider.sh" + if command -v curl > /dev/null; then + curl $url > "$installcredproviderPath" + else + wget -q -O "$installcredproviderPath" "$url" + fi + + echo "Installing plugin..." + . "$installcredproviderPath" + + echo "Deleting local copy of 'installcredprovider.sh'..." + rm installcredprovider.sh + + if [ ! -d "$HOME/.nuget/plugins" ]; then + Write-PipelineTelemetryError -category 'Build' 'CredProvider plugin was not installed correctly!' + ExitWithExitCode 1 + else + echo "CredProvider plugin was installed correctly!" + fi + + # Then, we set the 'VSS_NUGET_EXTERNAL_FEED_ENDPOINTS' environment variable to restore from the stable + # feeds successfully + + local nugetConfigPath="{$repo_root}NuGet.config" + + if [ ! "$nugetConfigPath" ]; then + Write-PipelineTelemetryError -category 'Build' "NuGet.config file not found in repo's root!" + ExitWithExitCode 1 + fi + + local endpoints='[' + local nugetConfigPackageValues=`cat "$nugetConfigPath" | grep "key=\"darc-int-"` + local pattern="value=\"(.*)\"" + + for value in $nugetConfigPackageValues + do + if [[ $value =~ $pattern ]]; then + local endpoint="${BASH_REMATCH[1]}" + endpoints+="{\"endpoint\": \"$endpoint\", \"password\": \"$authToken\"}," + fi + done + + endpoints=${endpoints%?} + endpoints+=']' + + if [ ${#endpoints} -gt 2 ]; then + local endpointCredentials="{\"endpointCredentials\": "$endpoints"}" + + echo "##vso[task.setvariable variable=VSS_NUGET_EXTERNAL_FEED_ENDPOINTS]$endpointCredentials" + echo "##vso[task.setvariable variable=NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED]False" + else + echo "No internal endpoints found in NuGet.config" + fi +} + +# Workaround for https://github.com/microsoft/msbuild/issues/4430 +function InstallDotNetSdkAndRestoreArcade { + local dotnetTempDir="$repo_root/dotnet" + local dotnetSdkVersion="2.1.507" # After experimentation we know this version works when restoring the SDK (compared to 3.0.*) + local restoreProjPath="$repo_root/eng/common/restore.proj" + + echo "Installing dotnet SDK version $dotnetSdkVersion to restore Arcade SDK..." + echo "" > "$restoreProjPath" + + InstallDotNetSdk "$dotnetTempDir" "$dotnetSdkVersion" + + local res=`$dotnetTempDir/dotnet restore $restoreProjPath` + echo "Arcade SDK restored!" + + # Cleanup + if [ "$restoreProjPath" ]; then + rm "$restoreProjPath" + fi + + if [ "$dotnetTempDir" ]; then + rm -r $dotnetTempDir + fi +} + +source="${BASH_SOURCE[0]}" +operation='' +authToken='' +repoName='' + +while [[ $# > 0 ]]; do + opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")" + case "$opt" in + --operation) + operation=$2 + shift + ;; + --authtoken) + authToken=$2 + shift + ;; + *) + echo "Invalid argument: $1" + usage + exit 1 + ;; + esac + + shift +done + +while [[ -h "$source" ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +. "$scriptroot/tools.sh" + +if [ "$operation" = "setup" ]; then + SetupCredProvider $authToken +elif [ "$operation" = "install-restore" ]; then + InstallDotNetSdkAndRestoreArcade +else + echo "Unknown operation '$operation'!" +fi diff --git a/src/arcade/eng/common/internal/Directory.Build.props b/src/arcade/eng/common/internal/Directory.Build.props new file mode 100644 index 00000000000..f1d041c33da --- /dev/null +++ b/src/arcade/eng/common/internal/Directory.Build.props @@ -0,0 +1,11 @@ + + + + + false + false + + + + + diff --git a/src/arcade/eng/common/internal/NuGet.config b/src/arcade/eng/common/internal/NuGet.config new file mode 100644 index 00000000000..19d3d311b16 --- /dev/null +++ b/src/arcade/eng/common/internal/NuGet.config @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/arcade/eng/common/internal/Tools.csproj b/src/arcade/eng/common/internal/Tools.csproj new file mode 100644 index 00000000000..feaa6d20812 --- /dev/null +++ b/src/arcade/eng/common/internal/Tools.csproj @@ -0,0 +1,22 @@ + + + + + net472 + false + false + + + + + + + + + + + + + + + diff --git a/src/arcade/eng/common/loc/P22DotNetHtmlLocalization.lss b/src/arcade/eng/common/loc/P22DotNetHtmlLocalization.lss new file mode 100644 index 00000000000..5d892d61939 --- /dev/null +++ b/src/arcade/eng/common/loc/P22DotNetHtmlLocalization.lss @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/arcade/eng/common/msbuild.ps1 b/src/arcade/eng/common/msbuild.ps1 new file mode 100644 index 00000000000..f041e5ddd95 --- /dev/null +++ b/src/arcade/eng/common/msbuild.ps1 @@ -0,0 +1,28 @@ +[CmdletBinding(PositionalBinding=$false)] +Param( + [string] $verbosity = 'minimal', + [bool] $warnAsError = $true, + [bool] $nodeReuse = $true, + [switch] $ci, + [switch] $prepareMachine, + [switch] $excludePrereleaseVS, + [string] $msbuildEngine = $null, + [Parameter(ValueFromRemainingArguments=$true)][String[]]$extraArgs +) + +. $PSScriptRoot\tools.ps1 + +try { + if ($ci) { + $nodeReuse = $false + } + + MSBuild @extraArgs +} +catch { + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Category 'Build' -Message $_ + ExitWithExitCode 1 +} + +ExitWithExitCode 0 \ No newline at end of file diff --git a/src/arcade/eng/common/msbuild.sh b/src/arcade/eng/common/msbuild.sh new file mode 100644 index 00000000000..20d3dad5435 --- /dev/null +++ b/src/arcade/eng/common/msbuild.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +source="${BASH_SOURCE[0]}" + +# resolve $source until the file is no longer a symlink +while [[ -h "$source" ]]; do + scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + source="$(readlink "$source")" + # if $source was a relative symlink, we need to resolve it relative to the path where the + # symlink file was located + [[ $source != /* ]] && source="$scriptroot/$source" +done +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +verbosity='minimal' +warn_as_error=true +node_reuse=true +prepare_machine=false +extra_args='' + +while (($# > 0)); do + lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")" + case $lowerI in + --verbosity) + verbosity=$2 + shift 2 + ;; + --warnaserror) + warn_as_error=$2 + shift 2 + ;; + --nodereuse) + node_reuse=$2 + shift 2 + ;; + --ci) + ci=true + shift 1 + ;; + --preparemachine) + prepare_machine=true + shift 1 + ;; + *) + extra_args="$extra_args $1" + shift 1 + ;; + esac +done + +. "$scriptroot/tools.sh" + +if [[ "$ci" == true ]]; then + node_reuse=false +fi + +MSBuild $extra_args +ExitWithExitCode 0 diff --git a/src/arcade/eng/common/native/CommonLibrary.psm1 b/src/arcade/eng/common/native/CommonLibrary.psm1 new file mode 100644 index 00000000000..f71f6af6cdb --- /dev/null +++ b/src/arcade/eng/common/native/CommonLibrary.psm1 @@ -0,0 +1,401 @@ +<# +.SYNOPSIS +Helper module to install an archive to a directory + +.DESCRIPTION +Helper module to download and extract an archive to a specified directory + +.PARAMETER Uri +Uri of artifact to download + +.PARAMETER InstallDirectory +Directory to extract artifact contents to + +.PARAMETER Force +Force download / extraction if file or contents already exist. Default = False + +.PARAMETER DownloadRetries +Total number of retry attempts. Default = 5 + +.PARAMETER RetryWaitTimeInSeconds +Wait time between retry attempts in seconds. Default = 30 + +.NOTES +Returns False if download or extraction fail, True otherwise +#> +function DownloadAndExtract { + [CmdletBinding(PositionalBinding=$false)] + Param ( + [Parameter(Mandatory=$True)] + [string] $Uri, + [Parameter(Mandatory=$True)] + [string] $InstallDirectory, + [switch] $Force = $False, + [int] $DownloadRetries = 5, + [int] $RetryWaitTimeInSeconds = 30 + ) + # Define verbose switch if undefined + $Verbose = $VerbosePreference -Eq "Continue" + + $TempToolPath = CommonLibrary\Get-TempPathFilename -Path $Uri + + # Download native tool + $DownloadStatus = CommonLibrary\Get-File -Uri $Uri ` + -Path $TempToolPath ` + -DownloadRetries $DownloadRetries ` + -RetryWaitTimeInSeconds $RetryWaitTimeInSeconds ` + -Force:$Force ` + -Verbose:$Verbose + + if ($DownloadStatus -Eq $False) { + Write-Error "Download failed from $Uri" + return $False + } + + # Extract native tool + $UnzipStatus = CommonLibrary\Expand-Zip -ZipPath $TempToolPath ` + -OutputDirectory $InstallDirectory ` + -Force:$Force ` + -Verbose:$Verbose + + if ($UnzipStatus -Eq $False) { + # Retry Download one more time with Force=true + $DownloadRetryStatus = CommonLibrary\Get-File -Uri $Uri ` + -Path $TempToolPath ` + -DownloadRetries 1 ` + -RetryWaitTimeInSeconds $RetryWaitTimeInSeconds ` + -Force:$True ` + -Verbose:$Verbose + + if ($DownloadRetryStatus -Eq $False) { + Write-Error "Last attempt of download failed as well" + return $False + } + + # Retry unzip again one more time with Force=true + $UnzipRetryStatus = CommonLibrary\Expand-Zip -ZipPath $TempToolPath ` + -OutputDirectory $InstallDirectory ` + -Force:$True ` + -Verbose:$Verbose + if ($UnzipRetryStatus -Eq $False) + { + Write-Error "Last attempt of unzip failed as well" + # Clean up partial zips and extracts + if (Test-Path $TempToolPath) { + Remove-Item $TempToolPath -Force + } + if (Test-Path $InstallDirectory) { + Remove-Item $InstallDirectory -Force -Recurse + } + return $False + } + } + + return $True +} + +<# +.SYNOPSIS +Download a file, retry on failure + +.DESCRIPTION +Download specified file and retry if attempt fails + +.PARAMETER Uri +Uri of file to download. If Uri is a local path, the file will be copied instead of downloaded + +.PARAMETER Path +Path to download or copy uri file to + +.PARAMETER Force +Overwrite existing file if present. Default = False + +.PARAMETER DownloadRetries +Total number of retry attempts. Default = 5 + +.PARAMETER RetryWaitTimeInSeconds +Wait time between retry attempts in seconds Default = 30 + +#> +function Get-File { + [CmdletBinding(PositionalBinding=$false)] + Param ( + [Parameter(Mandatory=$True)] + [string] $Uri, + [Parameter(Mandatory=$True)] + [string] $Path, + [int] $DownloadRetries = 5, + [int] $RetryWaitTimeInSeconds = 30, + [switch] $Force = $False + ) + $Attempt = 0 + + if ($Force) { + if (Test-Path $Path) { + Remove-Item $Path -Force + } + } + if (Test-Path $Path) { + Write-Host "File '$Path' already exists, skipping download" + return $True + } + + $DownloadDirectory = Split-Path -ErrorAction Ignore -Path "$Path" -Parent + if (-Not (Test-Path $DownloadDirectory)) { + New-Item -path $DownloadDirectory -force -itemType "Directory" | Out-Null + } + + $TempPath = "$Path.tmp" + if (Test-Path -IsValid -Path $Uri) { + Write-Verbose "'$Uri' is a file path, copying temporarily to '$TempPath'" + Copy-Item -Path $Uri -Destination $TempPath + Write-Verbose "Moving temporary file to '$Path'" + Move-Item -Path $TempPath -Destination $Path + return $? + } + else { + Write-Verbose "Downloading $Uri" + # Don't display the console progress UI - it's a huge perf hit + $ProgressPreference = 'SilentlyContinue' + while($Attempt -Lt $DownloadRetries) + { + try { + Invoke-WebRequest -UseBasicParsing -Uri $Uri -OutFile $TempPath + Write-Verbose "Downloaded to temporary location '$TempPath'" + Move-Item -Path $TempPath -Destination $Path + Write-Verbose "Moved temporary file to '$Path'" + return $True + } + catch { + $Attempt++ + if ($Attempt -Lt $DownloadRetries) { + $AttemptsLeft = $DownloadRetries - $Attempt + Write-Warning "Download failed, $AttemptsLeft attempts remaining, will retry in $RetryWaitTimeInSeconds seconds" + Start-Sleep -Seconds $RetryWaitTimeInSeconds + } + else { + Write-Error $_ + Write-Error $_.Exception + } + } + } + } + + return $False +} + +<# +.SYNOPSIS +Generate a shim for a native tool + +.DESCRIPTION +Creates a wrapper script (shim) that passes arguments forward to native tool assembly + +.PARAMETER ShimName +The name of the shim + +.PARAMETER ShimDirectory +The directory where shims are stored + +.PARAMETER ToolFilePath +Path to file that shim forwards to + +.PARAMETER Force +Replace shim if already present. Default = False + +.NOTES +Returns $True if generating shim succeeds, $False otherwise +#> +function New-ScriptShim { + [CmdletBinding(PositionalBinding=$false)] + Param ( + [Parameter(Mandatory=$True)] + [string] $ShimName, + [Parameter(Mandatory=$True)] + [string] $ShimDirectory, + [Parameter(Mandatory=$True)] + [string] $ToolFilePath, + [Parameter(Mandatory=$True)] + [string] $BaseUri, + [switch] $Force + ) + try { + Write-Verbose "Generating '$ShimName' shim" + + if (-Not (Test-Path $ToolFilePath)){ + Write-Error "Specified tool file path '$ToolFilePath' does not exist" + return $False + } + + # WinShimmer is a small .NET Framework program that creates .exe shims to bootstrapped programs + # Many of the checks for installed programs expect a .exe extension for Windows tools, rather + # than a .bat or .cmd file. + # Source: https://github.com/dotnet/arcade/tree/master/src/WinShimmer + if (-Not (Test-Path "$ShimDirectory\WinShimmer\winshimmer.exe")) { + $InstallStatus = DownloadAndExtract -Uri "$BaseUri/windows/winshimmer/WinShimmer.zip" ` + -InstallDirectory $ShimDirectory\WinShimmer ` + -Force:$Force ` + -DownloadRetries 2 ` + -RetryWaitTimeInSeconds 5 ` + -Verbose:$Verbose + } + + if ((Test-Path (Join-Path $ShimDirectory "$ShimName.exe"))) { + Write-Host "$ShimName.exe already exists; replacing..." + Remove-Item (Join-Path $ShimDirectory "$ShimName.exe") + } + + & "$ShimDirectory\WinShimmer\winshimmer.exe" $ShimName $ToolFilePath $ShimDirectory + return $True + } + catch { + Write-Host $_ + Write-Host $_.Exception + return $False + } +} + +<# +.SYNOPSIS +Returns the machine architecture of the host machine + +.NOTES +Returns 'x64' on 64 bit machines + Returns 'x86' on 32 bit machines +#> +function Get-MachineArchitecture { + $ProcessorArchitecture = $Env:PROCESSOR_ARCHITECTURE + $ProcessorArchitectureW6432 = $Env:PROCESSOR_ARCHITEW6432 + if($ProcessorArchitecture -Eq "X86") + { + if(($ProcessorArchitectureW6432 -Eq "") -Or + ($ProcessorArchitectureW6432 -Eq "X86")) { + return "x86" + } + $ProcessorArchitecture = $ProcessorArchitectureW6432 + } + if (($ProcessorArchitecture -Eq "AMD64") -Or + ($ProcessorArchitecture -Eq "IA64") -Or + ($ProcessorArchitecture -Eq "ARM64") -Or + ($ProcessorArchitecture -Eq "LOONGARCH64") -Or + ($ProcessorArchitecture -Eq "RISCV64")) { + return "x64" + } + return "x86" +} + +<# +.SYNOPSIS +Get the name of a temporary folder under the native install directory +#> +function Get-TempDirectory { + return Join-Path (Get-NativeInstallDirectory) "temp/" +} + +function Get-TempPathFilename { + [CmdletBinding(PositionalBinding=$false)] + Param ( + [Parameter(Mandatory=$True)] + [string] $Path + ) + $TempDir = CommonLibrary\Get-TempDirectory + $TempFilename = Split-Path $Path -leaf + $TempPath = Join-Path $TempDir $TempFilename + return $TempPath +} + +<# +.SYNOPSIS +Returns the base directory to use for native tool installation + +.NOTES +Returns the value of the NETCOREENG_INSTALL_DIRECTORY if that environment variable +is set, or otherwise returns an install directory under the %USERPROFILE% +#> +function Get-NativeInstallDirectory { + $InstallDir = $Env:NETCOREENG_INSTALL_DIRECTORY + if (!$InstallDir) { + $InstallDir = Join-Path $Env:USERPROFILE ".netcoreeng/native/" + } + return $InstallDir +} + +<# +.SYNOPSIS +Unzip an archive + +.DESCRIPTION +Powershell module to unzip an archive to a specified directory + +.PARAMETER ZipPath (Required) +Path to archive to unzip + +.PARAMETER OutputDirectory (Required) +Output directory for archive contents + +.PARAMETER Force +Overwrite output directory contents if they already exist + +.NOTES +- Returns True and does not perform an extraction if output directory already exists but Overwrite is not True. +- Returns True if unzip operation is successful +- Returns False if Overwrite is True and it is unable to remove contents of OutputDirectory +- Returns False if unable to extract zip archive +#> +function Expand-Zip { + [CmdletBinding(PositionalBinding=$false)] + Param ( + [Parameter(Mandatory=$True)] + [string] $ZipPath, + [Parameter(Mandatory=$True)] + [string] $OutputDirectory, + [switch] $Force + ) + + Write-Verbose "Extracting '$ZipPath' to '$OutputDirectory'" + try { + if ((Test-Path $OutputDirectory) -And (-Not $Force)) { + Write-Host "Directory '$OutputDirectory' already exists, skipping extract" + return $True + } + if (Test-Path $OutputDirectory) { + Write-Verbose "'Force' is 'True', but '$OutputDirectory' exists, removing directory" + Remove-Item $OutputDirectory -Force -Recurse + if ($? -Eq $False) { + Write-Error "Unable to remove '$OutputDirectory'" + return $False + } + } + + $TempOutputDirectory = Join-Path "$(Split-Path -Parent $OutputDirectory)" "$(Split-Path -Leaf $OutputDirectory).tmp" + if (Test-Path $TempOutputDirectory) { + Remove-Item $TempOutputDirectory -Force -Recurse + } + New-Item -Path $TempOutputDirectory -Force -ItemType "Directory" | Out-Null + + Add-Type -assembly "system.io.compression.filesystem" + [io.compression.zipfile]::ExtractToDirectory("$ZipPath", "$TempOutputDirectory") + if ($? -Eq $False) { + Write-Error "Unable to extract '$ZipPath'" + return $False + } + + Move-Item -Path $TempOutputDirectory -Destination $OutputDirectory + } + catch { + Write-Host $_ + Write-Host $_.Exception + + return $False + } + return $True +} + +export-modulemember -function DownloadAndExtract +export-modulemember -function Expand-Zip +export-modulemember -function Get-File +export-modulemember -function Get-MachineArchitecture +export-modulemember -function Get-NativeInstallDirectory +export-modulemember -function Get-TempDirectory +export-modulemember -function Get-TempPathFilename +export-modulemember -function New-ScriptShim diff --git a/src/arcade/eng/common/native/common-library.sh b/src/arcade/eng/common/native/common-library.sh new file mode 100644 index 00000000000..080c2c283ae --- /dev/null +++ b/src/arcade/eng/common/native/common-library.sh @@ -0,0 +1,172 @@ +#!/usr/bin/env bash + +function GetNativeInstallDirectory { + local install_dir + + if [[ -z $NETCOREENG_INSTALL_DIRECTORY ]]; then + install_dir=$HOME/.netcoreeng/native/ + else + install_dir=$NETCOREENG_INSTALL_DIRECTORY + fi + + echo $install_dir + return 0 +} + +function GetTempDirectory { + + echo $(GetNativeInstallDirectory)temp/ + return 0 +} + +function ExpandZip { + local zip_path=$1 + local output_directory=$2 + local force=${3:-false} + + echo "Extracting $zip_path to $output_directory" + if [[ -d $output_directory ]] && [[ $force = false ]]; then + echo "Directory '$output_directory' already exists, skipping extract" + return 0 + fi + + if [[ -d $output_directory ]]; then + echo "'Force flag enabled, but '$output_directory' exists. Removing directory" + rm -rf $output_directory + if [[ $? != 0 ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Unable to remove '$output_directory'" + return 1 + fi + fi + + echo "Creating directory: '$output_directory'" + mkdir -p $output_directory + + echo "Extracting archive" + tar -xf $zip_path -C $output_directory + if [[ $? != 0 ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Unable to extract '$zip_path'" + return 1 + fi + + return 0 +} + +function GetCurrentOS { + local unameOut="$(uname -s)" + case $unameOut in + Linux*) echo "Linux";; + Darwin*) echo "MacOS";; + esac + return 0 +} + +function GetFile { + local uri=$1 + local path=$2 + local force=${3:-false} + local download_retries=${4:-5} + local retry_wait_time_seconds=${5:-30} + + if [[ -f $path ]]; then + if [[ $force = false ]]; then + echo "File '$path' already exists. Skipping download" + return 0 + else + rm -rf $path + fi + fi + + if [[ -f $uri ]]; then + echo "'$uri' is a file path, copying file to '$path'" + cp $uri $path + return $? + fi + + echo "Downloading $uri" + # Use curl if available, otherwise use wget + if command -v curl > /dev/null; then + curl "$uri" -sSL --retry $download_retries --retry-delay $retry_wait_time_seconds --create-dirs -o "$path" --fail + else + wget -q -O "$path" "$uri" --tries="$download_retries" + fi + + return $? +} + +function GetTempPathFileName { + local path=$1 + + local temp_dir=$(GetTempDirectory) + local temp_file_name=$(basename $path) + echo $temp_dir$temp_file_name + return 0 +} + +function DownloadAndExtract { + local uri=$1 + local installDir=$2 + local force=${3:-false} + local download_retries=${4:-5} + local retry_wait_time_seconds=${5:-30} + + local temp_tool_path=$(GetTempPathFileName $uri) + + echo "downloading to: $temp_tool_path" + + # Download file + GetFile "$uri" "$temp_tool_path" $force $download_retries $retry_wait_time_seconds + if [[ $? != 0 ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Failed to download '$uri' to '$temp_tool_path'." + return 1 + fi + + # Extract File + echo "extracting from $temp_tool_path to $installDir" + ExpandZip "$temp_tool_path" "$installDir" $force $download_retries $retry_wait_time_seconds + if [[ $? != 0 ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Failed to extract '$temp_tool_path' to '$installDir'." + return 1 + fi + + return 0 +} + +function NewScriptShim { + local shimpath=$1 + local tool_file_path=$2 + local force=${3:-false} + + echo "Generating '$shimpath' shim" + if [[ -f $shimpath ]]; then + if [[ $force = false ]]; then + echo "File '$shimpath' already exists." >&2 + return 1 + else + rm -rf $shimpath + fi + fi + + if [[ ! -f $tool_file_path ]]; then + # try to see if the path is lower cased + tool_file_path="$(echo $tool_file_path | tr "[:upper:]" "[:lower:]")" + if [[ ! -f $tool_file_path ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Specified tool file path:'$tool_file_path' does not exist" + return 1 + fi + fi + + local shim_contents=$'#!/usr/bin/env bash\n' + shim_contents+="SHIMARGS="$'$1\n' + shim_contents+="$tool_file_path"$' $SHIMARGS\n' + + # Write shim file + echo "$shim_contents" > $shimpath + + chmod +x $shimpath + + echo "Finished generating shim '$shimpath'" + + return $? +} + diff --git a/src/arcade/eng/common/native/init-compiler.sh b/src/arcade/eng/common/native/init-compiler.sh new file mode 100644 index 00000000000..9a0e1f2b456 --- /dev/null +++ b/src/arcade/eng/common/native/init-compiler.sh @@ -0,0 +1,146 @@ +#!/bin/sh +# +# This file detects the C/C++ compiler and exports it to the CC/CXX environment variables +# +# NOTE: some scripts source this file and rely on stdout being empty, make sure +# to not output *anything* here, unless it is an error message that fails the +# build. + +if [ -z "$build_arch" ] || [ -z "$compiler" ]; then + echo "Usage..." + echo "build_arch= compiler= init-compiler.sh" + echo "Specify the target architecture." + echo "Specify the name of compiler (clang or gcc)." + exit 1 +fi + +case "$compiler" in + clang*|-clang*|--clang*) + # clangx.y or clang-x.y + version="$(echo "$compiler" | tr -d '[:alpha:]-=')" + majorVersion="${version%%.*}" + + # LLVM based on v18 released in early 2024, with two releases per year + maxVersion="$((18 + ((($(date +%Y) - 2024) * 12 + $(date +%-m) - 3) / 6)))" + compiler=clang + ;; + + gcc*|-gcc*|--gcc*) + # gccx.y or gcc-x.y + version="$(echo "$compiler" | tr -d '[:alpha:]-=')" + majorVersion="${version%%.*}" + + # GCC based on v14 released in early 2024, with one release per year + maxVersion="$((14 + ((($(date +%Y) - 2024) * 12 + $(date +%-m) - 3) / 12)))" + compiler=gcc + ;; +esac + +cxxCompiler="$compiler++" + +# clear the existing CC and CXX from environment +CC= +CXX= +LDFLAGS= + +if [ "$compiler" = "gcc" ]; then cxxCompiler="g++"; fi + +check_version_exists() { + desired_version=-1 + + # Set up the environment to be used for building with the desired compiler. + if command -v "$compiler-$1" > /dev/null; then + desired_version="-$1" + elif command -v "$compiler$1" > /dev/null; then + desired_version="$1" + fi + + echo "$desired_version" +} + +__baseOS="$(uname)" +set_compiler_version_from_CC() { + if [ "$__baseOS" = "Darwin" ]; then + # On Darwin, the versions from -version/-dumpversion refer to Xcode + # versions, not llvm versions, so we can't rely on them. + return + fi + + version="$("$CC" -dumpversion)" + if [ -z "$version" ]; then + echo "Error: $CC -dumpversion didn't provide a version" + exit 1 + fi + + # gcc and clang often display 3 part versions. However, gcc can show only 1 part in some environments. + IFS=. read -r majorVersion _ < /dev/null; then + echo "Error: No compatible version of $compiler was found within the range of $minVersion to $maxVersion. Please upgrade your toolchain or specify the compiler explicitly using CLR_CC and CLR_CXX environment variables." + exit 1 + fi + + CC="$(command -v "$compiler" 2> /dev/null)" + CXX="$(command -v "$cxxCompiler" 2> /dev/null)" + set_compiler_version_from_CC + fi + else + desired_version="$(check_version_exists "$majorVersion")" + if [ "$desired_version" = "-1" ]; then + echo "Error: Could not find specific version of $compiler: $majorVersion." + exit 1 + fi + fi + + if [ -z "$CC" ]; then + CC="$(command -v "$compiler$desired_version" 2> /dev/null)" + CXX="$(command -v "$cxxCompiler$desired_version" 2> /dev/null)" + if [ -z "$CXX" ]; then CXX="$(command -v "$cxxCompiler" 2> /dev/null)"; fi + set_compiler_version_from_CC + fi +else + if [ ! -f "$CLR_CC" ]; then + echo "Error: CLR_CC is set but path '$CLR_CC' does not exist" + exit 1 + fi + CC="$CLR_CC" + CXX="$CLR_CXX" + set_compiler_version_from_CC +fi + +if [ -z "$CC" ]; then + echo "Error: Unable to find $compiler." + exit 1 +fi + +if [ "$__baseOS" != "Darwin" ]; then + # On Darwin, we always want to use the Apple linker. + + # Only lld version >= 9 can be considered stable. lld supports s390x starting from 18.0. + if [ "$compiler" = "clang" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -ge 9 ] && { [ "$build_arch" != "s390x" ] || [ "$majorVersion" -ge 18 ]; }; then + if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then + LDFLAGS="-fuse-ld=lld" + fi + fi +fi + +SCAN_BUILD_COMMAND="$(command -v "scan-build$desired_version" 2> /dev/null)" + +export CC CXX LDFLAGS SCAN_BUILD_COMMAND diff --git a/src/arcade/eng/common/native/init-distro-rid.sh b/src/arcade/eng/common/native/init-distro-rid.sh new file mode 100644 index 00000000000..83ea7aab0e0 --- /dev/null +++ b/src/arcade/eng/common/native/init-distro-rid.sh @@ -0,0 +1,110 @@ +#!/bin/sh + +# getNonPortableDistroRid +# +# Input: +# targetOs: (str) +# targetArch: (str) +# rootfsDir: (str) +# +# Return: +# non-portable rid +getNonPortableDistroRid() +{ + targetOs="$1" + targetArch="$2" + rootfsDir="$3" + nonPortableRid="" + + if [ "$targetOs" = "linux" ]; then + # shellcheck disable=SC1091 + if [ -e "${rootfsDir}/etc/os-release" ]; then + . "${rootfsDir}/etc/os-release" + if echo "${VERSION_ID:-}" | grep -qE '^([[:digit:]]|\.)+$'; then + nonPortableRid="${ID}.${VERSION_ID}-${targetArch}" + else + # Rolling release distros either do not set VERSION_ID, set it as blank or + # set it to non-version looking string (such as TEMPLATE_VERSION_ID on ArchLinux); + # so omit it here to be consistent with everything else. + nonPortableRid="${ID}-${targetArch}" + fi + elif [ -e "${rootfsDir}/android_platform" ]; then + # shellcheck disable=SC1091 + . "${rootfsDir}/android_platform" + nonPortableRid="$RID" + fi + fi + + if [ "$targetOs" = "freebsd" ]; then + # $rootfsDir can be empty. freebsd-version is a shell script and should always work. + __freebsd_major_version=$("$rootfsDir"/bin/freebsd-version | cut -d'.' -f1) + nonPortableRid="freebsd.$__freebsd_major_version-${targetArch}" + elif command -v getprop >/dev/null && getprop ro.product.system.model | grep -qi android; then + __android_sdk_version=$(getprop ro.build.version.sdk) + nonPortableRid="android.$__android_sdk_version-${targetArch}" + elif [ "$targetOs" = "illumos" ]; then + __uname_version=$(uname -v) + nonPortableRid="illumos-${targetArch}" + elif [ "$targetOs" = "solaris" ]; then + __uname_version=$(uname -v) + __solaris_major_version=$(echo "$__uname_version" | cut -d'.' -f1) + nonPortableRid="solaris.$__solaris_major_version-${targetArch}" + elif [ "$targetOs" = "haiku" ]; then + __uname_release="$(uname -r)" + nonPortableRid=haiku.r"$__uname_release"-"$targetArch" + fi + + echo "$nonPortableRid" | tr '[:upper:]' '[:lower:]' +} + +# initDistroRidGlobal +# +# Input: +# os: (str) +# arch: (str) +# rootfsDir?: (nullable:string) +# +# Return: +# None +# +# Notes: +# It is important to note that the function does not return anything, but it +# exports the following variables on success: +# __DistroRid : Non-portable rid of the target platform. +# __PortableTargetOS : OS-part of the portable rid that corresponds to the target platform. +initDistroRidGlobal() +{ + targetOs="$1" + targetArch="$2" + rootfsDir="" + if [ $# -ge 3 ]; then + rootfsDir="$3" + fi + + if [ -n "${rootfsDir}" ]; then + # We may have a cross build. Check for the existence of the rootfsDir + if [ ! -e "${rootfsDir}" ]; then + echo "Error: rootfsDir has been passed, but the location is not valid." + exit 1 + fi + fi + + __DistroRid=$(getNonPortableDistroRid "${targetOs}" "${targetArch}" "${rootfsDir}") + + if [ -z "${__PortableTargetOS:-}" ]; then + __PortableTargetOS="$targetOs" + + STRINGS="$(command -v strings || true)" + if [ -z "$STRINGS" ]; then + STRINGS="$(command -v llvm-strings || true)" + fi + + # Check for musl-based distros (e.g. Alpine Linux, Void Linux). + if "${rootfsDir}/usr/bin/ldd" --version 2>&1 | grep -q musl || + ( [ -n "$STRINGS" ] && "$STRINGS" "${rootfsDir}/usr/bin/ldd" 2>&1 | grep -q musl ); then + __PortableTargetOS="linux-musl" + fi + fi + + export __DistroRid __PortableTargetOS +} diff --git a/src/arcade/eng/common/native/init-os-and-arch.sh b/src/arcade/eng/common/native/init-os-and-arch.sh new file mode 100644 index 00000000000..38921d4338f --- /dev/null +++ b/src/arcade/eng/common/native/init-os-and-arch.sh @@ -0,0 +1,85 @@ +#!/bin/sh + +# Use uname to determine what the OS is. +OSName=$(uname -s | tr '[:upper:]' '[:lower:]') + +if command -v getprop && getprop ro.product.system.model 2>&1 | grep -qi android; then + OSName="android" +fi + +case "$OSName" in +freebsd|linux|netbsd|openbsd|sunos|android|haiku) + os="$OSName" ;; +darwin) + os=osx ;; +*) + echo "Unsupported OS $OSName detected!" + exit 1 ;; +esac + +# On Solaris, `uname -m` is discouraged, see https://docs.oracle.com/cd/E36784_01/html/E36870/uname-1.html +# and `uname -p` returns processor type (e.g. i386 on amd64). +# The appropriate tool to determine CPU is isainfo(1) https://docs.oracle.com/cd/E36784_01/html/E36870/isainfo-1.html. +if [ "$os" = "sunos" ]; then + if uname -o 2>&1 | grep -q illumos; then + os="illumos" + else + os="solaris" + fi + CPUName=$(isainfo -n) +else + # For the rest of the operating systems, use uname(1) to determine what the CPU is. + CPUName=$(uname -m) +fi + +case "$CPUName" in + arm64|aarch64) + arch=arm64 + if [ "$(getconf LONG_BIT)" -lt 64 ]; then + # This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS) + arch=arm + fi + ;; + + loongarch64) + arch=loongarch64 + ;; + + riscv64) + arch=riscv64 + ;; + + amd64|x86_64) + arch=x64 + ;; + + armv7l|armv8l) + # shellcheck disable=SC1091 + if (NAME=""; . /etc/os-release; test "$NAME" = "Tizen"); then + arch=armel + else + arch=arm + fi + ;; + + armv6l) + arch=armv6 + ;; + + i[3-6]86) + echo "Unsupported CPU $CPUName detected, build might not succeed!" + arch=x86 + ;; + + s390x) + arch=s390x + ;; + + ppc64le) + arch=ppc64le + ;; + *) + echo "Unknown CPU $CPUName detected!" + exit 1 + ;; +esac diff --git a/src/arcade/eng/common/native/install-cmake-test.sh b/src/arcade/eng/common/native/install-cmake-test.sh new file mode 100644 index 00000000000..8a5e7cf0db5 --- /dev/null +++ b/src/arcade/eng/common/native/install-cmake-test.sh @@ -0,0 +1,117 @@ +#!/usr/bin/env bash + +source="${BASH_SOURCE[0]}" +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +. $scriptroot/common-library.sh + +base_uri= +install_path= +version= +clean=false +force=false +download_retries=5 +retry_wait_time_seconds=30 + +while (($# > 0)); do + lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")" + case $lowerI in + --baseuri) + base_uri=$2 + shift 2 + ;; + --installpath) + install_path=$2 + shift 2 + ;; + --version) + version=$2 + shift 2 + ;; + --clean) + clean=true + shift 1 + ;; + --force) + force=true + shift 1 + ;; + --downloadretries) + download_retries=$2 + shift 2 + ;; + --retrywaittimeseconds) + retry_wait_time_seconds=$2 + shift 2 + ;; + --help) + echo "Common settings:" + echo " --baseuri Base file directory or Url wrom which to acquire tool archives" + echo " --installpath Base directory to install native tool to" + echo " --clean Don't install the tool, just clean up the current install of the tool" + echo " --force Force install of tools even if they previously exist" + echo " --help Print help and exit" + echo "" + echo "Advanced settings:" + echo " --downloadretries Total number of retry attempts" + echo " --retrywaittimeseconds Wait time between retry attempts in seconds" + echo "" + exit 0 + ;; + esac +done + +tool_name="cmake-test" +tool_os=$(GetCurrentOS) +tool_folder="$(echo $tool_os | tr "[:upper:]" "[:lower:]")" +tool_arch="x86_64" +tool_name_moniker="$tool_name-$version-$tool_os-$tool_arch" +tool_install_directory="$install_path/$tool_name/$version" +tool_file_path="$tool_install_directory/$tool_name_moniker/bin/$tool_name" +shim_path="$install_path/$tool_name.sh" +uri="${base_uri}/$tool_folder/$tool_name/$tool_name_moniker.tar.gz" + +# Clean up tool and installers +if [[ $clean = true ]]; then + echo "Cleaning $tool_install_directory" + if [[ -d $tool_install_directory ]]; then + rm -rf $tool_install_directory + fi + + echo "Cleaning $shim_path" + if [[ -f $shim_path ]]; then + rm -rf $shim_path + fi + + tool_temp_path=$(GetTempPathFileName $uri) + echo "Cleaning $tool_temp_path" + if [[ -f $tool_temp_path ]]; then + rm -rf $tool_temp_path + fi + + exit 0 +fi + +# Install tool +if [[ -f $tool_file_path ]] && [[ $force = false ]]; then + echo "$tool_name ($version) already exists, skipping install" + exit 0 +fi + +DownloadAndExtract $uri $tool_install_directory $force $download_retries $retry_wait_time_seconds + +if [[ $? != 0 ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Installation failed' + exit 1 +fi + +# Generate Shim +# Always rewrite shims so that we are referencing the expected version +NewScriptShim $shim_path $tool_file_path true + +if [[ $? != 0 ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Shim generation failed' + exit 1 +fi + +exit 0 diff --git a/src/arcade/eng/common/native/install-cmake.sh b/src/arcade/eng/common/native/install-cmake.sh new file mode 100644 index 00000000000..de496beebc5 --- /dev/null +++ b/src/arcade/eng/common/native/install-cmake.sh @@ -0,0 +1,117 @@ +#!/usr/bin/env bash + +source="${BASH_SOURCE[0]}" +scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" + +. $scriptroot/common-library.sh + +base_uri= +install_path= +version= +clean=false +force=false +download_retries=5 +retry_wait_time_seconds=30 + +while (($# > 0)); do + lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")" + case $lowerI in + --baseuri) + base_uri=$2 + shift 2 + ;; + --installpath) + install_path=$2 + shift 2 + ;; + --version) + version=$2 + shift 2 + ;; + --clean) + clean=true + shift 1 + ;; + --force) + force=true + shift 1 + ;; + --downloadretries) + download_retries=$2 + shift 2 + ;; + --retrywaittimeseconds) + retry_wait_time_seconds=$2 + shift 2 + ;; + --help) + echo "Common settings:" + echo " --baseuri Base file directory or Url wrom which to acquire tool archives" + echo " --installpath Base directory to install native tool to" + echo " --clean Don't install the tool, just clean up the current install of the tool" + echo " --force Force install of tools even if they previously exist" + echo " --help Print help and exit" + echo "" + echo "Advanced settings:" + echo " --downloadretries Total number of retry attempts" + echo " --retrywaittimeseconds Wait time between retry attempts in seconds" + echo "" + exit 0 + ;; + esac +done + +tool_name="cmake" +tool_os=$(GetCurrentOS) +tool_folder="$(echo $tool_os | tr "[:upper:]" "[:lower:]")" +tool_arch="x86_64" +tool_name_moniker="$tool_name-$version-$tool_os-$tool_arch" +tool_install_directory="$install_path/$tool_name/$version" +tool_file_path="$tool_install_directory/$tool_name_moniker/bin/$tool_name" +shim_path="$install_path/$tool_name.sh" +uri="${base_uri}/$tool_folder/$tool_name/$tool_name_moniker.tar.gz" + +# Clean up tool and installers +if [[ $clean = true ]]; then + echo "Cleaning $tool_install_directory" + if [[ -d $tool_install_directory ]]; then + rm -rf $tool_install_directory + fi + + echo "Cleaning $shim_path" + if [[ -f $shim_path ]]; then + rm -rf $shim_path + fi + + tool_temp_path=$(GetTempPathFileName $uri) + echo "Cleaning $tool_temp_path" + if [[ -f $tool_temp_path ]]; then + rm -rf $tool_temp_path + fi + + exit 0 +fi + +# Install tool +if [[ -f $tool_file_path ]] && [[ $force = false ]]; then + echo "$tool_name ($version) already exists, skipping install" + exit 0 +fi + +DownloadAndExtract $uri $tool_install_directory $force $download_retries $retry_wait_time_seconds + +if [[ $? != 0 ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Installation failed' + exit 1 +fi + +# Generate Shim +# Always rewrite shims so that we are referencing the expected version +NewScriptShim $shim_path $tool_file_path true + +if [[ $? != 0 ]]; then + Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Shim generation failed' + exit 1 +fi + +exit 0 diff --git a/src/arcade/eng/common/native/install-tool.ps1 b/src/arcade/eng/common/native/install-tool.ps1 new file mode 100644 index 00000000000..78f2d84a4e4 --- /dev/null +++ b/src/arcade/eng/common/native/install-tool.ps1 @@ -0,0 +1,132 @@ +<# +.SYNOPSIS +Install native tool + +.DESCRIPTION +Install cmake native tool from Azure blob storage + +.PARAMETER InstallPath +Base directory to install native tool to + +.PARAMETER BaseUri +Base file directory or Url from which to acquire tool archives + +.PARAMETER CommonLibraryDirectory +Path to folder containing common library modules + +.PARAMETER Force +Force install of tools even if they previously exist + +.PARAMETER Clean +Don't install the tool, just clean up the current install of the tool + +.PARAMETER DownloadRetries +Total number of retry attempts + +.PARAMETER RetryWaitTimeInSeconds +Wait time between retry attempts in seconds + +.NOTES +Returns 0 if install succeeds, 1 otherwise +#> +[CmdletBinding(PositionalBinding=$false)] +Param ( + [Parameter(Mandatory=$True)] + [string] $ToolName, + [Parameter(Mandatory=$True)] + [string] $InstallPath, + [Parameter(Mandatory=$True)] + [string] $BaseUri, + [Parameter(Mandatory=$True)] + [string] $Version, + [string] $CommonLibraryDirectory = $PSScriptRoot, + [switch] $Force = $False, + [switch] $Clean = $False, + [int] $DownloadRetries = 5, + [int] $RetryWaitTimeInSeconds = 30 +) + +. $PSScriptRoot\..\pipeline-logging-functions.ps1 + +# Import common library modules +Import-Module -Name (Join-Path $CommonLibraryDirectory "CommonLibrary.psm1") + +try { + # Define verbose switch if undefined + $Verbose = $VerbosePreference -Eq "Continue" + + $Arch = CommonLibrary\Get-MachineArchitecture + $ToolOs = "win64" + if($Arch -Eq "x32") { + $ToolOs = "win32" + } + $ToolNameMoniker = "$ToolName-$Version-$ToolOs-$Arch" + $ToolInstallDirectory = Join-Path $InstallPath "$ToolName\$Version\" + $Uri = "$BaseUri/windows/$ToolName/$ToolNameMoniker.zip" + $ShimPath = Join-Path $InstallPath "$ToolName.exe" + + if ($Clean) { + Write-Host "Cleaning $ToolInstallDirectory" + if (Test-Path $ToolInstallDirectory) { + Remove-Item $ToolInstallDirectory -Force -Recurse + } + Write-Host "Cleaning $ShimPath" + if (Test-Path $ShimPath) { + Remove-Item $ShimPath -Force + } + $ToolTempPath = CommonLibrary\Get-TempPathFilename -Path $Uri + Write-Host "Cleaning $ToolTempPath" + if (Test-Path $ToolTempPath) { + Remove-Item $ToolTempPath -Force + } + exit 0 + } + + # Install tool + if ((Test-Path $ToolInstallDirectory) -And (-Not $Force)) { + Write-Verbose "$ToolName ($Version) already exists, skipping install" + } + else { + $InstallStatus = CommonLibrary\DownloadAndExtract -Uri $Uri ` + -InstallDirectory $ToolInstallDirectory ` + -Force:$Force ` + -DownloadRetries $DownloadRetries ` + -RetryWaitTimeInSeconds $RetryWaitTimeInSeconds ` + -Verbose:$Verbose + + if ($InstallStatus -Eq $False) { + Write-PipelineTelemetryError "Installation failed" -Category "NativeToolsetBootstrapping" + exit 1 + } + } + + $ToolFilePath = Get-ChildItem $ToolInstallDirectory -Recurse -Filter "$ToolName.exe" | % { $_.FullName } + if (@($ToolFilePath).Length -Gt 1) { + Write-Error "There are multiple copies of $ToolName in $($ToolInstallDirectory): `n$(@($ToolFilePath | out-string))" + exit 1 + } elseif (@($ToolFilePath).Length -Lt 1) { + Write-Host "$ToolName was not found in $ToolInstallDirectory." + exit 1 + } + + # Generate shim + # Always rewrite shims so that we are referencing the expected version + $GenerateShimStatus = CommonLibrary\New-ScriptShim -ShimName $ToolName ` + -ShimDirectory $InstallPath ` + -ToolFilePath "$ToolFilePath" ` + -BaseUri $BaseUri ` + -Force:$Force ` + -Verbose:$Verbose + + if ($GenerateShimStatus -Eq $False) { + Write-PipelineTelemetryError "Generate shim failed" -Category "NativeToolsetBootstrapping" + return 1 + } + + exit 0 +} +catch { + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Category "NativeToolsetBootstrapping" -Message $_ + exit 1 +} diff --git a/src/arcade/eng/common/pipeline-logging-functions.ps1 b/src/arcade/eng/common/pipeline-logging-functions.ps1 new file mode 100644 index 00000000000..8e422c561e4 --- /dev/null +++ b/src/arcade/eng/common/pipeline-logging-functions.ps1 @@ -0,0 +1,260 @@ +# Source for this file was taken from https://github.com/microsoft/azure-pipelines-task-lib/blob/11c9439d4af17e6475d9fe058e6b2e03914d17e6/powershell/VstsTaskSdk/LoggingCommandFunctions.ps1 and modified. + +# NOTE: You should not be calling these method directly as they are likely to change. Instead you should be calling the Write-Pipeline* functions defined in tools.ps1 + +$script:loggingCommandPrefix = '##vso[' +$script:loggingCommandEscapeMappings = @( # TODO: WHAT ABOUT "="? WHAT ABOUT "%"? + New-Object psobject -Property @{ Token = ';' ; Replacement = '%3B' } + New-Object psobject -Property @{ Token = "`r" ; Replacement = '%0D' } + New-Object psobject -Property @{ Token = "`n" ; Replacement = '%0A' } + New-Object psobject -Property @{ Token = "]" ; Replacement = '%5D' } +) +# TODO: BUG: Escape % ??? +# TODO: Add test to verify don't need to escape "=". + +# Specify "-Force" to force pipeline formatted output even if "$ci" is false or not set +function Write-PipelineTelemetryError { + [CmdletBinding()] + param( + [Parameter(Mandatory = $true)] + [string]$Category, + [Parameter(Mandatory = $true)] + [string]$Message, + [Parameter(Mandatory = $false)] + [string]$Type = 'error', + [string]$ErrCode, + [string]$SourcePath, + [string]$LineNumber, + [string]$ColumnNumber, + [switch]$AsOutput, + [switch]$Force) + + $PSBoundParameters.Remove('Category') | Out-Null + + if ($Force -Or ((Test-Path variable:ci) -And $ci)) { + $Message = "(NETCORE_ENGINEERING_TELEMETRY=$Category) $Message" + } + $PSBoundParameters.Remove('Message') | Out-Null + $PSBoundParameters.Add('Message', $Message) + Write-PipelineTaskError @PSBoundParameters +} + +# Specify "-Force" to force pipeline formatted output even if "$ci" is false or not set +function Write-PipelineTaskError { + [CmdletBinding()] + param( + [Parameter(Mandatory = $true)] + [string]$Message, + [Parameter(Mandatory = $false)] + [string]$Type = 'error', + [string]$ErrCode, + [string]$SourcePath, + [string]$LineNumber, + [string]$ColumnNumber, + [switch]$AsOutput, + [switch]$Force + ) + + if (!$Force -And (-Not (Test-Path variable:ci) -Or !$ci)) { + if ($Type -eq 'error') { + Write-Host $Message -ForegroundColor Red + return + } + elseif ($Type -eq 'warning') { + Write-Host $Message -ForegroundColor Yellow + return + } + } + + if (($Type -ne 'error') -and ($Type -ne 'warning')) { + Write-Host $Message + return + } + $PSBoundParameters.Remove('Force') | Out-Null + if (-not $PSBoundParameters.ContainsKey('Type')) { + $PSBoundParameters.Add('Type', 'error') + } + Write-LogIssue @PSBoundParameters +} + +function Write-PipelineSetVariable { + [CmdletBinding()] + param( + [Parameter(Mandatory = $true)] + [string]$Name, + [string]$Value, + [switch]$Secret, + [switch]$AsOutput, + [bool]$IsMultiJobVariable = $true) + + if ((Test-Path variable:ci) -And $ci) { + Write-LoggingCommand -Area 'task' -Event 'setvariable' -Data $Value -Properties @{ + 'variable' = $Name + 'isSecret' = $Secret + 'isOutput' = $IsMultiJobVariable + } -AsOutput:$AsOutput + } +} + +function Write-PipelinePrependPath { + [CmdletBinding()] + param( + [Parameter(Mandatory = $true)] + [string]$Path, + [switch]$AsOutput) + + if ((Test-Path variable:ci) -And $ci) { + Write-LoggingCommand -Area 'task' -Event 'prependpath' -Data $Path -AsOutput:$AsOutput + } +} + +function Write-PipelineSetResult { + [CmdletBinding()] + param( + [ValidateSet("Succeeded", "SucceededWithIssues", "Failed", "Cancelled", "Skipped")] + [Parameter(Mandatory = $true)] + [string]$Result, + [string]$Message) + if ((Test-Path variable:ci) -And $ci) { + Write-LoggingCommand -Area 'task' -Event 'complete' -Data $Message -Properties @{ + 'result' = $Result + } + } +} + +<######################################## +# Private functions. +########################################> +function Format-LoggingCommandData { + [CmdletBinding()] + param([string]$Value, [switch]$Reverse) + + if (!$Value) { + return '' + } + + if (!$Reverse) { + foreach ($mapping in $script:loggingCommandEscapeMappings) { + $Value = $Value.Replace($mapping.Token, $mapping.Replacement) + } + } + else { + for ($i = $script:loggingCommandEscapeMappings.Length - 1 ; $i -ge 0 ; $i--) { + $mapping = $script:loggingCommandEscapeMappings[$i] + $Value = $Value.Replace($mapping.Replacement, $mapping.Token) + } + } + + return $Value +} + +function Format-LoggingCommand { + [CmdletBinding()] + param( + [Parameter(Mandatory = $true)] + [string]$Area, + [Parameter(Mandatory = $true)] + [string]$Event, + [string]$Data, + [hashtable]$Properties) + + # Append the preamble. + [System.Text.StringBuilder]$sb = New-Object -TypeName System.Text.StringBuilder + $null = $sb.Append($script:loggingCommandPrefix).Append($Area).Append('.').Append($Event) + + # Append the properties. + if ($Properties) { + $first = $true + foreach ($key in $Properties.Keys) { + [string]$value = Format-LoggingCommandData $Properties[$key] + if ($value) { + if ($first) { + $null = $sb.Append(' ') + $first = $false + } + else { + $null = $sb.Append(';') + } + + $null = $sb.Append("$key=$value") + } + } + } + + # Append the tail and output the value. + $Data = Format-LoggingCommandData $Data + $sb.Append(']').Append($Data).ToString() +} + +function Write-LoggingCommand { + [CmdletBinding(DefaultParameterSetName = 'Parameters')] + param( + [Parameter(Mandatory = $true, ParameterSetName = 'Parameters')] + [string]$Area, + [Parameter(Mandatory = $true, ParameterSetName = 'Parameters')] + [string]$Event, + [Parameter(ParameterSetName = 'Parameters')] + [string]$Data, + [Parameter(ParameterSetName = 'Parameters')] + [hashtable]$Properties, + [Parameter(Mandatory = $true, ParameterSetName = 'Object')] + $Command, + [switch]$AsOutput) + + if ($PSCmdlet.ParameterSetName -eq 'Object') { + Write-LoggingCommand -Area $Command.Area -Event $Command.Event -Data $Command.Data -Properties $Command.Properties -AsOutput:$AsOutput + return + } + + $command = Format-LoggingCommand -Area $Area -Event $Event -Data $Data -Properties $Properties + if ($AsOutput) { + $command + } + else { + Write-Host $command + } +} + +function Write-LogIssue { + [CmdletBinding()] + param( + [ValidateSet('warning', 'error')] + [Parameter(Mandatory = $true)] + [string]$Type, + [string]$Message, + [string]$ErrCode, + [string]$SourcePath, + [string]$LineNumber, + [string]$ColumnNumber, + [switch]$AsOutput) + + $command = Format-LoggingCommand -Area 'task' -Event 'logissue' -Data $Message -Properties @{ + 'type' = $Type + 'code' = $ErrCode + 'sourcepath' = $SourcePath + 'linenumber' = $LineNumber + 'columnnumber' = $ColumnNumber + } + if ($AsOutput) { + return $command + } + + if ($Type -eq 'error') { + $foregroundColor = $host.PrivateData.ErrorForegroundColor + $backgroundColor = $host.PrivateData.ErrorBackgroundColor + if ($foregroundColor -isnot [System.ConsoleColor] -or $backgroundColor -isnot [System.ConsoleColor]) { + $foregroundColor = [System.ConsoleColor]::Red + $backgroundColor = [System.ConsoleColor]::Black + } + } + else { + $foregroundColor = $host.PrivateData.WarningForegroundColor + $backgroundColor = $host.PrivateData.WarningBackgroundColor + if ($foregroundColor -isnot [System.ConsoleColor] -or $backgroundColor -isnot [System.ConsoleColor]) { + $foregroundColor = [System.ConsoleColor]::Yellow + $backgroundColor = [System.ConsoleColor]::Black + } + } + + Write-Host $command -ForegroundColor $foregroundColor -BackgroundColor $backgroundColor +} diff --git a/src/arcade/eng/common/pipeline-logging-functions.sh b/src/arcade/eng/common/pipeline-logging-functions.sh new file mode 100644 index 00000000000..6a0b2255e91 --- /dev/null +++ b/src/arcade/eng/common/pipeline-logging-functions.sh @@ -0,0 +1,206 @@ +#!/usr/bin/env bash + +function Write-PipelineTelemetryError { + local telemetry_category='' + local force=false + local function_args=() + local message='' + while [[ $# -gt 0 ]]; do + opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" + case "$opt" in + -category|-c) + telemetry_category=$2 + shift + ;; + -force|-f) + force=true + ;; + -*) + function_args+=("$1 $2") + shift + ;; + *) + message=$* + ;; + esac + shift + done + + if [[ $force != true ]] && [[ "$ci" != true ]]; then + echo "$message" >&2 + return + fi + + if [[ $force == true ]]; then + function_args+=("-force") + fi + message="(NETCORE_ENGINEERING_TELEMETRY=$telemetry_category) $message" + function_args+=("$message") + Write-PipelineTaskError ${function_args[@]} +} + +function Write-PipelineTaskError { + local message_type="error" + local sourcepath='' + local linenumber='' + local columnnumber='' + local error_code='' + local force=false + + while [[ $# -gt 0 ]]; do + opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" + case "$opt" in + -type|-t) + message_type=$2 + shift + ;; + -sourcepath|-s) + sourcepath=$2 + shift + ;; + -linenumber|-ln) + linenumber=$2 + shift + ;; + -columnnumber|-cn) + columnnumber=$2 + shift + ;; + -errcode|-e) + error_code=$2 + shift + ;; + -force|-f) + force=true + ;; + *) + break + ;; + esac + + shift + done + + if [[ $force != true ]] && [[ "$ci" != true ]]; then + echo "$@" >&2 + return + fi + + local message="##vso[task.logissue" + + message="$message type=$message_type" + + if [ -n "$sourcepath" ]; then + message="$message;sourcepath=$sourcepath" + fi + + if [ -n "$linenumber" ]; then + message="$message;linenumber=$linenumber" + fi + + if [ -n "$columnnumber" ]; then + message="$message;columnnumber=$columnnumber" + fi + + if [ -n "$error_code" ]; then + message="$message;code=$error_code" + fi + + message="$message]$*" + echo "$message" +} + +function Write-PipelineSetVariable { + if [[ "$ci" != true ]]; then + return + fi + + local name='' + local value='' + local secret=false + local as_output=false + local is_multi_job_variable=true + + while [[ $# -gt 0 ]]; do + opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" + case "$opt" in + -name|-n) + name=$2 + shift + ;; + -value|-v) + value=$2 + shift + ;; + -secret|-s) + secret=true + ;; + -as_output|-a) + as_output=true + ;; + -is_multi_job_variable|-i) + is_multi_job_variable=$2 + shift + ;; + esac + shift + done + + value=${value/;/%3B} + value=${value/\\r/%0D} + value=${value/\\n/%0A} + value=${value/]/%5D} + + local message="##vso[task.setvariable variable=$name;isSecret=$secret;isOutput=$is_multi_job_variable]$value" + + if [[ "$as_output" == true ]]; then + $message + else + echo "$message" + fi +} + +function Write-PipelinePrependPath { + local prepend_path='' + + while [[ $# -gt 0 ]]; do + opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" + case "$opt" in + -path|-p) + prepend_path=$2 + shift + ;; + esac + shift + done + + export PATH="$prepend_path:$PATH" + + if [[ "$ci" == true ]]; then + echo "##vso[task.prependpath]$prepend_path" + fi +} + +function Write-PipelineSetResult { + local result='' + local message='' + + while [[ $# -gt 0 ]]; do + opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" + case "$opt" in + -result|-r) + result=$2 + shift + ;; + -message|-m) + message=$2 + shift + ;; + esac + shift + done + + if [[ "$ci" == true ]]; then + echo "##vso[task.complete result=$result;]$message" + fi +} diff --git a/src/arcade/eng/common/post-build/check-channel-consistency.ps1 b/src/arcade/eng/common/post-build/check-channel-consistency.ps1 new file mode 100644 index 00000000000..61208d2d135 --- /dev/null +++ b/src/arcade/eng/common/post-build/check-channel-consistency.ps1 @@ -0,0 +1,48 @@ +param( + [Parameter(Mandatory=$true)][string] $PromoteToChannels, # List of channels that the build should be promoted to + [Parameter(Mandatory=$true)][array] $AvailableChannelIds # List of channel IDs available in the YAML implementation +) + +try { + $ErrorActionPreference = 'Stop' + Set-StrictMode -Version 2.0 + + # `tools.ps1` checks $ci to perform some actions. Since the post-build + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + $disableConfigureToolsetImport = $true + . $PSScriptRoot\..\tools.ps1 + + if ($PromoteToChannels -eq "") { + Write-PipelineTaskError -Type 'warning' -Message "This build won't publish assets as it's not configured to any Maestro channel. If that wasn't intended use Darc to configure a default channel using add-default-channel for this branch or to promote it to a channel using add-build-to-channel. See https://github.com/dotnet/arcade/blob/main/Documentation/Darc.md#assigning-an-individual-build-to-a-channel for more info." + ExitWithExitCode 0 + } + + # Check that every channel that Maestro told to promote the build to + # is available in YAML + $PromoteToChannelsIds = $PromoteToChannels -split "\D" | Where-Object { $_ } + + $hasErrors = $false + + foreach ($id in $PromoteToChannelsIds) { + if (($id -ne 0) -and ($id -notin $AvailableChannelIds)) { + Write-PipelineTaskError -Message "Channel $id is not present in the post-build YAML configuration! This is an error scenario. Please contact @dnceng." + $hasErrors = $true + } + } + + # The `Write-PipelineTaskError` doesn't error the script and we might report several errors + # in the previous lines. The check below makes sure that we return an error state from the + # script if we reported any validation error + if ($hasErrors) { + ExitWithExitCode 1 + } + + Write-Host 'done.' +} +catch { + Write-Host $_ + Write-PipelineTelemetryError -Category 'CheckChannelConsistency' -Message "There was an error while trying to check consistency of Maestro default channels for the build and post-build YAML configuration." + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/post-build/nuget-validation.ps1 b/src/arcade/eng/common/post-build/nuget-validation.ps1 new file mode 100644 index 00000000000..e5de00c8983 --- /dev/null +++ b/src/arcade/eng/common/post-build/nuget-validation.ps1 @@ -0,0 +1,22 @@ +# This script validates NuGet package metadata information using this +# tool: https://github.com/NuGet/NuGetGallery/tree/jver-verify/src/VerifyMicrosoftPackage + +param( + [Parameter(Mandatory=$true)][string] $PackagesPath # Path to where the packages to be validated are +) + +# `tools.ps1` checks $ci to perform some actions. Since the post-build +# scripts don't necessarily execute in the same agent that run the +# build.ps1/sh script this variable isn't automatically set. +$ci = $true +$disableConfigureToolsetImport = $true +. $PSScriptRoot\..\tools.ps1 + +try { + & $PSScriptRoot\nuget-verification.ps1 ${PackagesPath}\*.nupkg +} +catch { + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Category 'NuGetValidation' -Message $_ + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/post-build/nuget-verification.ps1 b/src/arcade/eng/common/post-build/nuget-verification.ps1 new file mode 100644 index 00000000000..a365194a938 --- /dev/null +++ b/src/arcade/eng/common/post-build/nuget-verification.ps1 @@ -0,0 +1,121 @@ +<# +.SYNOPSIS + Verifies that Microsoft NuGet packages have proper metadata. +.DESCRIPTION + Downloads a verification tool and runs metadata validation on the provided NuGet packages. This script writes an + error if any of the provided packages fail validation. All arguments provided to this PowerShell script that do not + match PowerShell parameters are passed on to the verification tool downloaded during the execution of this script. +.PARAMETER NuGetExePath + The path to the nuget.exe binary to use. If not provided, nuget.exe will be downloaded into the -DownloadPath + directory. +.PARAMETER PackageSource + The package source to use to download the verification tool. If not provided, nuget.org will be used. +.PARAMETER DownloadPath + The directory path to download the verification tool and nuget.exe to. If not provided, + %TEMP%\NuGet.VerifyNuGetPackage will be used. +.PARAMETER args + Arguments that will be passed to the verification tool. +.EXAMPLE + PS> .\verify.ps1 *.nupkg + Verifies the metadata of all .nupkg files in the currect working directory. +.EXAMPLE + PS> .\verify.ps1 --help + Displays the help text of the downloaded verifiction tool. +.LINK + https://github.com/NuGet/NuGetGallery/blob/master/src/VerifyMicrosoftPackage/README.md +#> + +# This script was copied from https://github.com/NuGet/NuGetGallery/blob/3e25ad135146676bcab0050a516939d9958bfa5d/src/VerifyMicrosoftPackage/verify.ps1 + +[CmdletBinding(PositionalBinding = $false)] +param( + [string]$NuGetExePath, + [string]$PackageSource = "https://api.nuget.org/v3/index.json", + [string]$DownloadPath, + [Parameter(ValueFromRemainingArguments = $true)] + [string[]]$args +) + +# The URL to download nuget.exe. +$nugetExeUrl = "https://dist.nuget.org/win-x86-commandline/v4.9.4/nuget.exe" + +# The package ID of the verification tool. +$packageId = "NuGet.VerifyMicrosoftPackage" + +# The location that nuget.exe and the verification tool will be downloaded to. +if (!$DownloadPath) { + $DownloadPath = (Join-Path $env:TEMP "NuGet.VerifyMicrosoftPackage") +} + +$fence = New-Object -TypeName string -ArgumentList '=', 80 + +# Create the download directory, if it doesn't already exist. +if (!(Test-Path $DownloadPath)) { + New-Item -ItemType Directory $DownloadPath | Out-Null +} +Write-Host "Using download path: $DownloadPath" + +if ($NuGetExePath) { + $nuget = $NuGetExePath +} else { + $downloadedNuGetExe = Join-Path $DownloadPath "nuget.exe" + + # Download nuget.exe, if it doesn't already exist. + if (!(Test-Path $downloadedNuGetExe)) { + Write-Host "Downloading nuget.exe from $nugetExeUrl..." + $ProgressPreference = 'SilentlyContinue' + try { + Invoke-WebRequest $nugetExeUrl -OutFile $downloadedNuGetExe + $ProgressPreference = 'Continue' + } catch { + $ProgressPreference = 'Continue' + Write-Error $_ + Write-Error "nuget.exe failed to download." + exit + } + } + + $nuget = $downloadedNuGetExe +} + +Write-Host "Using nuget.exe path: $nuget" +Write-Host " " + +# Download the latest version of the verification tool. +Write-Host "Downloading the latest version of $packageId from $packageSource..." +Write-Host $fence +& $nuget install $packageId ` + -Prerelease ` + -OutputDirectory $DownloadPath ` + -Source $PackageSource +Write-Host $fence +Write-Host " " + +if ($LASTEXITCODE -ne 0) { + Write-Error "nuget.exe failed to fetch the verify tool." + exit +} + +# Find the most recently downloaded tool +Write-Host "Finding the most recently downloaded verification tool." +$verifyProbePath = Join-Path $DownloadPath "$packageId.*" +$verifyPath = Get-ChildItem -Path $verifyProbePath -Directory ` + | Sort-Object -Property LastWriteTime -Descending ` + | Select-Object -First 1 +$verify = Join-Path $verifyPath "tools\NuGet.VerifyMicrosoftPackage.exe" +Write-Host "Using verification tool: $verify" +Write-Host " " + +# Execute the verification tool. +Write-Host "Executing the verify tool..." +Write-Host $fence +& $verify $args +Write-Host $fence +Write-Host " " + +# Respond to the exit code. +if ($LASTEXITCODE -ne 0) { + Write-Error "The verify tool found some problems." +} else { + Write-Output "The verify tool succeeded." +} diff --git a/src/arcade/eng/common/post-build/redact-logs.ps1 b/src/arcade/eng/common/post-build/redact-logs.ps1 new file mode 100644 index 00000000000..b7fc1959150 --- /dev/null +++ b/src/arcade/eng/common/post-build/redact-logs.ps1 @@ -0,0 +1,89 @@ +[CmdletBinding(PositionalBinding=$False)] +param( + [Parameter(Mandatory=$true, Position=0)][string] $InputPath, + [Parameter(Mandatory=$true)][string] $BinlogToolVersion, + [Parameter(Mandatory=$false)][string] $DotnetPath, + [Parameter(Mandatory=$false)][string] $PackageFeed = 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json', + # File with strings to redact - separated by newlines. + # For comments start the line with '# ' - such lines are ignored + [Parameter(Mandatory=$false)][string] $TokensFilePath, + [Parameter(ValueFromRemainingArguments=$true)][String[]]$TokensToRedact +) + +try { + $ErrorActionPreference = 'Stop' + Set-StrictMode -Version 2.0 + + # `tools.ps1` checks $ci to perform some actions. Since the post-build + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + $disableConfigureToolsetImport = $true + . $PSScriptRoot\..\tools.ps1 + + $packageName = 'binlogtool' + + $dotnet = $DotnetPath + + if (!$dotnet) { + $dotnetRoot = InitializeDotNetCli -install:$true + $dotnet = "$dotnetRoot\dotnet.exe" + } + + $toolList = & "$dotnet" tool list -g + + if ($toolList -like "*$packageName*") { + & "$dotnet" tool uninstall $packageName -g + } + + $toolPath = "$PSScriptRoot\..\..\..\.tools" + $verbosity = 'minimal' + + New-Item -ItemType Directory -Force -Path $toolPath + + Push-Location -Path $toolPath + + try { + Write-Host "Installing Binlog redactor CLI..." + Write-Host "'$dotnet' new tool-manifest" + & "$dotnet" new tool-manifest + Write-Host "'$dotnet' tool install $packageName --local --add-source '$PackageFeed' -v $verbosity --version $BinlogToolVersion" + & "$dotnet" tool install $packageName --local --add-source "$PackageFeed" -v $verbosity --version $BinlogToolVersion + + if (Test-Path $TokensFilePath) { + Write-Host "Adding additional sensitive data for redaction from file: " $TokensFilePath + $TokensToRedact += Get-Content -Path $TokensFilePath | Foreach {$_.Trim()} | Where { $_ -notmatch "^# " } + } + + $optionalParams = [System.Collections.ArrayList]::new() + + Foreach ($p in $TokensToRedact) + { + if($p -match '^\$\(.*\)$') + { + Write-Host ("Ignoring token {0} as it is probably unexpanded AzDO variable" -f $p) + } + elseif($p) + { + $optionalParams.Add("-p:" + $p) | Out-Null + } + } + + & $dotnet binlogtool redact --input:$InputPath --recurse --in-place ` + @optionalParams + + if ($LastExitCode -ne 0) { + Write-PipelineTelemetryError -Category 'Redactor' -Type 'warning' -Message "Problems using Redactor tool (exit code: $LastExitCode). But ignoring them now." + } + } + finally { + Pop-Location + } + + Write-Host 'done.' +} +catch { + Write-Host $_ + Write-PipelineTelemetryError -Category 'Redactor' -Message "There was an error while trying to redact logs. Error: $_" + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/post-build/sourcelink-validation.ps1 b/src/arcade/eng/common/post-build/sourcelink-validation.ps1 new file mode 100644 index 00000000000..1976ef70fb8 --- /dev/null +++ b/src/arcade/eng/common/post-build/sourcelink-validation.ps1 @@ -0,0 +1,327 @@ +param( + [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where Symbols.NuGet packages to be checked are stored + [Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation + [Parameter(Mandatory=$false)][string] $GHRepoName, # GitHub name of the repo including the Org. E.g., dotnet/arcade + [Parameter(Mandatory=$false)][string] $GHCommit, # GitHub commit SHA used to build the packages + [Parameter(Mandatory=$true)][string] $SourcelinkCliVersion # Version of SourceLink CLI to use +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 + +# `tools.ps1` checks $ci to perform some actions. Since the post-build +# scripts don't necessarily execute in the same agent that run the +# build.ps1/sh script this variable isn't automatically set. +$ci = $true +$disableConfigureToolsetImport = $true +. $PSScriptRoot\..\tools.ps1 + +# Cache/HashMap (File -> Exist flag) used to consult whether a file exist +# in the repository at a specific commit point. This is populated by inserting +# all files present in the repo at a specific commit point. +$global:RepoFiles = @{} + +# Maximum number of jobs to run in parallel +$MaxParallelJobs = 16 + +$MaxRetries = 5 +$RetryWaitTimeInSeconds = 30 + +# Wait time between check for system load +$SecondsBetweenLoadChecks = 10 + +if (!$InputPath -or !(Test-Path $InputPath)){ + Write-Host "No files to validate." + ExitWithExitCode 0 +} + +$ValidatePackage = { + param( + [string] $PackagePath # Full path to a Symbols.NuGet package + ) + + . $using:PSScriptRoot\..\tools.ps1 + + # Ensure input file exist + if (!(Test-Path $PackagePath)) { + Write-Host "Input file does not exist: $PackagePath" + return [pscustomobject]@{ + result = 1 + packagePath = $PackagePath + } + } + + # Extensions for which we'll look for SourceLink information + # For now we'll only care about Portable & Embedded PDBs + $RelevantExtensions = @('.dll', '.exe', '.pdb') + + Write-Host -NoNewLine 'Validating ' ([System.IO.Path]::GetFileName($PackagePath)) '...' + + $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) + $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId + $FailedFiles = 0 + + Add-Type -AssemblyName System.IO.Compression.FileSystem + + [System.IO.Directory]::CreateDirectory($ExtractPath) | Out-Null + + try { + $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath) + + $zip.Entries | + Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} | + ForEach-Object { + $FileName = $_.FullName + $Extension = [System.IO.Path]::GetExtension($_.Name) + $FakeName = -Join((New-Guid), $Extension) + $TargetFile = Join-Path -Path $ExtractPath -ChildPath $FakeName + + # We ignore resource DLLs + if ($FileName.EndsWith('.resources.dll')) { + return [pscustomobject]@{ + result = 0 + packagePath = $PackagePath + } + } + + [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true) + + $ValidateFile = { + param( + [string] $FullPath, # Full path to the module that has to be checked + [string] $RealPath, + [ref] $FailedFiles + ) + + $sourcelinkExe = "$env:USERPROFILE\.dotnet\tools" + $sourcelinkExe = Resolve-Path "$sourcelinkExe\sourcelink.exe" + $SourceLinkInfos = & $sourcelinkExe print-urls $FullPath | Out-String + + if ($LASTEXITCODE -eq 0 -and -not ([string]::IsNullOrEmpty($SourceLinkInfos))) { + $NumFailedLinks = 0 + + # We only care about Http addresses + $Matches = (Select-String '(http[s]?)(:\/\/)([^\s,]+)' -Input $SourceLinkInfos -AllMatches).Matches + + if ($Matches.Count -ne 0) { + $Matches.Value | + ForEach-Object { + $Link = $_ + $CommitUrl = "https://raw.githubusercontent.com/${using:GHRepoName}/${using:GHCommit}/" + + $FilePath = $Link.Replace($CommitUrl, "") + $Status = 200 + $Cache = $using:RepoFiles + + $attempts = 0 + + while ($attempts -lt $using:MaxRetries) { + if ( !($Cache.ContainsKey($FilePath)) ) { + try { + $Uri = $Link -as [System.URI] + + if ($Link -match "submodules") { + # Skip submodule links until sourcelink properly handles submodules + $Status = 200 + } + elseif ($Uri.AbsoluteURI -ne $null -and ($Uri.Host -match 'github' -or $Uri.Host -match 'githubusercontent')) { + # Only GitHub links are valid + $Status = (Invoke-WebRequest -Uri $Link -UseBasicParsing -Method HEAD -TimeoutSec 5).StatusCode + } + else { + # If it's not a github link, we want to break out of the loop and not retry. + $Status = 0 + $attempts = $using:MaxRetries + } + } + catch { + Write-Host $_ + $Status = 0 + } + } + + if ($Status -ne 200) { + $attempts++ + + if ($attempts -lt $using:MaxRetries) + { + $attemptsLeft = $using:MaxRetries - $attempts + Write-Warning "Download failed, $attemptsLeft attempts remaining, will retry in $using:RetryWaitTimeInSeconds seconds" + Start-Sleep -Seconds $using:RetryWaitTimeInSeconds + } + else { + if ($NumFailedLinks -eq 0) { + if ($FailedFiles.Value -eq 0) { + Write-Host + } + + Write-Host "`tFile $RealPath has broken links:" + } + + Write-Host "`t`tFailed to retrieve $Link" + + $NumFailedLinks++ + } + } + else { + break + } + } + } + } + + if ($NumFailedLinks -ne 0) { + $FailedFiles.value++ + $global:LASTEXITCODE = 1 + } + } + } + + &$ValidateFile $TargetFile $FileName ([ref]$FailedFiles) + } + } + catch { + Write-Host $_ + } + finally { + $zip.Dispose() + } + + if ($FailedFiles -eq 0) { + Write-Host 'Passed.' + return [pscustomobject]@{ + result = 0 + packagePath = $PackagePath + } + } + else { + Write-PipelineTelemetryError -Category 'SourceLink' -Message "$PackagePath has broken SourceLink links." + return [pscustomobject]@{ + result = 1 + packagePath = $PackagePath + } + } +} + +function CheckJobResult( + $result, + $packagePath, + [ref]$ValidationFailures, + [switch]$logErrors) { + if ($result -ne '0') { + if ($logErrors) { + Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links." + } + $ValidationFailures.Value++ + } +} + +function ValidateSourceLinkLinks { + if ($GHRepoName -ne '' -and !($GHRepoName -Match '^[^\s\/]+/[^\s\/]+$')) { + if (!($GHRepoName -Match '^[^\s-]+-[^\s]+$')) { + Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHRepoName should be in the format / or -. '$GHRepoName'" + ExitWithExitCode 1 + } + else { + $GHRepoName = $GHRepoName -replace '^([^\s-]+)-([^\s]+)$', '$1/$2'; + } + } + + if ($GHCommit -ne '' -and !($GHCommit -Match '^[0-9a-fA-F]{40}$')) { + Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHCommit should be a 40 chars hexadecimal string. '$GHCommit'" + ExitWithExitCode 1 + } + + if ($GHRepoName -ne '' -and $GHCommit -ne '') { + $RepoTreeURL = -Join('http://api.github.com/repos/', $GHRepoName, '/git/trees/', $GHCommit, '?recursive=1') + $CodeExtensions = @('.cs', '.vb', '.fs', '.fsi', '.fsx', '.fsscript') + + try { + # Retrieve the list of files in the repo at that particular commit point and store them in the RepoFiles hash + $Data = Invoke-WebRequest $RepoTreeURL -UseBasicParsing | ConvertFrom-Json | Select-Object -ExpandProperty tree + + foreach ($file in $Data) { + $Extension = [System.IO.Path]::GetExtension($file.path) + + if ($CodeExtensions.Contains($Extension)) { + $RepoFiles[$file.path] = 1 + } + } + } + catch { + Write-Host "Problems downloading the list of files from the repo. Url used: $RepoTreeURL . Execution will proceed without caching." + } + } + elseif ($GHRepoName -ne '' -or $GHCommit -ne '') { + Write-Host 'For using the http caching mechanism both GHRepoName and GHCommit should be informed.' + } + + if (Test-Path $ExtractPath) { + Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue + } + + $ValidationFailures = 0 + + # Process each NuGet package in parallel + Get-ChildItem "$InputPath\*.symbols.nupkg" | + ForEach-Object { + Write-Host "Starting $($_.FullName)" + Start-Job -ScriptBlock $ValidatePackage -ArgumentList $_.FullName | Out-Null + $NumJobs = @(Get-Job -State 'Running').Count + + while ($NumJobs -ge $MaxParallelJobs) { + Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again." + sleep $SecondsBetweenLoadChecks + $NumJobs = @(Get-Job -State 'Running').Count + } + + foreach ($Job in @(Get-Job -State 'Completed')) { + $jobResult = Wait-Job -Id $Job.Id | Receive-Job + CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) -LogErrors + Remove-Job -Id $Job.Id + } + } + + foreach ($Job in @(Get-Job)) { + $jobResult = Wait-Job -Id $Job.Id | Receive-Job + CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) + Remove-Job -Id $Job.Id + } + if ($ValidationFailures -gt 0) { + Write-PipelineTelemetryError -Category 'SourceLink' -Message "$ValidationFailures package(s) failed validation." + ExitWithExitCode 1 + } +} + +function InstallSourcelinkCli { + $sourcelinkCliPackageName = 'sourcelink' + + $dotnetRoot = InitializeDotNetCli -install:$true + $dotnet = "$dotnetRoot\dotnet.exe" + $toolList = & "$dotnet" tool list --global + + if (($toolList -like "*$sourcelinkCliPackageName*") -and ($toolList -like "*$sourcelinkCliVersion*")) { + Write-Host "SourceLink CLI version $sourcelinkCliVersion is already installed." + } + else { + Write-Host "Installing SourceLink CLI version $sourcelinkCliVersion..." + Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' + & "$dotnet" tool install $sourcelinkCliPackageName --version $sourcelinkCliVersion --verbosity "minimal" --global + } +} + +try { + InstallSourcelinkCli + + foreach ($Job in @(Get-Job)) { + Remove-Job -Id $Job.Id + } + + ValidateSourceLinkLinks +} +catch { + Write-Host $_.Exception + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Category 'SourceLink' -Message $_ + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/post-build/symbols-validation.ps1 b/src/arcade/eng/common/post-build/symbols-validation.ps1 new file mode 100644 index 00000000000..7146e593ffa --- /dev/null +++ b/src/arcade/eng/common/post-build/symbols-validation.ps1 @@ -0,0 +1,337 @@ +param( + [Parameter(Mandatory = $true)][string] $InputPath, # Full path to directory where NuGet packages to be checked are stored + [Parameter(Mandatory = $true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation + [Parameter(Mandatory = $true)][string] $DotnetSymbolVersion, # Version of dotnet symbol to use + [Parameter(Mandatory = $false)][switch] $CheckForWindowsPdbs, # If we should check for the existence of windows pdbs in addition to portable PDBs + [Parameter(Mandatory = $false)][switch] $ContinueOnError, # If we should keep checking symbols after an error + [Parameter(Mandatory = $false)][switch] $Clean, # Clean extracted symbols directory after checking symbols + [Parameter(Mandatory = $false)][string] $SymbolExclusionFile # Exclude the symbols in the file from publishing to symbol server +) + +. $PSScriptRoot\..\tools.ps1 +# Maximum number of jobs to run in parallel +$MaxParallelJobs = 16 + +# Max number of retries +$MaxRetry = 5 + +# Wait time between check for system load +$SecondsBetweenLoadChecks = 10 + +# Set error codes +Set-Variable -Name "ERROR_BADEXTRACT" -Option Constant -Value -1 +Set-Variable -Name "ERROR_FILEDOESNOTEXIST" -Option Constant -Value -2 + +$WindowsPdbVerificationParam = "" +if ($CheckForWindowsPdbs) { + $WindowsPdbVerificationParam = "--windows-pdbs" +} + +$ExclusionSet = New-Object System.Collections.Generic.HashSet[string]; + +if (!$InputPath -or !(Test-Path $InputPath)){ + Write-Host "No symbols to validate." + ExitWithExitCode 0 +} + +#Check if the path exists +if ($SymbolExclusionFile -and (Test-Path $SymbolExclusionFile)){ + [string[]]$Exclusions = Get-Content "$SymbolExclusionFile" + $Exclusions | foreach { if($_ -and $_.Trim()){$ExclusionSet.Add($_)} } +} +else{ + Write-Host "Symbol Exclusion file does not exists. No symbols to exclude." +} + +$CountMissingSymbols = { + param( + [string] $PackagePath, # Path to a NuGet package + [string] $WindowsPdbVerificationParam # If we should check for the existence of windows pdbs in addition to portable PDBs + ) + + Add-Type -AssemblyName System.IO.Compression.FileSystem + + Write-Host "Validating $PackagePath " + + # Ensure input file exist + if (!(Test-Path $PackagePath)) { + Write-PipelineTaskError "Input file does not exist: $PackagePath" + return [pscustomobject]@{ + result = $using:ERROR_FILEDOESNOTEXIST + packagePath = $PackagePath + } + } + + # Extensions for which we'll look for symbols + $RelevantExtensions = @('.dll', '.exe', '.so', '.dylib') + + # How many files are missing symbol information + $MissingSymbols = 0 + + $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) + $PackageGuid = New-Guid + $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageGuid + $SymbolsPath = Join-Path -Path $ExtractPath -ChildPath 'Symbols' + + try { + [System.IO.Compression.ZipFile]::ExtractToDirectory($PackagePath, $ExtractPath) + } + catch { + Write-Host "Something went wrong extracting $PackagePath" + Write-Host $_ + return [pscustomobject]@{ + result = $using:ERROR_BADEXTRACT + packagePath = $PackagePath + } + } + + Get-ChildItem -Recurse $ExtractPath | + Where-Object { $RelevantExtensions -contains $_.Extension } | + ForEach-Object { + $FileName = $_.FullName + if ($FileName -Match '\\ref\\') { + Write-Host "`t Ignoring reference assembly file " $FileName + return + } + + $FirstMatchingSymbolDescriptionOrDefault = { + param( + [string] $FullPath, # Full path to the module that has to be checked + [string] $TargetServerParam, # Parameter to pass to `Symbol Tool` indicating the server to lookup for symbols + [string] $WindowsPdbVerificationParam, # Parameter to pass to potential check for windows-pdbs. + [string] $SymbolsPath + ) + + $FileName = [System.IO.Path]::GetFileName($FullPath) + $Extension = [System.IO.Path]::GetExtension($FullPath) + + # Those below are potential symbol files that the `dotnet symbol` might + # return. Which one will be returned depend on the type of file we are + # checking and which type of file was uploaded. + + # The file itself is returned + $SymbolPath = $SymbolsPath + '\' + $FileName + + # PDB file for the module + $PdbPath = $SymbolPath.Replace($Extension, '.pdb') + + # PDB file for R2R module (created by crossgen) + $NGenPdb = $SymbolPath.Replace($Extension, '.ni.pdb') + + # DBG file for a .so library + $SODbg = $SymbolPath.Replace($Extension, '.so.dbg') + + # DWARF file for a .dylib + $DylibDwarf = $SymbolPath.Replace($Extension, '.dylib.dwarf') + + $dotnetSymbolExe = "$env:USERPROFILE\.dotnet\tools" + $dotnetSymbolExe = Resolve-Path "$dotnetSymbolExe\dotnet-symbol.exe" + + $totalRetries = 0 + + while ($totalRetries -lt $using:MaxRetry) { + + # Save the output and get diagnostic output + $output = & $dotnetSymbolExe --symbols --modules $WindowsPdbVerificationParam $TargetServerParam $FullPath -o $SymbolsPath --diagnostics | Out-String + + if ((Test-Path $PdbPath) -and (Test-path $SymbolPath)) { + return 'Module and PDB for Module' + } + elseif ((Test-Path $NGenPdb) -and (Test-Path $PdbPath) -and (Test-Path $SymbolPath)) { + return 'Dll, PDB and NGen PDB' + } + elseif ((Test-Path $SODbg) -and (Test-Path $SymbolPath)) { + return 'So and DBG for SO' + } + elseif ((Test-Path $DylibDwarf) -and (Test-Path $SymbolPath)) { + return 'Dylib and Dwarf for Dylib' + } + elseif (Test-Path $SymbolPath) { + return 'Module' + } + else + { + $totalRetries++ + } + } + + return $null + } + + $FileRelativePath = $FileName.Replace("$ExtractPath\", "") + if (($($using:ExclusionSet) -ne $null) -and ($($using:ExclusionSet).Contains($FileRelativePath) -or ($($using:ExclusionSet).Contains($FileRelativePath.Replace("\", "/"))))){ + Write-Host "Skipping $FileName from symbol validation" + } + + else { + $FileGuid = New-Guid + $ExpandedSymbolsPath = Join-Path -Path $SymbolsPath -ChildPath $FileGuid + + $SymbolsOnMSDL = & $FirstMatchingSymbolDescriptionOrDefault ` + -FullPath $FileName ` + -TargetServerParam '--microsoft-symbol-server' ` + -SymbolsPath "$ExpandedSymbolsPath-msdl" ` + -WindowsPdbVerificationParam $WindowsPdbVerificationParam + $SymbolsOnSymWeb = & $FirstMatchingSymbolDescriptionOrDefault ` + -FullPath $FileName ` + -TargetServerParam '--internal-server' ` + -SymbolsPath "$ExpandedSymbolsPath-symweb" ` + -WindowsPdbVerificationParam $WindowsPdbVerificationParam + + Write-Host -NoNewLine "`t Checking file " $FileName "... " + + if ($SymbolsOnMSDL -ne $null -and $SymbolsOnSymWeb -ne $null) { + Write-Host "Symbols found on MSDL ($SymbolsOnMSDL) and SymWeb ($SymbolsOnSymWeb)" + } + else { + $MissingSymbols++ + + if ($SymbolsOnMSDL -eq $null -and $SymbolsOnSymWeb -eq $null) { + Write-Host 'No symbols found on MSDL or SymWeb!' + } + else { + if ($SymbolsOnMSDL -eq $null) { + Write-Host 'No symbols found on MSDL!' + } + else { + Write-Host 'No symbols found on SymWeb!' + } + } + } + } + } + + if ($using:Clean) { + Remove-Item $ExtractPath -Recurse -Force + } + + Pop-Location + + return [pscustomobject]@{ + result = $MissingSymbols + packagePath = $PackagePath + } +} + +function CheckJobResult( + $result, + $packagePath, + [ref]$DupedSymbols, + [ref]$TotalFailures) { + if ($result -eq $ERROR_BADEXTRACT) { + Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "$packagePath has duplicated symbol files" + $DupedSymbols.Value++ + } + elseif ($result -eq $ERROR_FILEDOESNOTEXIST) { + Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "$packagePath does not exist" + $TotalFailures.Value++ + } + elseif ($result -gt '0') { + Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "Missing symbols for $result modules in the package $packagePath" + $TotalFailures.Value++ + } + else { + Write-Host "All symbols verified for package $packagePath" + } +} + +function CheckSymbolsAvailable { + if (Test-Path $ExtractPath) { + Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue + } + + $TotalPackages = 0 + $TotalFailures = 0 + $DupedSymbols = 0 + + Get-ChildItem "$InputPath\*.nupkg" | + ForEach-Object { + $FileName = $_.Name + $FullName = $_.FullName + + # These packages from Arcade-Services include some native libraries that + # our current symbol uploader can't handle. Below is a workaround until + # we get issue: https://github.com/dotnet/arcade/issues/2457 sorted. + if ($FileName -Match 'Microsoft\.DotNet\.Darc\.') { + Write-Host "Ignoring Arcade-services file: $FileName" + Write-Host + return + } + elseif ($FileName -Match 'Microsoft\.DotNet\.Maestro\.Tasks\.') { + Write-Host "Ignoring Arcade-services file: $FileName" + Write-Host + return + } + + $TotalPackages++ + + Start-Job -ScriptBlock $CountMissingSymbols -ArgumentList @($FullName,$WindowsPdbVerificationParam) | Out-Null + + $NumJobs = @(Get-Job -State 'Running').Count + + while ($NumJobs -ge $MaxParallelJobs) { + Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again." + sleep $SecondsBetweenLoadChecks + $NumJobs = @(Get-Job -State 'Running').Count + } + + foreach ($Job in @(Get-Job -State 'Completed')) { + $jobResult = Wait-Job -Id $Job.Id | Receive-Job + CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$DupedSymbols) ([ref]$TotalFailures) + Remove-Job -Id $Job.Id + } + Write-Host + } + + foreach ($Job in @(Get-Job)) { + $jobResult = Wait-Job -Id $Job.Id | Receive-Job + CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$DupedSymbols) ([ref]$TotalFailures) + } + + if ($TotalFailures -gt 0 -or $DupedSymbols -gt 0) { + if ($TotalFailures -gt 0) { + Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "Symbols missing for $TotalFailures/$TotalPackages packages" + } + + if ($DupedSymbols -gt 0) { + Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "$DupedSymbols/$TotalPackages packages had duplicated symbol files and could not be extracted" + } + + ExitWithExitCode 1 + } + else { + Write-Host "All symbols validated!" + } +} + +function InstallDotnetSymbol { + $dotnetSymbolPackageName = 'dotnet-symbol' + + $dotnetRoot = InitializeDotNetCli -install:$true + $dotnet = "$dotnetRoot\dotnet.exe" + $toolList = & "$dotnet" tool list --global + + if (($toolList -like "*$dotnetSymbolPackageName*") -and ($toolList -like "*$dotnetSymbolVersion*")) { + Write-Host "dotnet-symbol version $dotnetSymbolVersion is already installed." + } + else { + Write-Host "Installing dotnet-symbol version $dotnetSymbolVersion..." + Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' + & "$dotnet" tool install $dotnetSymbolPackageName --version $dotnetSymbolVersion --verbosity "minimal" --global + } +} + +try { + InstallDotnetSymbol + + foreach ($Job in @(Get-Job)) { + Remove-Job -Id $Job.Id + } + + CheckSymbolsAvailable +} +catch { + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Category 'CheckSymbols' -Message $_ + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/retain-build.ps1 b/src/arcade/eng/common/retain-build.ps1 new file mode 100644 index 00000000000..e7ba975adeb --- /dev/null +++ b/src/arcade/eng/common/retain-build.ps1 @@ -0,0 +1,45 @@ + +Param( +[Parameter(Mandatory=$true)][int] $buildId, +[Parameter(Mandatory=$true)][string] $azdoOrgUri, +[Parameter(Mandatory=$true)][string] $azdoProject, +[Parameter(Mandatory=$true)][string] $token +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 + +function Get-AzDOHeaders( + [string] $token) +{ + $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":${token}")) + $headers = @{"Authorization"="Basic $base64AuthInfo"} + return $headers +} + +function Update-BuildRetention( + [string] $azdoOrgUri, + [string] $azdoProject, + [int] $buildId, + [string] $token) +{ + $headers = Get-AzDOHeaders -token $token + $requestBody = "{ + `"keepForever`": `"true`" + }" + + $requestUri = "${azdoOrgUri}/${azdoProject}/_apis/build/builds/${buildId}?api-version=6.0" + write-Host "Attempting to retain build using the following URI: ${requestUri} ..." + + try { + Invoke-RestMethod -Uri $requestUri -Method Patch -Body $requestBody -Header $headers -contentType "application/json" + Write-Host "Updated retention settings for build ${buildId}." + } + catch { + Write-Error "Failed to update retention settings for build: $_.Exception.Response.StatusDescription" + exit 1 + } +} + +Update-BuildRetention -azdoOrgUri $azdoOrgUri -azdoProject $azdoProject -buildId $buildId -token $token +exit 0 diff --git a/src/arcade/eng/common/sdl/NuGet.config b/src/arcade/eng/common/sdl/NuGet.config new file mode 100644 index 00000000000..3849bdb3cf5 --- /dev/null +++ b/src/arcade/eng/common/sdl/NuGet.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/arcade/eng/common/sdl/configure-sdl-tool.ps1 b/src/arcade/eng/common/sdl/configure-sdl-tool.ps1 new file mode 100644 index 00000000000..27f5a4115fc --- /dev/null +++ b/src/arcade/eng/common/sdl/configure-sdl-tool.ps1 @@ -0,0 +1,130 @@ +Param( + [string] $GuardianCliLocation, + [string] $WorkingDirectory, + [string] $TargetDirectory, + [string] $GdnFolder, + # The list of Guardian tools to configure. For each object in the array: + # - If the item is a [hashtable], it must contain these entries: + # - Name = The tool name as Guardian knows it. + # - Scenario = (Optional) Scenario-specific name for this configuration entry. It must be unique + # among all tool entries with the same Name. + # - Args = (Optional) Array of Guardian tool configuration args, like '@("Target > C:\temp")' + # - If the item is a [string] $v, it is treated as '@{ Name="$v" }' + [object[]] $ToolsList, + [string] $GuardianLoggerLevel='Standard', + # Optional: Additional params to add to any tool using CredScan. + [string[]] $CrScanAdditionalRunConfigParams, + # Optional: Additional params to add to any tool using PoliCheck. + [string[]] $PoliCheckAdditionalRunConfigParams, + # Optional: Additional params to add to any tool using CodeQL/Semmle. + [string[]] $CodeQLAdditionalRunConfigParams, + # Optional: Additional params to add to any tool using Binskim. + [string[]] $BinskimAdditionalRunConfigParams +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 +$disableConfigureToolsetImport = $true +$global:LASTEXITCODE = 0 + +try { + # `tools.ps1` checks $ci to perform some actions. Since the SDL + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + . $PSScriptRoot\..\tools.ps1 + + # Normalize tools list: all in [hashtable] form with defined values for each key. + $ToolsList = $ToolsList | + ForEach-Object { + if ($_ -is [string]) { + $_ = @{ Name = $_ } + } + + if (-not ($_['Scenario'])) { $_.Scenario = "" } + if (-not ($_['Args'])) { $_.Args = @() } + $_ + } + + Write-Host "List of tools to configure:" + $ToolsList | ForEach-Object { $_ | Out-String | Write-Host } + + # We store config files in the r directory of .gdn + $gdnConfigPath = Join-Path $GdnFolder 'r' + $ValidPath = Test-Path $GuardianCliLocation + + if ($ValidPath -eq $False) + { + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Invalid Guardian CLI Location." + ExitWithExitCode 1 + } + + foreach ($tool in $ToolsList) { + # Put together the name and scenario to make a unique key. + $toolConfigName = $tool.Name + if ($tool.Scenario) { + $toolConfigName += "_" + $tool.Scenario + } + + Write-Host "=== Configuring $toolConfigName..." + + $gdnConfigFile = Join-Path $gdnConfigPath "$toolConfigName-configure.gdnconfig" + + # For some tools, add default and automatic args. + switch -Exact ($tool.Name) { + 'credscan' { + if ($targetDirectory) { + $tool.Args += "`"TargetDirectory < $TargetDirectory`"" + } + $tool.Args += "`"OutputType < pre`"" + $tool.Args += $CrScanAdditionalRunConfigParams + } + 'policheck' { + if ($targetDirectory) { + $tool.Args += "`"Target < $TargetDirectory`"" + } + $tool.Args += $PoliCheckAdditionalRunConfigParams + } + {$_ -in 'semmle', 'codeql'} { + if ($targetDirectory) { + $tool.Args += "`"SourceCodeDirectory < $TargetDirectory`"" + } + $tool.Args += $CodeQLAdditionalRunConfigParams + } + 'binskim' { + if ($targetDirectory) { + # Binskim crashes due to specific PDBs. GitHub issue: https://github.com/microsoft/binskim/issues/924. + # We are excluding all `_.pdb` files from the scan. + $tool.Args += "`"Target < $TargetDirectory\**;-:file|$TargetDirectory\**\_.pdb`"" + } + $tool.Args += $BinskimAdditionalRunConfigParams + } + } + + # Create variable pointing to the args array directly so we can use splat syntax later. + $toolArgs = $tool.Args + + # Configure the tool. If args array is provided or the current tool has some default arguments + # defined, add "--args" and splat each element on the end. Arg format is "{Arg id} < {Value}", + # one per parameter. Doc page for "guardian configure": + # https://dev.azure.com/securitytools/SecurityIntegration/_wiki/wikis/Guardian/1395/configure + Exec-BlockVerbosely { + & $GuardianCliLocation configure ` + --working-directory $WorkingDirectory ` + --tool $tool.Name ` + --output-path $gdnConfigFile ` + --logger-level $GuardianLoggerLevel ` + --noninteractive ` + --force ` + $(if ($toolArgs) { "--args" }) @toolArgs + Exit-IfNZEC "Sdl" + } + + Write-Host "Created '$toolConfigName' configuration file: $gdnConfigFile" + } +} +catch { + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/sdl/execute-all-sdl-tools.ps1 b/src/arcade/eng/common/sdl/execute-all-sdl-tools.ps1 new file mode 100644 index 00000000000..4715d75e974 --- /dev/null +++ b/src/arcade/eng/common/sdl/execute-all-sdl-tools.ps1 @@ -0,0 +1,167 @@ +Param( + [string] $GuardianPackageName, # Required: the name of guardian CLI package (not needed if GuardianCliLocation is specified) + [string] $NugetPackageDirectory, # Required: directory where NuGet packages are installed (not needed if GuardianCliLocation is specified) + [string] $GuardianCliLocation, # Optional: Direct location of Guardian CLI executable if GuardianPackageName & NugetPackageDirectory are not specified + [string] $Repository=$env:BUILD_REPOSITORY_NAME, # Required: the name of the repository (e.g. dotnet/arcade) + [string] $BranchName=$env:BUILD_SOURCEBRANCH, # Optional: name of branch or version of gdn settings; defaults to master + [string] $SourceDirectory=$env:BUILD_SOURCESDIRECTORY, # Required: the directory where source files are located + [string] $ArtifactsDirectory = (Join-Path $env:BUILD_ARTIFACTSTAGINGDIRECTORY ('artifacts')), # Required: the directory where build artifacts are located + [string] $AzureDevOpsAccessToken, # Required: access token for dnceng; should be provided via KeyVault + + # Optional: list of SDL tools to run on source code. See 'configure-sdl-tool.ps1' for tools list + # format. + [object[]] $SourceToolsList, + # Optional: list of SDL tools to run on built artifacts. See 'configure-sdl-tool.ps1' for tools + # list format. + [object[]] $ArtifactToolsList, + # Optional: list of SDL tools to run without automatically specifying a target directory. See + # 'configure-sdl-tool.ps1' for tools list format. + [object[]] $CustomToolsList, + + [bool] $TsaPublish=$False, # Optional: true will publish results to TSA; only set to true after onboarding to TSA; TSA is the automated framework used to upload test results as bugs. + [string] $TsaBranchName=$env:BUILD_SOURCEBRANCH, # Optional: required for TSA publish; defaults to $(Build.SourceBranchName); TSA is the automated framework used to upload test results as bugs. + [string] $TsaRepositoryName=$env:BUILD_REPOSITORY_NAME, # Optional: TSA repository name; will be generated automatically if not submitted; TSA is the automated framework used to upload test results as bugs. + [string] $BuildNumber=$env:BUILD_BUILDNUMBER, # Optional: required for TSA publish; defaults to $(Build.BuildNumber) + [bool] $UpdateBaseline=$False, # Optional: if true, will update the baseline in the repository; should only be run after fixing any issues which need to be fixed + [bool] $TsaOnboard=$False, # Optional: if true, will onboard the repository to TSA; should only be run once; TSA is the automated framework used to upload test results as bugs. + [string] $TsaInstanceUrl, # Optional: only needed if TsaOnboard or TsaPublish is true; the instance-url registered with TSA; TSA is the automated framework used to upload test results as bugs. + [string] $TsaCodebaseName, # Optional: only needed if TsaOnboard or TsaPublish is true; the name of the codebase registered with TSA; TSA is the automated framework used to upload test results as bugs. + [string] $TsaProjectName, # Optional: only needed if TsaOnboard or TsaPublish is true; the name of the project registered with TSA; TSA is the automated framework used to upload test results as bugs. + [string] $TsaNotificationEmail, # Optional: only needed if TsaOnboard is true; the email(s) which will receive notifications of TSA bug filings (e.g. alias@microsoft.com); TSA is the automated framework used to upload test results as bugs. + [string] $TsaCodebaseAdmin, # Optional: only needed if TsaOnboard is true; the aliases which are admins of the TSA codebase (e.g. DOMAIN\alias); TSA is the automated framework used to upload test results as bugs. + [string] $TsaBugAreaPath, # Optional: only needed if TsaOnboard is true; the area path where TSA will file bugs in AzDO; TSA is the automated framework used to upload test results as bugs. + [string] $TsaIterationPath, # Optional: only needed if TsaOnboard is true; the iteration path where TSA will file bugs in AzDO; TSA is the automated framework used to upload test results as bugs. + [string] $GuardianLoggerLevel='Standard', # Optional: the logger level for the Guardian CLI; options are Trace, Verbose, Standard, Warning, and Error + [string[]] $CrScanAdditionalRunConfigParams, # Optional: Additional Params to custom build a CredScan run config in the format @("xyz:abc","sdf:1") + [string[]] $PoliCheckAdditionalRunConfigParams, # Optional: Additional Params to custom build a Policheck run config in the format @("xyz:abc","sdf:1") + [string[]] $CodeQLAdditionalRunConfigParams, # Optional: Additional Params to custom build a Semmle/CodeQL run config in the format @("xyz < abc","sdf < 1") + [string[]] $BinskimAdditionalRunConfigParams, # Optional: Additional Params to custom build a Binskim run config in the format @("xyz < abc","sdf < 1") + [bool] $BreakOnFailure=$False # Optional: Fail the build if there were errors during the run +) + +try { + $ErrorActionPreference = 'Stop' + Set-StrictMode -Version 2.0 + $disableConfigureToolsetImport = $true + $global:LASTEXITCODE = 0 + + # `tools.ps1` checks $ci to perform some actions. Since the SDL + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + . $PSScriptRoot\..\tools.ps1 + + #Replace repo names to the format of org/repo + if (!($Repository.contains('/'))) { + $RepoName = $Repository -replace '(.*?)-(.*)', '$1/$2'; + } + else{ + $RepoName = $Repository; + } + + if ($GuardianPackageName) { + $guardianCliLocation = Join-Path $NugetPackageDirectory (Join-Path $GuardianPackageName (Join-Path 'tools' 'guardian.cmd')) + } else { + $guardianCliLocation = $GuardianCliLocation + } + + $workingDirectory = (Split-Path $SourceDirectory -Parent) + $ValidPath = Test-Path $guardianCliLocation + + if ($ValidPath -eq $False) + { + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message 'Invalid Guardian CLI Location.' + ExitWithExitCode 1 + } + + Exec-BlockVerbosely { + & $(Join-Path $PSScriptRoot 'init-sdl.ps1') -GuardianCliLocation $guardianCliLocation -Repository $RepoName -BranchName $BranchName -WorkingDirectory $workingDirectory -AzureDevOpsAccessToken $AzureDevOpsAccessToken -GuardianLoggerLevel $GuardianLoggerLevel + } + $gdnFolder = Join-Path $workingDirectory '.gdn' + + if ($TsaOnboard) { + if ($TsaCodebaseName -and $TsaNotificationEmail -and $TsaCodebaseAdmin -and $TsaBugAreaPath) { + Exec-BlockVerbosely { + & $guardianCliLocation tsa-onboard --codebase-name "$TsaCodebaseName" --notification-alias "$TsaNotificationEmail" --codebase-admin "$TsaCodebaseAdmin" --instance-url "$TsaInstanceUrl" --project-name "$TsaProjectName" --area-path "$TsaBugAreaPath" --iteration-path "$TsaIterationPath" --working-directory $workingDirectory --logger-level $GuardianLoggerLevel + } + if ($LASTEXITCODE -ne 0) { + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Guardian tsa-onboard failed with exit code $LASTEXITCODE." + ExitWithExitCode $LASTEXITCODE + } + } else { + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message 'Could not onboard to TSA -- not all required values ($TsaCodebaseName, $TsaNotificationEmail, $TsaCodebaseAdmin, $TsaBugAreaPath) were specified.' + ExitWithExitCode 1 + } + } + + # Configure a list of tools with a default target directory. Populates the ".gdn/r" directory. + function Configure-ToolsList([object[]] $tools, [string] $targetDirectory) { + if ($tools -and $tools.Count -gt 0) { + Exec-BlockVerbosely { + & $(Join-Path $PSScriptRoot 'configure-sdl-tool.ps1') ` + -GuardianCliLocation $guardianCliLocation ` + -WorkingDirectory $workingDirectory ` + -TargetDirectory $targetDirectory ` + -GdnFolder $gdnFolder ` + -ToolsList $tools ` + -AzureDevOpsAccessToken $AzureDevOpsAccessToken ` + -GuardianLoggerLevel $GuardianLoggerLevel ` + -CrScanAdditionalRunConfigParams $CrScanAdditionalRunConfigParams ` + -PoliCheckAdditionalRunConfigParams $PoliCheckAdditionalRunConfigParams ` + -CodeQLAdditionalRunConfigParams $CodeQLAdditionalRunConfigParams ` + -BinskimAdditionalRunConfigParams $BinskimAdditionalRunConfigParams + if ($BreakOnFailure) { + Exit-IfNZEC "Sdl" + } + } + } + } + + # Configure Artifact and Source tools with default Target directories. + Configure-ToolsList $ArtifactToolsList $ArtifactsDirectory + Configure-ToolsList $SourceToolsList $SourceDirectory + # Configure custom tools with no default Target directory. + Configure-ToolsList $CustomToolsList $null + + # At this point, all tools are configured in the ".gdn" directory. Run them all in a single call. + # (If we used "run" multiple times, each run would overwrite data from earlier runs.) + Exec-BlockVerbosely { + & $(Join-Path $PSScriptRoot 'run-sdl.ps1') ` + -GuardianCliLocation $guardianCliLocation ` + -WorkingDirectory $SourceDirectory ` + -UpdateBaseline $UpdateBaseline ` + -GdnFolder $gdnFolder + } + + if ($TsaPublish) { + if ($TsaBranchName -and $BuildNumber) { + if (-not $TsaRepositoryName) { + $TsaRepositoryName = "$($Repository)-$($BranchName)" + } + Exec-BlockVerbosely { + & $guardianCliLocation tsa-publish --all-tools --repository-name "$TsaRepositoryName" --branch-name "$TsaBranchName" --build-number "$BuildNumber" --onboard $True --codebase-name "$TsaCodebaseName" --notification-alias "$TsaNotificationEmail" --codebase-admin "$TsaCodebaseAdmin" --instance-url "$TsaInstanceUrl" --project-name "$TsaProjectName" --area-path "$TsaBugAreaPath" --iteration-path "$TsaIterationPath" --working-directory $workingDirectory --logger-level $GuardianLoggerLevel + } + if ($LASTEXITCODE -ne 0) { + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Guardian tsa-publish failed with exit code $LASTEXITCODE." + ExitWithExitCode $LASTEXITCODE + } + } else { + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message 'Could not publish to TSA -- not all required values ($TsaBranchName, $BuildNumber) were specified.' + ExitWithExitCode 1 + } + } + + if ($BreakOnFailure) { + Write-Host "Failing the build in case of breaking results..." + Exec-BlockVerbosely { + & $guardianCliLocation break --working-directory $workingDirectory --logger-level $GuardianLoggerLevel + } + } else { + Write-Host "Letting the build pass even if there were breaking results..." + } +} +catch { + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ + exit 1 +} diff --git a/src/arcade/eng/common/sdl/extract-artifact-archives.ps1 b/src/arcade/eng/common/sdl/extract-artifact-archives.ps1 new file mode 100644 index 00000000000..68da4fbf257 --- /dev/null +++ b/src/arcade/eng/common/sdl/extract-artifact-archives.ps1 @@ -0,0 +1,63 @@ +# This script looks for each archive file in a directory and extracts it into the target directory. +# For example, the file "$InputPath/bin.tar.gz" extracts to "$ExtractPath/bin.tar.gz.extracted/**". +# Uses the "tar" utility added to Windows 10 / Windows 2019 that supports tar.gz and zip. +param( + # Full path to directory where archives are stored. + [Parameter(Mandatory=$true)][string] $InputPath, + # Full path to directory to extract archives into. May be the same as $InputPath. + [Parameter(Mandatory=$true)][string] $ExtractPath +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 + +$disableConfigureToolsetImport = $true + +try { + # `tools.ps1` checks $ci to perform some actions. Since the SDL + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + . $PSScriptRoot\..\tools.ps1 + + Measure-Command { + $jobs = @() + + # Find archive files for non-Windows and Windows builds. + $archiveFiles = @( + Get-ChildItem (Join-Path $InputPath "*.tar.gz") + Get-ChildItem (Join-Path $InputPath "*.zip") + ) + + foreach ($targzFile in $archiveFiles) { + $jobs += Start-Job -ScriptBlock { + $file = $using:targzFile + $fileName = [System.IO.Path]::GetFileName($file) + $extractDir = Join-Path $using:ExtractPath "$fileName.extracted" + + New-Item $extractDir -ItemType Directory -Force | Out-Null + + Write-Host "Extracting '$file' to '$extractDir'..." + + # Pipe errors to stdout to prevent PowerShell detecting them and quitting the job early. + # This type of quit skips the catch, so we wouldn't be able to tell which file triggered the + # error. Save output so it can be stored in the exception string along with context. + $output = tar -xf $file -C $extractDir 2>&1 + # Handle NZEC manually rather than using Exit-IfNZEC: we are in a background job, so we + # don't have access to the outer scope. + if ($LASTEXITCODE -ne 0) { + throw "Error extracting '$file': non-zero exit code ($LASTEXITCODE). Output: '$output'" + } + + Write-Host "Extracted to $extractDir" + } + } + + Receive-Job $jobs -Wait + } +} +catch { + Write-Host $_ + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/sdl/extract-artifact-packages.ps1 b/src/arcade/eng/common/sdl/extract-artifact-packages.ps1 new file mode 100644 index 00000000000..f031ed5b25e --- /dev/null +++ b/src/arcade/eng/common/sdl/extract-artifact-packages.ps1 @@ -0,0 +1,82 @@ +param( + [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where artifact packages are stored + [Parameter(Mandatory=$true)][string] $ExtractPath # Full path to directory where the packages will be extracted +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 + +$disableConfigureToolsetImport = $true + +function ExtractArtifacts { + if (!(Test-Path $InputPath)) { + Write-Host "Input Path does not exist: $InputPath" + ExitWithExitCode 0 + } + $Jobs = @() + Get-ChildItem "$InputPath\*.nupkg" | + ForEach-Object { + $Jobs += Start-Job -ScriptBlock $ExtractPackage -ArgumentList $_.FullName + } + + foreach ($Job in $Jobs) { + Wait-Job -Id $Job.Id | Receive-Job + } +} + +try { + # `tools.ps1` checks $ci to perform some actions. Since the SDL + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + . $PSScriptRoot\..\tools.ps1 + + $ExtractPackage = { + param( + [string] $PackagePath # Full path to a NuGet package + ) + + if (!(Test-Path $PackagePath)) { + Write-PipelineTelemetryError -Category 'Build' -Message "Input file does not exist: $PackagePath" + ExitWithExitCode 1 + } + + $RelevantExtensions = @('.dll', '.exe', '.pdb') + Write-Host -NoNewLine 'Extracting ' ([System.IO.Path]::GetFileName($PackagePath)) '...' + + $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) + $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId + + Add-Type -AssemblyName System.IO.Compression.FileSystem + + [System.IO.Directory]::CreateDirectory($ExtractPath); + + try { + $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath) + + $zip.Entries | + Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} | + ForEach-Object { + $TargetPath = Join-Path -Path $ExtractPath -ChildPath (Split-Path -Path $_.FullName) + [System.IO.Directory]::CreateDirectory($TargetPath); + + $TargetFile = Join-Path -Path $ExtractPath -ChildPath $_.FullName + [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile) + } + } + catch { + Write-Host $_ + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ + ExitWithExitCode 1 + } + finally { + $zip.Dispose() + } + } + Measure-Command { ExtractArtifacts } +} +catch { + Write-Host $_ + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/sdl/init-sdl.ps1 b/src/arcade/eng/common/sdl/init-sdl.ps1 new file mode 100644 index 00000000000..3ac1d92b370 --- /dev/null +++ b/src/arcade/eng/common/sdl/init-sdl.ps1 @@ -0,0 +1,55 @@ +Param( + [string] $GuardianCliLocation, + [string] $Repository, + [string] $BranchName='master', + [string] $WorkingDirectory, + [string] $AzureDevOpsAccessToken, + [string] $GuardianLoggerLevel='Standard' +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 +$disableConfigureToolsetImport = $true +$global:LASTEXITCODE = 0 + +# `tools.ps1` checks $ci to perform some actions. Since the SDL +# scripts don't necessarily execute in the same agent that run the +# build.ps1/sh script this variable isn't automatically set. +$ci = $true +. $PSScriptRoot\..\tools.ps1 + +# Don't display the console progress UI - it's a huge perf hit +$ProgressPreference = 'SilentlyContinue' + +# Construct basic auth from AzDO access token; construct URI to the repository's gdn folder stored in that repository; construct location of zip file +$encodedPat = [Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$AzureDevOpsAccessToken")) +$escapedRepository = [Uri]::EscapeDataString("/$Repository/$BranchName/.gdn") +$uri = "https://dev.azure.com/dnceng/internal/_apis/git/repositories/sdl-tool-cfg/Items?path=$escapedRepository&versionDescriptor[versionOptions]=0&`$format=zip&api-version=5.0" +$zipFile = "$WorkingDirectory/gdn.zip" + +Add-Type -AssemblyName System.IO.Compression.FileSystem +$gdnFolder = (Join-Path $WorkingDirectory '.gdn') + +try { + # if the folder does not exist, we'll do a guardian init and push it to the remote repository + Write-Host 'Initializing Guardian...' + Write-Host "$GuardianCliLocation init --working-directory $WorkingDirectory --logger-level $GuardianLoggerLevel" + & $GuardianCliLocation init --working-directory $WorkingDirectory --logger-level $GuardianLoggerLevel + if ($LASTEXITCODE -ne 0) { + Write-PipelineTelemetryError -Force -Category 'Build' -Message "Guardian init failed with exit code $LASTEXITCODE." + ExitWithExitCode $LASTEXITCODE + } + # We create the mainbaseline so it can be edited later + Write-Host "$GuardianCliLocation baseline --working-directory $WorkingDirectory --name mainbaseline" + & $GuardianCliLocation baseline --working-directory $WorkingDirectory --name mainbaseline + if ($LASTEXITCODE -ne 0) { + Write-PipelineTelemetryError -Force -Category 'Build' -Message "Guardian baseline failed with exit code $LASTEXITCODE." + ExitWithExitCode $LASTEXITCODE + } + ExitWithExitCode 0 +} +catch { + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/sdl/run-sdl.ps1 b/src/arcade/eng/common/sdl/run-sdl.ps1 new file mode 100644 index 00000000000..2eac8c78f10 --- /dev/null +++ b/src/arcade/eng/common/sdl/run-sdl.ps1 @@ -0,0 +1,49 @@ +Param( + [string] $GuardianCliLocation, + [string] $WorkingDirectory, + [string] $GdnFolder, + [string] $UpdateBaseline, + [string] $GuardianLoggerLevel='Standard' +) + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 +$disableConfigureToolsetImport = $true +$global:LASTEXITCODE = 0 + +try { + # `tools.ps1` checks $ci to perform some actions. Since the SDL + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + . $PSScriptRoot\..\tools.ps1 + + # We store config files in the r directory of .gdn + $gdnConfigPath = Join-Path $GdnFolder 'r' + $ValidPath = Test-Path $GuardianCliLocation + + if ($ValidPath -eq $False) + { + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Invalid Guardian CLI Location." + ExitWithExitCode 1 + } + + $gdnConfigFiles = Get-ChildItem $gdnConfigPath -Recurse -Include '*.gdnconfig' + Write-Host "Discovered Guardian config files:" + $gdnConfigFiles | Out-String | Write-Host + + Exec-BlockVerbosely { + & $GuardianCliLocation run ` + --working-directory $WorkingDirectory ` + --baseline mainbaseline ` + --update-baseline $UpdateBaseline ` + --logger-level $GuardianLoggerLevel ` + --config @gdnConfigFiles + Exit-IfNZEC "Sdl" + } +} +catch { + Write-Host $_.ScriptStackTrace + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/sdl/sdl.ps1 b/src/arcade/eng/common/sdl/sdl.ps1 new file mode 100644 index 00000000000..648c5068d7d --- /dev/null +++ b/src/arcade/eng/common/sdl/sdl.ps1 @@ -0,0 +1,38 @@ + +function Install-Gdn { + param( + [Parameter(Mandatory=$true)] + [string]$Path, + + # If omitted, install the latest version of Guardian, otherwise install that specific version. + [string]$Version + ) + + $ErrorActionPreference = 'Stop' + Set-StrictMode -Version 2.0 + $disableConfigureToolsetImport = $true + $global:LASTEXITCODE = 0 + + # `tools.ps1` checks $ci to perform some actions. Since the SDL + # scripts don't necessarily execute in the same agent that run the + # build.ps1/sh script this variable isn't automatically set. + $ci = $true + . $PSScriptRoot\..\tools.ps1 + + $argumentList = @("install", "Microsoft.Guardian.Cli", "-Source https://securitytools.pkgs.visualstudio.com/_packaging/Guardian/nuget/v3/index.json", "-OutputDirectory $Path", "-NonInteractive", "-NoCache") + + if ($Version) { + $argumentList += "-Version $Version" + } + + Start-Process nuget -Verbose -ArgumentList $argumentList -NoNewWindow -Wait + + $gdnCliPath = Get-ChildItem -Filter guardian.cmd -Recurse -Path $Path + + if (!$gdnCliPath) + { + Write-PipelineTelemetryError -Category 'Sdl' -Message 'Failure installing Guardian' + } + + return $gdnCliPath.FullName +} \ No newline at end of file diff --git a/src/arcade/eng/common/sdl/trim-assets-version.ps1 b/src/arcade/eng/common/sdl/trim-assets-version.ps1 new file mode 100644 index 00000000000..0daa2a9e946 --- /dev/null +++ b/src/arcade/eng/common/sdl/trim-assets-version.ps1 @@ -0,0 +1,75 @@ +<# +.SYNOPSIS +Install and run the 'Microsoft.DotNet.VersionTools.Cli' tool with the 'trim-artifacts-version' command to trim the version from the NuGet assets file name. + +.PARAMETER InputPath +Full path to directory where artifact packages are stored + +.PARAMETER Recursive +Search for NuGet packages recursively + +#> + +Param( + [string] $InputPath, + [bool] $Recursive = $true +) + +$CliToolName = "Microsoft.DotNet.VersionTools.Cli" + +function Install-VersionTools-Cli { + param( + [Parameter(Mandatory=$true)][string]$Version + ) + + Write-Host "Installing the package '$CliToolName' with a version of '$version' ..." + $feed = "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" + + $argumentList = @("tool", "install", "--local", "$CliToolName", "--add-source $feed", "--no-cache", "--version $Version", "--create-manifest-if-needed") + Start-Process "$dotnet" -Verbose -ArgumentList $argumentList -NoNewWindow -Wait +} + +# ------------------------------------------------------------------- + +if (!(Test-Path $InputPath)) { + Write-Host "Input Path '$InputPath' does not exist" + ExitWithExitCode 1 +} + +$ErrorActionPreference = 'Stop' +Set-StrictMode -Version 2.0 + +$disableConfigureToolsetImport = $true +$global:LASTEXITCODE = 0 + +# `tools.ps1` checks $ci to perform some actions. Since the SDL +# scripts don't necessarily execute in the same agent that run the +# build.ps1/sh script this variable isn't automatically set. +$ci = $true +. $PSScriptRoot\..\tools.ps1 + +try { + $dotnetRoot = InitializeDotNetCli -install:$true + $dotnet = "$dotnetRoot\dotnet.exe" + + $toolsetVersion = Read-ArcadeSdkVersion + Install-VersionTools-Cli -Version $toolsetVersion + + $cliToolFound = (& "$dotnet" tool list --local | Where-Object {$_.Split(' ')[0] -eq $CliToolName}) + if ($null -eq $cliToolFound) { + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "The '$CliToolName' tool is not installed." + ExitWithExitCode 1 + } + + Exec-BlockVerbosely { + & "$dotnet" $CliToolName trim-assets-version ` + --assets-path $InputPath ` + --recursive $Recursive + Exit-IfNZEC "Sdl" + } +} +catch { + Write-Host $_ + Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ + ExitWithExitCode 1 +} diff --git a/src/arcade/eng/common/template-guidance.md b/src/arcade/eng/common/template-guidance.md new file mode 100644 index 00000000000..98bbc1ded0b --- /dev/null +++ b/src/arcade/eng/common/template-guidance.md @@ -0,0 +1,133 @@ +# Overview + +Arcade provides templates for public (`/templates`) and 1ES pipeline templates (`/templates-official`) scenarios. Pipelines which are required to be managed by 1ES pipeline templates should reference `/templates-offical`, all other pipelines may reference `/templates`. + +## How to use + +Basic guidance is: + +- 1ES Pipeline Template or 1ES Microbuild template runs should reference `eng/common/templates-official`. Any internal production-graded pipeline should use these templates. + +- All other runs should reference `eng/common/templates`. + +See [azure-pipelines.yml](../../azure-pipelines.yml) (templates-official example) or [azure-pipelines-pr.yml](../../azure-pipelines-pr.yml) (templates example) for examples. + +#### The `templateIs1ESManaged` parameter + +The `templateIs1ESManaged` is available on most templates and affects which of the variants is used for nested templates. See [Development Notes](#development-notes) below for more information on the `templateIs1ESManaged1 parameter. + +- For templates under `job/`, `jobs/`, `steps`, or `post-build/`, this parameter must be explicitly set. + +## Multiple outputs + +1ES pipeline templates impose a policy where every publish artifact execution results in additional security scans being injected into your pipeline. When using `templates-official/jobs/jobs.yml`, Arcade reduces the number of additional security injections by gathering all publishing outputs into the [Build.ArtifactStagingDirectory](https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#build-variables-devops-services), and utilizing the [outputParentDirectory](https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/1es-pipeline-templates/features/outputs#multiple-outputs) feature of 1ES pipeline templates. When implementing your pipeline, if you ensure publish artifacts are located in the `$(Build.ArtifactStagingDirectory)`, and utilize the 1ES provided template context, then you can reduce the number of security scans for your pipeline. + +Example: +``` yaml +# azure-pipelines.yml +extends: + template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate + parameters: + stages: + - stage: build + jobs: + - template: /eng/common/templates-official/jobs/jobs.yml@self + parameters: + # 1ES makes use of outputs to reduce security task injection overhead + templateContext: + outputs: + - output: pipelineArtifact + displayName: 'Publish logs from source' + continueOnError: true + condition: always() + targetPath: $(Build.ArtifactStagingDirectory)/artifacts/log + artifactName: Logs + jobs: + - job: Windows + steps: + - script: echo "friendly neighborhood" > artifacts/marvel/spiderman.txt + # copy build outputs to artifact staging directory for publishing + - task: CopyFiles@2 + displayName: Gather build output + inputs: + SourceFolder: '$(Build.SourcesDirectory)/artifacts/marvel' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/marvel' +``` + +Note: Multiple outputs are ONLY applicable to 1ES PT publishing (only usable when referencing `templates-official`). + +## Development notes + +**Folder / file structure** + +``` text +eng\common\ + [templates || templates-official]\ + job\ + job.yml (shim + artifact publishing logic) + onelocbuild.yml (shim) + publish-build-assets.yml (shim) + source-build.yml (shim) + source-index-stage1.yml (shim) + jobs\ + codeql-build.yml (shim) + jobs.yml (shim) + source-build.yml (shim) + post-build\ + post-build.yml (shim) + common-variabls.yml (shim) + setup-maestro-vars.yml (shim) + steps\ + publish-build-artifacts.yml (logic) + publish-pipeline-artifacts.yml (logic) + component-governance.yml (shim) + generate-sbom.yml (shim) + publish-logs.yml (shim) + retain-build.yml (shim) + send-to-helix.yml (shim) + source-build.yml (shim) + variables\ + pool-providers.yml (logic + redirect) # templates/variables/pool-providers.yml will redirect to templates-official/variables/pool-providers.yml if you are running in the internal project + sdl-variables.yml (logic) + core-templates\ + job\ + job.yml (logic) + onelocbuild.yml (logic) + publish-build-assets.yml (logic) + source-build.yml (logic) + source-index-stage1.yml (logic) + jobs\ + codeql-build.yml (logic) + jobs.yml (logic) + source-build.yml (logic) + post-build\ + common-variabls.yml (logic) + post-build.yml (logic) + setup-maestro-vars.yml (logic) + steps\ + component-governance.yml (logic) + generate-sbom.yml (logic) + publish-build-artifacts.yml (redirect) + publish-logs.yml (logic) + publish-pipeline-artifacts.yml (redirect) + retain-build.yml (logic) + send-to-helix.yml (logic) + source-build.yml (logic) + variables\ + pool-providers.yml (redirect) +``` + +In the table above, a file is designated as "shim", "logic", or "redirect". + +- shim - represents a yaml file which is an intermediate step between pipeline logic and .Net Core Engineering's templates (`core-templates`) and defines the `is1ESPipeline` parameter value. + +- logic - represents actual base template logic. + +- redirect- represents a file in `core-templates` which redirects to the "logic" file in either `templates` or `templates-official`. + +Logic for Arcade's templates live **primarily** in the `core-templates` folder. The exceptions to the location of the logic files are around artifact publishing, which is handled differently between 1es pipeline templates and standard templates. `templates` and `templates-official` provide shim entry points which redirect to `core-templates` while also defining the `is1ESPipeline` parameter. If a shim is referenced in `templates`, then `is1ESPipeline` is set to `false`. If a shim is referenced in `templates-official`, then `is1ESPipeline` is set to `true`. + +Within `templates` and `templates-official`, the templates at the "stages", and "jobs" / "job" level have been replaced with shims. Templates at the "steps" and "variables" level are typically too granular to be replaced with shims and instead persist logic which is directly applicable to either scenario. + +Within `core-templates`, there are a handful of places where logic is dependent on which shim entry point was used. In those places, we redirect back to the respective logic file in `templates` or `templates-official`. diff --git a/src/arcade/eng/common/templates-official/job/onelocbuild.yml b/src/arcade/eng/common/templates-official/job/onelocbuild.yml new file mode 100644 index 00000000000..0f0c514b912 --- /dev/null +++ b/src/arcade/eng/common/templates-official/job/onelocbuild.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/job/onelocbuild.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/job/publish-build-assets.yml b/src/arcade/eng/common/templates-official/job/publish-build-assets.yml new file mode 100644 index 00000000000..d667a70e8de --- /dev/null +++ b/src/arcade/eng/common/templates-official/job/publish-build-assets.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/job/publish-build-assets.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/job/source-build.yml b/src/arcade/eng/common/templates-official/job/source-build.yml new file mode 100644 index 00000000000..1a480034b67 --- /dev/null +++ b/src/arcade/eng/common/templates-official/job/source-build.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/job/source-index-stage1.yml b/src/arcade/eng/common/templates-official/job/source-index-stage1.yml new file mode 100644 index 00000000000..6d5ead316f9 --- /dev/null +++ b/src/arcade/eng/common/templates-official/job/source-index-stage1.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/job/source-index-stage1.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/jobs/codeql-build.yml b/src/arcade/eng/common/templates-official/jobs/codeql-build.yml new file mode 100644 index 00000000000..a726322ecfe --- /dev/null +++ b/src/arcade/eng/common/templates-official/jobs/codeql-build.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/jobs/codeql-build.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/jobs/jobs.yml b/src/arcade/eng/common/templates-official/jobs/jobs.yml new file mode 100644 index 00000000000..007deddaea0 --- /dev/null +++ b/src/arcade/eng/common/templates-official/jobs/jobs.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/jobs/jobs.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/jobs/source-build.yml b/src/arcade/eng/common/templates-official/jobs/source-build.yml new file mode 100644 index 00000000000..483e7b611f3 --- /dev/null +++ b/src/arcade/eng/common/templates-official/jobs/source-build.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/jobs/source-build.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/post-build/common-variables.yml b/src/arcade/eng/common/templates-official/post-build/common-variables.yml new file mode 100644 index 00000000000..c32fc49233f --- /dev/null +++ b/src/arcade/eng/common/templates-official/post-build/common-variables.yml @@ -0,0 +1,8 @@ +variables: +- template: /eng/common/core-templates/post-build/common-variables.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/post-build/post-build.yml b/src/arcade/eng/common/templates-official/post-build/post-build.yml new file mode 100644 index 00000000000..2364c0fd4a5 --- /dev/null +++ b/src/arcade/eng/common/templates-official/post-build/post-build.yml @@ -0,0 +1,8 @@ +stages: +- template: /eng/common/core-templates/post-build/post-build.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/post-build/setup-maestro-vars.yml b/src/arcade/eng/common/templates-official/post-build/setup-maestro-vars.yml new file mode 100644 index 00000000000..024397d8786 --- /dev/null +++ b/src/arcade/eng/common/templates-official/post-build/setup-maestro-vars.yml @@ -0,0 +1,8 @@ +steps: +- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/steps/component-governance.yml b/src/arcade/eng/common/templates-official/steps/component-governance.yml new file mode 100644 index 00000000000..30bb3985ca2 --- /dev/null +++ b/src/arcade/eng/common/templates-official/steps/component-governance.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/component-governance.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/enable-internal-runtimes.yml b/src/arcade/eng/common/templates-official/steps/enable-internal-runtimes.yml new file mode 100644 index 00000000000..f9dd238c6cd --- /dev/null +++ b/src/arcade/eng/common/templates-official/steps/enable-internal-runtimes.yml @@ -0,0 +1,9 @@ +# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' +# variable with the base64-encoded SAS token, by default +steps: +- template: /eng/common/core-templates/steps/enable-internal-runtimes.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/enable-internal-sources.yml b/src/arcade/eng/common/templates-official/steps/enable-internal-sources.yml new file mode 100644 index 00000000000..e6d57182284 --- /dev/null +++ b/src/arcade/eng/common/templates-official/steps/enable-internal-sources.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/enable-internal-sources.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/steps/generate-sbom.yml b/src/arcade/eng/common/templates-official/steps/generate-sbom.yml new file mode 100644 index 00000000000..9a89a4706d9 --- /dev/null +++ b/src/arcade/eng/common/templates-official/steps/generate-sbom.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/generate-sbom.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/get-delegation-sas.yml b/src/arcade/eng/common/templates-official/steps/get-delegation-sas.yml new file mode 100644 index 00000000000..c5a9c1f8275 --- /dev/null +++ b/src/arcade/eng/common/templates-official/steps/get-delegation-sas.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/get-delegation-sas.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/get-federated-access-token.yml b/src/arcade/eng/common/templates-official/steps/get-federated-access-token.yml new file mode 100644 index 00000000000..c8dcf6b8139 --- /dev/null +++ b/src/arcade/eng/common/templates-official/steps/get-federated-access-token.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/get-federated-access-token.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/steps/publish-logs.yml b/src/arcade/eng/common/templates-official/steps/publish-logs.yml new file mode 100644 index 00000000000..579fd531e94 --- /dev/null +++ b/src/arcade/eng/common/templates-official/steps/publish-logs.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/publish-logs.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/publish-pipeline-artifacts.yml b/src/arcade/eng/common/templates-official/steps/publish-pipeline-artifacts.yml new file mode 100644 index 00000000000..172f9f0fdc9 --- /dev/null +++ b/src/arcade/eng/common/templates-official/steps/publish-pipeline-artifacts.yml @@ -0,0 +1,28 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: true + +- name: args + type: object + default: {} + +steps: +- ${{ if ne(parameters.is1ESPipeline, true) }}: + - 'eng/common/templates-official cannot be referenced from a non-1ES managed template': error +- task: 1ES.PublishPipelineArtifact@1 + displayName: ${{ coalesce(parameters.args.displayName, 'Publish to Build Artifact') }} + ${{ if parameters.args.condition }}: + condition: ${{ parameters.args.condition }} + ${{ else }}: + condition: succeeded() + ${{ if parameters.args.continueOnError }}: + continueOnError: ${{ parameters.args.continueOnError }} + inputs: + targetPath: ${{ parameters.args.targetPath }} + ${{ if parameters.args.artifactName }}: + artifactName: ${{ parameters.args.artifactName }} + ${{ if parameters.args.properties }}: + properties: ${{ parameters.args.properties }} + ${{ if parameters.args.sbomEnabled }}: + sbomEnabled: ${{ parameters.args.sbomEnabled }} diff --git a/src/arcade/eng/common/templates-official/steps/retain-build.yml b/src/arcade/eng/common/templates-official/steps/retain-build.yml new file mode 100644 index 00000000000..5594551508a --- /dev/null +++ b/src/arcade/eng/common/templates-official/steps/retain-build.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/retain-build.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/send-to-helix.yml b/src/arcade/eng/common/templates-official/steps/send-to-helix.yml new file mode 100644 index 00000000000..6500f21bf84 --- /dev/null +++ b/src/arcade/eng/common/templates-official/steps/send-to-helix.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/send-to-helix.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/source-build.yml b/src/arcade/eng/common/templates-official/steps/source-build.yml new file mode 100644 index 00000000000..8f92c49e7b0 --- /dev/null +++ b/src/arcade/eng/common/templates-official/steps/source-build.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/source-build.yml + parameters: + is1ESPipeline: true + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/variables/pool-providers.yml b/src/arcade/eng/common/templates-official/variables/pool-providers.yml new file mode 100644 index 00000000000..1f308b24efc --- /dev/null +++ b/src/arcade/eng/common/templates-official/variables/pool-providers.yml @@ -0,0 +1,45 @@ +# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool, +# otherwise it should go into the "normal" pools. This separates out the queueing and billing of released branches. + +# Motivation: +# Once a given branch of a repository's output has been officially "shipped" once, it is then considered to be COGS +# (Cost of goods sold) and should be moved to a servicing pool provider. This allows both separation of queueing +# (allowing release builds and main PR builds to not intefere with each other) and billing (required for COGS. +# Additionally, the pool provider name itself may be subject to change when the .NET Core Engineering Services +# team needs to move resources around and create new and potentially differently-named pools. Using this template +# file from an Arcade-ified repo helps guard against both having to update one's release/* branches and renaming. + +# How to use: +# This yaml assumes your shipped product branches use the naming convention "release/..." (which many do). +# If we find alternate naming conventions in broad usage it can be added to the condition below. +# +# First, import the template in an arcade-ified repo to pick up the variables, e.g.: +# +# variables: +# - template: /eng/common/templates-official/variables/pool-providers.yml +# +# ... then anywhere specifying the pool provider use the runtime variables, +# $(DncEngInternalBuildPool) +# +# pool: +# name: $(DncEngInternalBuildPool) +# image: 1es-windows-2022 + +variables: + # Coalesce the target and source branches so we know when a PR targets a release branch + # If these variables are somehow missing, fall back to main (tends to have more capacity) + + # Any new -Svc alternative pools should have variables added here to allow for splitting work + + - name: DncEngInternalBuildPool + value: $[ + replace( + replace( + eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), + True, + 'NetCore1ESPool-Svc-Internal' + ), + False, + 'NetCore1ESPool-Internal' + ) + ] \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/variables/sdl-variables.yml b/src/arcade/eng/common/templates-official/variables/sdl-variables.yml new file mode 100644 index 00000000000..dbdd66d4a4b --- /dev/null +++ b/src/arcade/eng/common/templates-official/variables/sdl-variables.yml @@ -0,0 +1,7 @@ +variables: +# The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in +# sync with the packages.config file. +- name: DefaultGuardianVersion + value: 0.109.0 +- name: GuardianPackagesConfigFile + value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config \ No newline at end of file diff --git a/src/arcade/eng/common/templates/job/onelocbuild.yml b/src/arcade/eng/common/templates/job/onelocbuild.yml new file mode 100644 index 00000000000..ff829dc4c70 --- /dev/null +++ b/src/arcade/eng/common/templates/job/onelocbuild.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/job/onelocbuild.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/job/publish-build-assets.yml b/src/arcade/eng/common/templates/job/publish-build-assets.yml new file mode 100644 index 00000000000..ab2edec2adb --- /dev/null +++ b/src/arcade/eng/common/templates/job/publish-build-assets.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/job/publish-build-assets.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/job/source-build.yml b/src/arcade/eng/common/templates/job/source-build.yml new file mode 100644 index 00000000000..e44d47b1d76 --- /dev/null +++ b/src/arcade/eng/common/templates/job/source-build.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/job/source-build.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/job/source-index-stage1.yml b/src/arcade/eng/common/templates/job/source-index-stage1.yml new file mode 100644 index 00000000000..89f3291593c --- /dev/null +++ b/src/arcade/eng/common/templates/job/source-index-stage1.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/job/source-index-stage1.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/jobs/codeql-build.yml b/src/arcade/eng/common/templates/jobs/codeql-build.yml new file mode 100644 index 00000000000..517f24d6a52 --- /dev/null +++ b/src/arcade/eng/common/templates/jobs/codeql-build.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/jobs/codeql-build.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/jobs/jobs.yml b/src/arcade/eng/common/templates/jobs/jobs.yml new file mode 100644 index 00000000000..388e9037b3e --- /dev/null +++ b/src/arcade/eng/common/templates/jobs/jobs.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/jobs/jobs.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/jobs/source-build.yml b/src/arcade/eng/common/templates/jobs/source-build.yml new file mode 100644 index 00000000000..818d4c326db --- /dev/null +++ b/src/arcade/eng/common/templates/jobs/source-build.yml @@ -0,0 +1,7 @@ +jobs: +- template: /eng/common/core-templates/jobs/source-build.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/post-build/common-variables.yml b/src/arcade/eng/common/templates/post-build/common-variables.yml new file mode 100644 index 00000000000..7fa10587559 --- /dev/null +++ b/src/arcade/eng/common/templates/post-build/common-variables.yml @@ -0,0 +1,8 @@ +variables: +- template: /eng/common/core-templates/post-build/common-variables.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/post-build/post-build.yml b/src/arcade/eng/common/templates/post-build/post-build.yml new file mode 100644 index 00000000000..53ede714bdd --- /dev/null +++ b/src/arcade/eng/common/templates/post-build/post-build.yml @@ -0,0 +1,8 @@ +stages: +- template: /eng/common/core-templates/post-build/post-build.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/post-build/setup-maestro-vars.yml b/src/arcade/eng/common/templates/post-build/setup-maestro-vars.yml new file mode 100644 index 00000000000..a79fab5b441 --- /dev/null +++ b/src/arcade/eng/common/templates/post-build/setup-maestro-vars.yml @@ -0,0 +1,8 @@ +steps: +- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml + parameters: + # Specifies whether to use 1ES + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/steps/component-governance.yml b/src/arcade/eng/common/templates/steps/component-governance.yml new file mode 100644 index 00000000000..c12a5f8d21d --- /dev/null +++ b/src/arcade/eng/common/templates/steps/component-governance.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/component-governance.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/enable-internal-runtimes.yml b/src/arcade/eng/common/templates/steps/enable-internal-runtimes.yml new file mode 100644 index 00000000000..b21a8038cc1 --- /dev/null +++ b/src/arcade/eng/common/templates/steps/enable-internal-runtimes.yml @@ -0,0 +1,10 @@ +# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' +# variable with the base64-encoded SAS token, by default + +steps: +- template: /eng/common/core-templates/steps/enable-internal-runtimes.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/enable-internal-sources.yml b/src/arcade/eng/common/templates/steps/enable-internal-sources.yml new file mode 100644 index 00000000000..5f87e9abb8a --- /dev/null +++ b/src/arcade/eng/common/templates/steps/enable-internal-sources.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/enable-internal-sources.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/steps/generate-sbom.yml b/src/arcade/eng/common/templates/steps/generate-sbom.yml new file mode 100644 index 00000000000..26dc00a2e0f --- /dev/null +++ b/src/arcade/eng/common/templates/steps/generate-sbom.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/generate-sbom.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/get-delegation-sas.yml b/src/arcade/eng/common/templates/steps/get-delegation-sas.yml new file mode 100644 index 00000000000..83760c9798e --- /dev/null +++ b/src/arcade/eng/common/templates/steps/get-delegation-sas.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/get-delegation-sas.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/get-federated-access-token.yml b/src/arcade/eng/common/templates/steps/get-federated-access-token.yml new file mode 100644 index 00000000000..31e151d9d9e --- /dev/null +++ b/src/arcade/eng/common/templates/steps/get-federated-access-token.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/get-federated-access-token.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/steps/publish-logs.yml b/src/arcade/eng/common/templates/steps/publish-logs.yml new file mode 100644 index 00000000000..4ea86bd8823 --- /dev/null +++ b/src/arcade/eng/common/templates/steps/publish-logs.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/publish-logs.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/publish-pipeline-artifacts.yml b/src/arcade/eng/common/templates/steps/publish-pipeline-artifacts.yml new file mode 100644 index 00000000000..5dd698b212f --- /dev/null +++ b/src/arcade/eng/common/templates/steps/publish-pipeline-artifacts.yml @@ -0,0 +1,34 @@ +parameters: +- name: is1ESPipeline + type: boolean + default: false + +- name: args + type: object + default: {} + +steps: +- ${{ if eq(parameters.is1ESPipeline, true) }}: + - 'eng/common/templates cannot be referenced from a 1ES managed template': error +- task: PublishPipelineArtifact@1 + displayName: ${{ coalesce(parameters.args.displayName, 'Publish to Build Artifact') }} + ${{ if parameters.args.condition }}: + condition: ${{ parameters.args.condition }} + ${{ else }}: + condition: succeeded() + ${{ if parameters.args.continueOnError }}: + continueOnError: ${{ parameters.args.continueOnError }} + inputs: + targetPath: ${{ parameters.args.targetPath }} + ${{ if parameters.args.artifactName }}: + artifactName: ${{ parameters.args.artifactName }} + ${{ if parameters.args.publishLocation }}: + publishLocation: ${{ parameters.args.publishLocation }} + ${{ if parameters.args.fileSharePath }}: + fileSharePath: ${{ parameters.args.fileSharePath }} + ${{ if parameters.args.Parallel }}: + parallel: ${{ parameters.args.Parallel }} + ${{ if parameters.args.parallelCount }}: + parallelCount: ${{ parameters.args.parallelCount }} + ${{ if parameters.args.properties }}: + properties: ${{ parameters.args.properties }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/steps/retain-build.yml b/src/arcade/eng/common/templates/steps/retain-build.yml new file mode 100644 index 00000000000..8e841ace3d2 --- /dev/null +++ b/src/arcade/eng/common/templates/steps/retain-build.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/retain-build.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/send-to-helix.yml b/src/arcade/eng/common/templates/steps/send-to-helix.yml new file mode 100644 index 00000000000..39f99fc2762 --- /dev/null +++ b/src/arcade/eng/common/templates/steps/send-to-helix.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/send-to-helix.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/source-build.yml b/src/arcade/eng/common/templates/steps/source-build.yml new file mode 100644 index 00000000000..23c1d6f4e9f --- /dev/null +++ b/src/arcade/eng/common/templates/steps/source-build.yml @@ -0,0 +1,7 @@ +steps: +- template: /eng/common/core-templates/steps/source-build.yml + parameters: + is1ESPipeline: false + + ${{ each parameter in parameters }}: + ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/variables/pool-providers.yml b/src/arcade/eng/common/templates/variables/pool-providers.yml new file mode 100644 index 00000000000..e0b19c14a07 --- /dev/null +++ b/src/arcade/eng/common/templates/variables/pool-providers.yml @@ -0,0 +1,59 @@ +# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool, +# otherwise it should go into the "normal" pools. This separates out the queueing and billing of released branches. + +# Motivation: +# Once a given branch of a repository's output has been officially "shipped" once, it is then considered to be COGS +# (Cost of goods sold) and should be moved to a servicing pool provider. This allows both separation of queueing +# (allowing release builds and main PR builds to not intefere with each other) and billing (required for COGS. +# Additionally, the pool provider name itself may be subject to change when the .NET Core Engineering Services +# team needs to move resources around and create new and potentially differently-named pools. Using this template +# file from an Arcade-ified repo helps guard against both having to update one's release/* branches and renaming. + +# How to use: +# This yaml assumes your shipped product branches use the naming convention "release/..." (which many do). +# If we find alternate naming conventions in broad usage it can be added to the condition below. +# +# First, import the template in an arcade-ified repo to pick up the variables, e.g.: +# +# variables: +# - template: /eng/common/templates/variables/pool-providers.yml +# +# ... then anywhere specifying the pool provider use the runtime variables, +# $(DncEngInternalBuildPool) and $ (DncEngPublicBuildPool), e.g.: +# +# pool: +# name: $(DncEngInternalBuildPool) +# demands: ImageOverride -equals windows.vs2019.amd64 +variables: + - ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - template: /eng/common/templates-official/variables/pool-providers.yml + - ${{ else }}: + # Coalesce the target and source branches so we know when a PR targets a release branch + # If these variables are somehow missing, fall back to main (tends to have more capacity) + + # Any new -Svc alternative pools should have variables added here to allow for splitting work + - name: DncEngPublicBuildPool + value: $[ + replace( + replace( + eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), + True, + 'NetCore-Svc-Public' + ), + False, + 'NetCore-Public' + ) + ] + + - name: DncEngInternalBuildPool + value: $[ + replace( + replace( + eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), + True, + 'NetCore1ESPool-Svc-Internal' + ), + False, + 'NetCore1ESPool-Internal' + ) + ] From 9b6387d673da633fea22fa8c5e0952ca850b68f7 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 16 May 2025 14:46:55 +0000 Subject: [PATCH 64/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250516.5 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Logging , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 , System.Text.Encodings.Web , System.Text.Json From Version 9.0.5 -> To Version 9.0.6 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 30 ++++++++++----------- 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/NuGet.config b/NuGet.config index d6eecbfcd48..96acec451a1 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b9fe0008cc7..517142b1428 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,69 +1,69 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + ee65eb43cd4028e5ec18877f3d9c997faf4671f0 diff --git a/eng/Versions.props b/eng/Versions.props index 99dee59ec67..4405fa187a6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -17,21 +17,21 @@ False - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5-servicing.25215.9 - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5-servicing.25215.9 - 9.0.5 - 9.0.5 - 9.0.5 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6-servicing.25266.5 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6-servicing.25266.5 + 9.0.6 + 9.0.6 + 9.0.6 9.0.0-beta.25263.5 From 7eddfafa9ff287f3ea6ab66069e8957b83eb1760 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 16 May 2025 23:32:29 +0000 Subject: [PATCH 65/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250516.13 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Logging , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 , System.Text.Encodings.Web , System.Text.Json From Version 9.0.6 -> To Version 9.0.6 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 34 +++++++++++++++++----------------- eng/Versions.props | 4 ++-- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/NuGet.config b/NuGet.config index 96acec451a1..f4a8386b411 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 517142b1428..507b99cbd56 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,47 +3,47 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - ee65eb43cd4028e5ec18877f3d9c997faf4671f0 + 3875b54e7b10b10606b105340199946d0b877754 diff --git a/eng/Versions.props b/eng/Versions.props index 4405fa187a6..399587115a1 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,11 +24,11 @@ 9.0.6 9.0.6 9.0.6 - 9.0.6-servicing.25266.5 + 9.0.6-servicing.25266.13 9.0.6 9.0.6 9.0.6 - 9.0.6-servicing.25266.5 + 9.0.6-servicing.25266.13 9.0.6 9.0.6 9.0.6 From ec124aa8ea8deaaebad790a22e90b564e8d8085e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 19 May 2025 05:56:20 +0000 Subject: [PATCH 66/79] Update dependencies from https://github.com/dotnet/arcade build 20250516.2 (#36098) [release/9.0] Update dependencies from dotnet/arcade --- NuGet.config | 16 ++++++++++++++++ eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- eng/common/sdl/packages.config | 2 +- global.json | 4 ++-- 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index d6eecbfcd48..c9a3b6adfce 100644 --- a/NuGet.config +++ b/NuGet.config @@ -5,6 +5,14 @@ + + + + + + + + @@ -21,6 +29,14 @@ + + + + + + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b9fe0008cc7..f6991d7edc5 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - 93823d49ca01742464ad1c0b49ea940e693b1be3 + c62eeb5b5432f9eaa034fbd641ccd9fd0d928fb3 - + https://github.com/dotnet/arcade - 93823d49ca01742464ad1c0b49ea940e693b1be3 + c62eeb5b5432f9eaa034fbd641ccd9fd0d928fb3 - + https://github.com/dotnet/arcade - 93823d49ca01742464ad1c0b49ea940e693b1be3 + c62eeb5b5432f9eaa034fbd641ccd9fd0d928fb3 diff --git a/eng/Versions.props b/eng/Versions.props index 99dee59ec67..6a4ce93dacc 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.5 - 9.0.0-beta.25263.5 + 9.0.0-beta.25266.2 17.8.3 diff --git a/eng/common/sdl/packages.config b/eng/common/sdl/packages.config index e5f543ea68c..4585cfd6bba 100644 --- a/eng/common/sdl/packages.config +++ b/eng/common/sdl/packages.config @@ -1,4 +1,4 @@ - + diff --git a/global.json b/global.json index 35da46f6c9b..c6d0ebb8ab1 100644 --- a/global.json +++ b/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25263.5", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25263.5" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25266.2", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25266.2" } } From f299fbecf87fea053ba5faec86bdcf21ef56c600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Mon, 19 May 2025 15:47:00 +0200 Subject: [PATCH 67/79] Delete src/arcade/eng/common directory It got accidentally added due to a darc bug, see https://github.com/dotnet/arcade-services/issues/4837 --- .../build-configuration.json | 4 - .../eng/common/PSScriptAnalyzerSettings.psd1 | 11 - src/arcade/eng/common/README.md | 28 -- src/arcade/eng/common/SetupNugetSources.ps1 | 171 -------- src/arcade/eng/common/SetupNugetSources.sh | 167 -------- src/arcade/eng/common/build.cmd | 3 - .../common/core-templates/job/onelocbuild.yml | 121 ------ .../core-templates/jobs/source-build.yml | 58 --- .../post-build/common-variables.yml | 22 - .../post-build/setup-maestro-vars.yml | 74 ---- .../steps/component-governance.yml | 16 - .../steps/enable-internal-runtimes.yml | 32 -- .../steps/enable-internal-sources.yml | 47 -- .../steps/get-federated-access-token.yml | 42 -- .../steps/publish-build-artifacts.yml | 20 - .../steps/publish-pipeline-artifacts.yml | 20 - .../core-templates/steps/retain-build.yml | 28 -- .../core-templates/steps/send-to-helix.yml | 93 ---- .../variables/pool-providers.yml | 8 - .../eng/common/cross/armel/tizen/tizen.patch | 9 - .../common/cross/riscv64/tizen/tizen.patch | 9 - .../eng/common/cross/tizen-build-rootfs.sh | 82 ---- src/arcade/eng/common/darc-init.ps1 | 47 -- src/arcade/eng/common/darc-init.sh | 82 ---- src/arcade/eng/common/dotnet-install.cmd | 2 - src/arcade/eng/common/dotnet-install.ps1 | 28 -- src/arcade/eng/common/dotnet-install.sh | 94 ---- .../common/enable-cross-org-publishing.ps1 | 13 - src/arcade/eng/common/generate-locproject.ps1 | 189 --------- src/arcade/eng/common/generate-sbom-prep.ps1 | 29 -- src/arcade/eng/common/generate-sbom-prep.sh | 39 -- src/arcade/eng/common/helixpublish.proj | 27 -- src/arcade/eng/common/init-tools-native.cmd | 3 - src/arcade/eng/common/init-tools-native.ps1 | 203 --------- src/arcade/eng/common/init-tools-native.sh | 238 ----------- .../eng/common/internal-feed-operations.ps1 | 132 ------ .../eng/common/internal-feed-operations.sh | 141 ------ .../eng/common/internal/Directory.Build.props | 11 - src/arcade/eng/common/internal/NuGet.config | 7 - src/arcade/eng/common/internal/Tools.csproj | 22 - .../common/loc/P22DotNetHtmlLocalization.lss | 29 -- src/arcade/eng/common/msbuild.ps1 | 28 -- src/arcade/eng/common/msbuild.sh | 58 --- .../eng/common/native/CommonLibrary.psm1 | 401 ------------------ .../eng/common/native/common-library.sh | 172 -------- src/arcade/eng/common/native/init-compiler.sh | 146 ------- .../eng/common/native/init-distro-rid.sh | 110 ----- .../eng/common/native/init-os-and-arch.sh | 85 ---- .../eng/common/native/install-cmake-test.sh | 117 ----- src/arcade/eng/common/native/install-cmake.sh | 117 ----- src/arcade/eng/common/native/install-tool.ps1 | 132 ------ .../eng/common/pipeline-logging-functions.ps1 | 260 ------------ .../eng/common/pipeline-logging-functions.sh | 206 --------- .../post-build/check-channel-consistency.ps1 | 48 --- .../common/post-build/nuget-validation.ps1 | 22 - .../common/post-build/nuget-verification.ps1 | 121 ------ .../eng/common/post-build/redact-logs.ps1 | 89 ---- .../post-build/sourcelink-validation.ps1 | 327 -------------- .../common/post-build/symbols-validation.ps1 | 337 --------------- src/arcade/eng/common/retain-build.ps1 | 45 -- src/arcade/eng/common/sdl/NuGet.config | 18 - .../eng/common/sdl/configure-sdl-tool.ps1 | 130 ------ .../eng/common/sdl/execute-all-sdl-tools.ps1 | 167 -------- .../common/sdl/extract-artifact-archives.ps1 | 63 --- .../common/sdl/extract-artifact-packages.ps1 | 82 ---- src/arcade/eng/common/sdl/init-sdl.ps1 | 55 --- src/arcade/eng/common/sdl/run-sdl.ps1 | 49 --- src/arcade/eng/common/sdl/sdl.ps1 | 38 -- .../eng/common/sdl/trim-assets-version.ps1 | 75 ---- src/arcade/eng/common/template-guidance.md | 133 ------ .../templates-official/job/onelocbuild.yml | 7 - .../job/publish-build-assets.yml | 7 - .../templates-official/job/source-build.yml | 7 - .../job/source-index-stage1.yml | 7 - .../templates-official/jobs/codeql-build.yml | 7 - .../common/templates-official/jobs/jobs.yml | 7 - .../templates-official/jobs/source-build.yml | 7 - .../post-build/common-variables.yml | 8 - .../post-build/post-build.yml | 8 - .../post-build/setup-maestro-vars.yml | 8 - .../steps/component-governance.yml | 7 - .../steps/enable-internal-runtimes.yml | 9 - .../steps/enable-internal-sources.yml | 7 - .../steps/generate-sbom.yml | 7 - .../steps/get-delegation-sas.yml | 7 - .../steps/get-federated-access-token.yml | 7 - .../templates-official/steps/publish-logs.yml | 7 - .../steps/publish-pipeline-artifacts.yml | 28 -- .../templates-official/steps/retain-build.yml | 7 - .../steps/send-to-helix.yml | 7 - .../templates-official/steps/source-build.yml | 7 - .../variables/pool-providers.yml | 45 -- .../variables/sdl-variables.yml | 7 - .../eng/common/templates/job/onelocbuild.yml | 7 - .../templates/job/publish-build-assets.yml | 7 - .../eng/common/templates/job/source-build.yml | 7 - .../templates/job/source-index-stage1.yml | 7 - .../common/templates/jobs/codeql-build.yml | 7 - src/arcade/eng/common/templates/jobs/jobs.yml | 7 - .../common/templates/jobs/source-build.yml | 7 - .../templates/post-build/common-variables.yml | 8 - .../templates/post-build/post-build.yml | 8 - .../post-build/setup-maestro-vars.yml | 8 - .../templates/steps/component-governance.yml | 7 - .../steps/enable-internal-runtimes.yml | 10 - .../steps/enable-internal-sources.yml | 7 - .../common/templates/steps/generate-sbom.yml | 7 - .../templates/steps/get-delegation-sas.yml | 7 - .../steps/get-federated-access-token.yml | 7 - .../common/templates/steps/publish-logs.yml | 7 - .../steps/publish-pipeline-artifacts.yml | 34 -- .../common/templates/steps/retain-build.yml | 7 - .../common/templates/steps/send-to-helix.yml | 7 - .../common/templates/steps/source-build.yml | 7 - .../templates/variables/pool-providers.yml | 59 --- 115 files changed, 6496 deletions(-) delete mode 100644 src/arcade/eng/common/BuildConfiguration/build-configuration.json delete mode 100644 src/arcade/eng/common/PSScriptAnalyzerSettings.psd1 delete mode 100644 src/arcade/eng/common/README.md delete mode 100644 src/arcade/eng/common/SetupNugetSources.ps1 delete mode 100644 src/arcade/eng/common/SetupNugetSources.sh delete mode 100644 src/arcade/eng/common/build.cmd delete mode 100644 src/arcade/eng/common/core-templates/job/onelocbuild.yml delete mode 100644 src/arcade/eng/common/core-templates/jobs/source-build.yml delete mode 100644 src/arcade/eng/common/core-templates/post-build/common-variables.yml delete mode 100644 src/arcade/eng/common/core-templates/post-build/setup-maestro-vars.yml delete mode 100644 src/arcade/eng/common/core-templates/steps/component-governance.yml delete mode 100644 src/arcade/eng/common/core-templates/steps/enable-internal-runtimes.yml delete mode 100644 src/arcade/eng/common/core-templates/steps/enable-internal-sources.yml delete mode 100644 src/arcade/eng/common/core-templates/steps/get-federated-access-token.yml delete mode 100644 src/arcade/eng/common/core-templates/steps/publish-build-artifacts.yml delete mode 100644 src/arcade/eng/common/core-templates/steps/publish-pipeline-artifacts.yml delete mode 100644 src/arcade/eng/common/core-templates/steps/retain-build.yml delete mode 100644 src/arcade/eng/common/core-templates/steps/send-to-helix.yml delete mode 100644 src/arcade/eng/common/core-templates/variables/pool-providers.yml delete mode 100644 src/arcade/eng/common/cross/armel/tizen/tizen.patch delete mode 100644 src/arcade/eng/common/cross/riscv64/tizen/tizen.patch delete mode 100644 src/arcade/eng/common/cross/tizen-build-rootfs.sh delete mode 100644 src/arcade/eng/common/darc-init.ps1 delete mode 100644 src/arcade/eng/common/darc-init.sh delete mode 100644 src/arcade/eng/common/dotnet-install.cmd delete mode 100644 src/arcade/eng/common/dotnet-install.ps1 delete mode 100644 src/arcade/eng/common/dotnet-install.sh delete mode 100644 src/arcade/eng/common/enable-cross-org-publishing.ps1 delete mode 100644 src/arcade/eng/common/generate-locproject.ps1 delete mode 100644 src/arcade/eng/common/generate-sbom-prep.ps1 delete mode 100644 src/arcade/eng/common/generate-sbom-prep.sh delete mode 100644 src/arcade/eng/common/helixpublish.proj delete mode 100644 src/arcade/eng/common/init-tools-native.cmd delete mode 100644 src/arcade/eng/common/init-tools-native.ps1 delete mode 100644 src/arcade/eng/common/init-tools-native.sh delete mode 100644 src/arcade/eng/common/internal-feed-operations.ps1 delete mode 100644 src/arcade/eng/common/internal-feed-operations.sh delete mode 100644 src/arcade/eng/common/internal/Directory.Build.props delete mode 100644 src/arcade/eng/common/internal/NuGet.config delete mode 100644 src/arcade/eng/common/internal/Tools.csproj delete mode 100644 src/arcade/eng/common/loc/P22DotNetHtmlLocalization.lss delete mode 100644 src/arcade/eng/common/msbuild.ps1 delete mode 100644 src/arcade/eng/common/msbuild.sh delete mode 100644 src/arcade/eng/common/native/CommonLibrary.psm1 delete mode 100644 src/arcade/eng/common/native/common-library.sh delete mode 100644 src/arcade/eng/common/native/init-compiler.sh delete mode 100644 src/arcade/eng/common/native/init-distro-rid.sh delete mode 100644 src/arcade/eng/common/native/init-os-and-arch.sh delete mode 100644 src/arcade/eng/common/native/install-cmake-test.sh delete mode 100644 src/arcade/eng/common/native/install-cmake.sh delete mode 100644 src/arcade/eng/common/native/install-tool.ps1 delete mode 100644 src/arcade/eng/common/pipeline-logging-functions.ps1 delete mode 100644 src/arcade/eng/common/pipeline-logging-functions.sh delete mode 100644 src/arcade/eng/common/post-build/check-channel-consistency.ps1 delete mode 100644 src/arcade/eng/common/post-build/nuget-validation.ps1 delete mode 100644 src/arcade/eng/common/post-build/nuget-verification.ps1 delete mode 100644 src/arcade/eng/common/post-build/redact-logs.ps1 delete mode 100644 src/arcade/eng/common/post-build/sourcelink-validation.ps1 delete mode 100644 src/arcade/eng/common/post-build/symbols-validation.ps1 delete mode 100644 src/arcade/eng/common/retain-build.ps1 delete mode 100644 src/arcade/eng/common/sdl/NuGet.config delete mode 100644 src/arcade/eng/common/sdl/configure-sdl-tool.ps1 delete mode 100644 src/arcade/eng/common/sdl/execute-all-sdl-tools.ps1 delete mode 100644 src/arcade/eng/common/sdl/extract-artifact-archives.ps1 delete mode 100644 src/arcade/eng/common/sdl/extract-artifact-packages.ps1 delete mode 100644 src/arcade/eng/common/sdl/init-sdl.ps1 delete mode 100644 src/arcade/eng/common/sdl/run-sdl.ps1 delete mode 100644 src/arcade/eng/common/sdl/sdl.ps1 delete mode 100644 src/arcade/eng/common/sdl/trim-assets-version.ps1 delete mode 100644 src/arcade/eng/common/template-guidance.md delete mode 100644 src/arcade/eng/common/templates-official/job/onelocbuild.yml delete mode 100644 src/arcade/eng/common/templates-official/job/publish-build-assets.yml delete mode 100644 src/arcade/eng/common/templates-official/job/source-build.yml delete mode 100644 src/arcade/eng/common/templates-official/job/source-index-stage1.yml delete mode 100644 src/arcade/eng/common/templates-official/jobs/codeql-build.yml delete mode 100644 src/arcade/eng/common/templates-official/jobs/jobs.yml delete mode 100644 src/arcade/eng/common/templates-official/jobs/source-build.yml delete mode 100644 src/arcade/eng/common/templates-official/post-build/common-variables.yml delete mode 100644 src/arcade/eng/common/templates-official/post-build/post-build.yml delete mode 100644 src/arcade/eng/common/templates-official/post-build/setup-maestro-vars.yml delete mode 100644 src/arcade/eng/common/templates-official/steps/component-governance.yml delete mode 100644 src/arcade/eng/common/templates-official/steps/enable-internal-runtimes.yml delete mode 100644 src/arcade/eng/common/templates-official/steps/enable-internal-sources.yml delete mode 100644 src/arcade/eng/common/templates-official/steps/generate-sbom.yml delete mode 100644 src/arcade/eng/common/templates-official/steps/get-delegation-sas.yml delete mode 100644 src/arcade/eng/common/templates-official/steps/get-federated-access-token.yml delete mode 100644 src/arcade/eng/common/templates-official/steps/publish-logs.yml delete mode 100644 src/arcade/eng/common/templates-official/steps/publish-pipeline-artifacts.yml delete mode 100644 src/arcade/eng/common/templates-official/steps/retain-build.yml delete mode 100644 src/arcade/eng/common/templates-official/steps/send-to-helix.yml delete mode 100644 src/arcade/eng/common/templates-official/steps/source-build.yml delete mode 100644 src/arcade/eng/common/templates-official/variables/pool-providers.yml delete mode 100644 src/arcade/eng/common/templates-official/variables/sdl-variables.yml delete mode 100644 src/arcade/eng/common/templates/job/onelocbuild.yml delete mode 100644 src/arcade/eng/common/templates/job/publish-build-assets.yml delete mode 100644 src/arcade/eng/common/templates/job/source-build.yml delete mode 100644 src/arcade/eng/common/templates/job/source-index-stage1.yml delete mode 100644 src/arcade/eng/common/templates/jobs/codeql-build.yml delete mode 100644 src/arcade/eng/common/templates/jobs/jobs.yml delete mode 100644 src/arcade/eng/common/templates/jobs/source-build.yml delete mode 100644 src/arcade/eng/common/templates/post-build/common-variables.yml delete mode 100644 src/arcade/eng/common/templates/post-build/post-build.yml delete mode 100644 src/arcade/eng/common/templates/post-build/setup-maestro-vars.yml delete mode 100644 src/arcade/eng/common/templates/steps/component-governance.yml delete mode 100644 src/arcade/eng/common/templates/steps/enable-internal-runtimes.yml delete mode 100644 src/arcade/eng/common/templates/steps/enable-internal-sources.yml delete mode 100644 src/arcade/eng/common/templates/steps/generate-sbom.yml delete mode 100644 src/arcade/eng/common/templates/steps/get-delegation-sas.yml delete mode 100644 src/arcade/eng/common/templates/steps/get-federated-access-token.yml delete mode 100644 src/arcade/eng/common/templates/steps/publish-logs.yml delete mode 100644 src/arcade/eng/common/templates/steps/publish-pipeline-artifacts.yml delete mode 100644 src/arcade/eng/common/templates/steps/retain-build.yml delete mode 100644 src/arcade/eng/common/templates/steps/send-to-helix.yml delete mode 100644 src/arcade/eng/common/templates/steps/source-build.yml delete mode 100644 src/arcade/eng/common/templates/variables/pool-providers.yml diff --git a/src/arcade/eng/common/BuildConfiguration/build-configuration.json b/src/arcade/eng/common/BuildConfiguration/build-configuration.json deleted file mode 100644 index 3d1cc89894c..00000000000 --- a/src/arcade/eng/common/BuildConfiguration/build-configuration.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "RetryCountLimit": 1, - "RetryByAnyError": false -} diff --git a/src/arcade/eng/common/PSScriptAnalyzerSettings.psd1 b/src/arcade/eng/common/PSScriptAnalyzerSettings.psd1 deleted file mode 100644 index 4c1ea7c98ea..00000000000 --- a/src/arcade/eng/common/PSScriptAnalyzerSettings.psd1 +++ /dev/null @@ -1,11 +0,0 @@ -@{ - IncludeRules=@('PSAvoidUsingCmdletAliases', - 'PSAvoidUsingWMICmdlet', - 'PSAvoidUsingPositionalParameters', - 'PSAvoidUsingInvokeExpression', - 'PSUseDeclaredVarsMoreThanAssignments', - 'PSUseCmdletCorrectly', - 'PSStandardDSCFunctionsInResource', - 'PSUseIdenticalMandatoryParametersForDSC', - 'PSUseIdenticalParametersForDSC') -} \ No newline at end of file diff --git a/src/arcade/eng/common/README.md b/src/arcade/eng/common/README.md deleted file mode 100644 index ff49c371527..00000000000 --- a/src/arcade/eng/common/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Don't touch this folder - - uuuuuuuuuuuuuuuuuuuu - u" uuuuuuuuuuuuuuuuuu "u - u" u$$$$$$$$$$$$$$$$$$$$u "u - u" u$$$$$$$$$$$$$$$$$$$$$$$$u "u - u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u - u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u - u" u$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$u "u - $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ - $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ - $ $$$" ... "$... ...$" ... "$$$ ... "$$$ $ - $ $$$u `"$$$$$$$ $$$ $$$$$ $$ $$$ $$$ $ - $ $$$$$$uu "$$$$ $$$ $$$$$ $$ """ u$$$ $ - $ $$$""$$$ $$$$ $$$u "$$$" u$$ $$$$$$$$ $ - $ $$$$....,$$$$$..$$$$$....,$$$$..$$$$$$$$ $ - $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ - "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u" - "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u" - "u "$$$$$$$$$$$$$$$$$$$$$$$$$$$$" u" - "u "$$$$$$$$$$$$$$$$$$$$$$$$" u" - "u "$$$$$$$$$$$$$$$$$$$$" u" - "u """""""""""""""""" u" - """""""""""""""""""" - -!!! Changes made in this directory are subject to being overwritten by automation !!! - -The files in this directory are shared by all Arcade repos and managed by automation. If you need to make changes to these files, open an issue or submit a pull request to https://github.com/dotnet/arcade first. diff --git a/src/arcade/eng/common/SetupNugetSources.ps1 b/src/arcade/eng/common/SetupNugetSources.ps1 deleted file mode 100644 index 5db4ad71ee2..00000000000 --- a/src/arcade/eng/common/SetupNugetSources.ps1 +++ /dev/null @@ -1,171 +0,0 @@ -# This script adds internal feeds required to build commits that depend on internal package sources. For instance, -# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables -# disabled internal Maestro (darc-int*) feeds. -# -# Optionally, this script also adds a credential entry for each of the internal feeds if supplied. -# -# See example call for this script below. -# -# - task: PowerShell@2 -# displayName: Setup Private Feeds Credentials -# condition: eq(variables['Agent.OS'], 'Windows_NT') -# inputs: -# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 -# arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token -# env: -# Token: $(dn-bot-dnceng-artifact-feeds-rw) -# -# Note that the NuGetAuthenticate task should be called after SetupNugetSources. -# This ensures that: -# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt) -# - The credential provider is installed. -# -# This logic is also abstracted into enable-internal-sources.yml. - -[CmdletBinding()] -param ( - [Parameter(Mandatory = $true)][string]$ConfigFile, - $Password -) - -$ErrorActionPreference = "Stop" -Set-StrictMode -Version 2.0 -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 - -. $PSScriptRoot\tools.ps1 - -# Add source entry to PackageSources -function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) { - $packageSource = $sources.SelectSingleNode("add[@key='$SourceName']") - - if ($packageSource -eq $null) - { - $packageSource = $doc.CreateElement("add") - $packageSource.SetAttribute("key", $SourceName) - $packageSource.SetAttribute("value", $SourceEndPoint) - $sources.AppendChild($packageSource) | Out-Null - } - else { - Write-Host "Package source $SourceName already present." - } - - AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd -} - -# Add a credential node for the specified source -function AddCredential($creds, $source, $username, $pwd) { - # If no cred supplied, don't do anything. - if (!$pwd) { - return; - } - - # Looks for credential configuration for the given SourceName. Create it if none is found. - $sourceElement = $creds.SelectSingleNode($Source) - if ($sourceElement -eq $null) - { - $sourceElement = $doc.CreateElement($Source) - $creds.AppendChild($sourceElement) | Out-Null - } - - # Add the node to the credential if none is found. - $usernameElement = $sourceElement.SelectSingleNode("add[@key='Username']") - if ($usernameElement -eq $null) - { - $usernameElement = $doc.CreateElement("add") - $usernameElement.SetAttribute("key", "Username") - $sourceElement.AppendChild($usernameElement) | Out-Null - } - $usernameElement.SetAttribute("value", $Username) - - # Add the to the credential if none is found. - # Add it as a clear text because there is no support for encrypted ones in non-windows .Net SDKs. - # -> https://github.com/NuGet/Home/issues/5526 - $passwordElement = $sourceElement.SelectSingleNode("add[@key='ClearTextPassword']") - if ($passwordElement -eq $null) - { - $passwordElement = $doc.CreateElement("add") - $passwordElement.SetAttribute("key", "ClearTextPassword") - $sourceElement.AppendChild($passwordElement) | Out-Null - } - - $passwordElement.SetAttribute("value", $pwd) -} - -function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $pwd) { - $maestroPrivateSources = $Sources.SelectNodes("add[contains(@key,'darc-int')]") - - Write-Host "Inserting credentials for $($maestroPrivateSources.Count) Maestro's private feeds." - - ForEach ($PackageSource in $maestroPrivateSources) { - Write-Host "`tInserting credential for Maestro's feed:" $PackageSource.Key - AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -pwd $pwd - } -} - -function EnablePrivatePackageSources($DisabledPackageSources) { - $maestroPrivateSources = $DisabledPackageSources.SelectNodes("add[contains(@key,'darc-int')]") - ForEach ($DisabledPackageSource in $maestroPrivateSources) { - Write-Host "`tEnsuring private source '$($DisabledPackageSource.key)' is enabled by deleting it from disabledPackageSource" - # Due to https://github.com/NuGet/Home/issues/10291, we must actually remove the disabled entries - $DisabledPackageSources.RemoveChild($DisabledPackageSource) - } -} - -if (!(Test-Path $ConfigFile -PathType Leaf)) { - Write-PipelineTelemetryError -Category 'Build' -Message "Eng/common/SetupNugetSources.ps1 returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile" - ExitWithExitCode 1 -} - -# Load NuGet.config -$doc = New-Object System.Xml.XmlDocument -$filename = (Get-Item $ConfigFile).FullName -$doc.Load($filename) - -# Get reference to or create one if none exist already -$sources = $doc.DocumentElement.SelectSingleNode("packageSources") -if ($sources -eq $null) { - $sources = $doc.CreateElement("packageSources") - $doc.DocumentElement.AppendChild($sources) | Out-Null -} - -$creds = $null -if ($Password) { - # Looks for a node. Create it if none is found. - $creds = $doc.DocumentElement.SelectSingleNode("packageSourceCredentials") - if ($creds -eq $null) { - $creds = $doc.CreateElement("packageSourceCredentials") - $doc.DocumentElement.AppendChild($creds) | Out-Null - } -} - -# Check for disabledPackageSources; we'll enable any darc-int ones we find there -$disabledSources = $doc.DocumentElement.SelectSingleNode("disabledPackageSources") -if ($disabledSources -ne $null) { - Write-Host "Checking for any darc-int disabled package sources in the disabledPackageSources node" - EnablePrivatePackageSources -DisabledPackageSources $disabledSources -} - -$userName = "dn-bot" - -# Insert credential nodes for Maestro's private feeds -InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -pwd $Password - -# 3.1 uses a different feed url format so it's handled differently here -$dotnet31Source = $sources.SelectSingleNode("add[@key='dotnet3.1']") -if ($dotnet31Source -ne $null) { - AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password - AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password -} - -$dotnetVersions = @('5','6','7','8','9') - -foreach ($dotnetVersion in $dotnetVersions) { - $feedPrefix = "dotnet" + $dotnetVersion; - $dotnetSource = $sources.SelectSingleNode("add[@key='$feedPrefix']") - if ($dotnetSource -ne $null) { - AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password - AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password - } -} - -$doc.Save($filename) diff --git a/src/arcade/eng/common/SetupNugetSources.sh b/src/arcade/eng/common/SetupNugetSources.sh deleted file mode 100644 index 4604b61b032..00000000000 --- a/src/arcade/eng/common/SetupNugetSources.sh +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env bash - -# This script adds internal feeds required to build commits that depend on internal package sources. For instance, -# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables -# disabled internal Maestro (darc-int*) feeds. -# -# Optionally, this script also adds a credential entry for each of the internal feeds if supplied. -# -# See example call for this script below. -# -# - task: Bash@3 -# displayName: Setup Internal Feeds -# inputs: -# filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh -# arguments: $(Build.SourcesDirectory)/NuGet.config -# condition: ne(variables['Agent.OS'], 'Windows_NT') -# - task: NuGetAuthenticate@1 -# -# Note that the NuGetAuthenticate task should be called after SetupNugetSources. -# This ensures that: -# - Appropriate creds are set for the added internal feeds (if not supplied to the scrupt) -# - The credential provider is installed. -# -# This logic is also abstracted into enable-internal-sources.yml. - -ConfigFile=$1 -CredToken=$2 -NL='\n' -TB=' ' - -source="${BASH_SOURCE[0]}" - -# resolve $source until the file is no longer a symlink -while [[ -h "$source" ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. "$scriptroot/tools.sh" - -if [ ! -f "$ConfigFile" ]; then - Write-PipelineTelemetryError -Category 'Build' "Error: Eng/common/SetupNugetSources.sh returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile" - ExitWithExitCode 1 -fi - -if [[ `uname -s` == "Darwin" ]]; then - NL=$'\\\n' - TB='' -fi - -# Ensure there is a ... section. -grep -i "" $ConfigFile -if [ "$?" != "0" ]; then - echo "Adding ... section." - ConfigNodeHeader="" - PackageSourcesTemplate="${TB}${NL}${TB}" - - sed -i.bak "s|$ConfigNodeHeader|$ConfigNodeHeader${NL}$PackageSourcesTemplate|" $ConfigFile -fi - -# Ensure there is a ... section. -grep -i "" $ConfigFile -if [ "$?" != "0" ]; then - echo "Adding ... section." - - PackageSourcesNodeFooter="" - PackageSourceCredentialsTemplate="${TB}${NL}${TB}" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourcesNodeFooter${NL}$PackageSourceCredentialsTemplate|" $ConfigFile -fi - -PackageSources=() - -# Ensure dotnet3.1-internal and dotnet3.1-internal-transport are in the packageSources if the public dotnet3.1 feeds are present -grep -i "" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile - fi - PackageSources+=('dotnet3.1-internal') - - grep -i "" $ConfigFile - if [ "$?" != "0" ]; then - echo "Adding dotnet3.1-internal-transport to the packageSources." - PackageSourcesNodeFooter="" - PackageSourceTemplate="${TB}" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile - fi - PackageSources+=('dotnet3.1-internal-transport') -fi - -DotNetVersions=('5' '6' '7' '8' '9') - -for DotNetVersion in ${DotNetVersions[@]} ; do - FeedPrefix="dotnet${DotNetVersion}"; - grep -i "" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile - fi - PackageSources+=("$FeedPrefix-internal") - - grep -i "" $ConfigFile - if [ "$?" != "0" ]; then - echo "Adding $FeedPrefix-internal-transport to the packageSources." - PackageSourcesNodeFooter="" - PackageSourceTemplate="${TB}" - - sed -i.bak "s|$PackageSourcesNodeFooter|$PackageSourceTemplate${NL}$PackageSourcesNodeFooter|" $ConfigFile - fi - PackageSources+=("$FeedPrefix-internal-transport") - fi -done - -# I want things split line by line -PrevIFS=$IFS -IFS=$'\n' -PackageSources+="$IFS" -PackageSources+=$(grep -oh '"darc-int-[^"]*"' $ConfigFile | tr -d '"') -IFS=$PrevIFS - -if [ "$CredToken" ]; then - for FeedName in ${PackageSources[@]} ; do - # Check if there is no existing credential for this FeedName - grep -i "<$FeedName>" $ConfigFile - if [ "$?" != "0" ]; then - echo "Adding credentials for $FeedName." - - PackageSourceCredentialsNodeFooter="" - NewCredential="${TB}${TB}<$FeedName>${NL}${NL}${NL}" - - sed -i.bak "s|$PackageSourceCredentialsNodeFooter|$NewCredential${NL}$PackageSourceCredentialsNodeFooter|" $ConfigFile - fi - done -fi - -# Re-enable any entries in disabledPackageSources where the feed name contains darc-int -grep -i "" $ConfigFile -if [ "$?" == "0" ]; then - DisabledDarcIntSources=() - echo "Re-enabling any disabled \"darc-int\" package sources in $ConfigFile" - DisabledDarcIntSources+=$(grep -oh '"darc-int-[^"]*" value="true"' $ConfigFile | tr -d '"') - for DisabledSourceName in ${DisabledDarcIntSources[@]} ; do - if [[ $DisabledSourceName == darc-int* ]] - then - OldDisableValue="" - NewDisableValue="" - sed -i.bak "s|$OldDisableValue|$NewDisableValue|" $ConfigFile - echo "Neutralized disablePackageSources entry for '$DisabledSourceName'" - fi - done -fi diff --git a/src/arcade/eng/common/build.cmd b/src/arcade/eng/common/build.cmd deleted file mode 100644 index 99daf368aba..00000000000 --- a/src/arcade/eng/common/build.cmd +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0build.ps1""" %*" -exit /b %ErrorLevel% diff --git a/src/arcade/eng/common/core-templates/job/onelocbuild.yml b/src/arcade/eng/common/core-templates/job/onelocbuild.yml deleted file mode 100644 index 00feec8ebbc..00000000000 --- a/src/arcade/eng/common/core-templates/job/onelocbuild.yml +++ /dev/null @@ -1,121 +0,0 @@ -parameters: - # Optional: dependencies of the job - dependsOn: '' - - # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool - pool: '' - - CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex - GithubPat: $(BotAccount-dotnet-bot-repo-PAT) - - SourcesDirectory: $(Build.SourcesDirectory) - CreatePr: true - AutoCompletePr: false - ReusePr: true - UseLfLineEndings: true - UseCheckedInLocProjectJson: false - SkipLocProjectJsonGeneration: false - LanguageSet: VS_Main_Languages - LclSource: lclFilesInRepo - LclPackageId: '' - RepoType: gitHub - GitHubOrg: dotnet - MirrorRepo: '' - MirrorBranch: main - condition: '' - JobNameSuffix: '' - is1ESPipeline: '' -jobs: -- job: OneLocBuild${{ parameters.JobNameSuffix }} - - dependsOn: ${{ parameters.dependsOn }} - - displayName: OneLocBuild${{ parameters.JobNameSuffix }} - - variables: - - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat - - name: _GenerateLocProjectArguments - value: -SourcesDirectory ${{ parameters.SourcesDirectory }} - -LanguageSet "${{ parameters.LanguageSet }}" - -CreateNeutralXlfs - - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}: - - name: _GenerateLocProjectArguments - value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson - - template: /eng/common/core-templates/variables/pool-providers.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} - - ${{ if ne(parameters.pool, '') }}: - pool: ${{ parameters.pool }} - ${{ if eq(parameters.pool, '') }}: - pool: - # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) - ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: - name: AzurePipelines-EO - image: 1ESPT-Windows2022 - demands: Cmd - os: windows - # If it's not devdiv, it's dnceng - ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: $(DncEngInternalBuildPool) - image: 1es-windows-2022 - os: windows - - steps: - - ${{ if eq(parameters.is1ESPipeline, '') }}: - - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error - - - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}: - - task: Powershell@2 - inputs: - filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1 - arguments: $(_GenerateLocProjectArguments) - displayName: Generate LocProject.json - condition: ${{ parameters.condition }} - - - task: OneLocBuild@2 - displayName: OneLocBuild - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - inputs: - locProj: eng/Localize/LocProject.json - outDir: $(Build.ArtifactStagingDirectory) - lclSource: ${{ parameters.LclSource }} - lclPackageId: ${{ parameters.LclPackageId }} - isCreatePrSelected: ${{ parameters.CreatePr }} - isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }} - ${{ if eq(parameters.CreatePr, true) }}: - isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }} - ${{ if eq(parameters.RepoType, 'gitHub') }}: - isShouldReusePrSelected: ${{ parameters.ReusePr }} - packageSourceAuth: patAuth - patVariable: ${{ parameters.CeapexPat }} - ${{ if eq(parameters.RepoType, 'gitHub') }}: - repoType: ${{ parameters.RepoType }} - gitHubPatVariable: "${{ parameters.GithubPat }}" - ${{ if ne(parameters.MirrorRepo, '') }}: - isMirrorRepoSelected: true - gitHubOrganization: ${{ parameters.GitHubOrg }} - mirrorRepo: ${{ parameters.MirrorRepo }} - mirrorBranch: ${{ parameters.MirrorBranch }} - condition: ${{ parameters.condition }} - - - template: /eng/common/core-templates/steps/publish-build-artifacts.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} - args: - displayName: Publish Localization Files - pathToPublish: '$(Build.ArtifactStagingDirectory)/loc' - publishLocation: Container - artifactName: Loc - condition: ${{ parameters.condition }} - - - template: /eng/common/core-templates/steps/publish-build-artifacts.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} - args: - displayName: Publish LocProject.json - pathToPublish: '$(Build.SourcesDirectory)/eng/Localize/' - publishLocation: Container - artifactName: Loc - condition: ${{ parameters.condition }} \ No newline at end of file diff --git a/src/arcade/eng/common/core-templates/jobs/source-build.yml b/src/arcade/eng/common/core-templates/jobs/source-build.yml deleted file mode 100644 index a10ccfbee6d..00000000000 --- a/src/arcade/eng/common/core-templates/jobs/source-build.yml +++ /dev/null @@ -1,58 +0,0 @@ -parameters: - # This template adds arcade-powered source-build to CI. A job is created for each platform, as - # well as an optional server job that completes when all platform jobs complete. - - # The name of the "join" job for all source-build platforms. If set to empty string, the job is - # not included. Existing repo pipelines can use this job depend on all source-build jobs - # completing without maintaining a separate list of every single job ID: just depend on this one - # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'. - allCompletedJobId: '' - - # See /eng/common/core-templates/job/source-build.yml - jobNamePrefix: 'Source_Build' - - # This is the default platform provided by Arcade, intended for use by a managed-only repo. - defaultManagedPlatform: - name: 'Managed' - container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9' - - # Defines the platforms on which to run build jobs. One job is created for each platform, and the - # object in this array is sent to the job template as 'platform'. If no platforms are specified, - # one job runs on 'defaultManagedPlatform'. - platforms: [] - - is1ESPipeline: '' - - # If set to true and running on a non-public project, - # Internal nuget and blob storage locations will be enabled. - # This is not enabled by default because many repositories do not need internal sources - # and do not need to have the required service connections approved in the pipeline. - enableInternalSources: false - -jobs: - -- ${{ if ne(parameters.allCompletedJobId, '') }}: - - job: ${{ parameters.allCompletedJobId }} - displayName: Source-Build Complete - pool: server - dependsOn: - - ${{ each platform in parameters.platforms }}: - - ${{ parameters.jobNamePrefix }}_${{ platform.name }} - - ${{ if eq(length(parameters.platforms), 0) }}: - - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }} - -- ${{ each platform in parameters.platforms }}: - - template: /eng/common/core-templates/job/source-build.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} - jobNamePrefix: ${{ parameters.jobNamePrefix }} - platform: ${{ platform }} - enableInternalSources: ${{ parameters.enableInternalSources }} - -- ${{ if eq(length(parameters.platforms), 0) }}: - - template: /eng/common/core-templates/job/source-build.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} - jobNamePrefix: ${{ parameters.jobNamePrefix }} - platform: ${{ parameters.defaultManagedPlatform }} - enableInternalSources: ${{ parameters.enableInternalSources }} diff --git a/src/arcade/eng/common/core-templates/post-build/common-variables.yml b/src/arcade/eng/common/core-templates/post-build/common-variables.yml deleted file mode 100644 index d5627a994ae..00000000000 --- a/src/arcade/eng/common/core-templates/post-build/common-variables.yml +++ /dev/null @@ -1,22 +0,0 @@ -variables: - - group: Publish-Build-Assets - - # Whether the build is internal or not - - name: IsInternalBuild - value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }} - - # Default Maestro++ API Endpoint and API Version - - name: MaestroApiEndPoint - value: "https://maestro.dot.net" - - name: MaestroApiVersion - value: "2020-02-20" - - - name: SourceLinkCLIVersion - value: 3.0.0 - - name: SymbolToolVersion - value: 1.0.1 - - name: BinlogToolVersion - value: 1.0.11 - - - name: runCodesignValidationInjection - value: false diff --git a/src/arcade/eng/common/core-templates/post-build/setup-maestro-vars.yml b/src/arcade/eng/common/core-templates/post-build/setup-maestro-vars.yml deleted file mode 100644 index f7602980dbe..00000000000 --- a/src/arcade/eng/common/core-templates/post-build/setup-maestro-vars.yml +++ /dev/null @@ -1,74 +0,0 @@ -parameters: - BARBuildId: '' - PromoteToChannelIds: '' - is1ESPipeline: '' - -steps: - - ${{ if eq(parameters.is1ESPipeline, '') }}: - - 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error - - - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}: - - task: DownloadBuildArtifacts@0 - displayName: Download Release Configs - inputs: - buildType: current - artifactName: ReleaseConfigs - checkDownloadedFiles: true - - - task: AzureCLI@2 - name: setReleaseVars - displayName: Set Release Configs Vars - inputs: - azureSubscription: "Darc: Maestro Production" - scriptType: pscore - scriptLocation: inlineScript - inlineScript: | - try { - if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') { - $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt - - $BarId = $Content | Select -Index 0 - $Channels = $Content | Select -Index 1 - $IsStableBuild = $Content | Select -Index 2 - - $AzureDevOpsProject = $Env:System_TeamProject - $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId - $AzureDevOpsBuildId = $Env:Build_BuildId - } - else { - . $(Build.SourcesDirectory)\eng\common\tools.ps1 - $darc = Get-Darc - $buildInfo = & $darc get-build ` - --id ${{ parameters.BARBuildId }} ` - --extended ` - --output-format json ` - --ci ` - | convertFrom-Json - - $BarId = ${{ parameters.BARBuildId }} - $Channels = $Env:PromoteToMaestroChannels -split "," - $Channels = $Channels -join "][" - $Channels = "[$Channels]" - - $IsStableBuild = $buildInfo.stable - $AzureDevOpsProject = $buildInfo.azureDevOpsProject - $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId - $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId - } - - Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId" - Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels" - Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild" - - Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject" - Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId" - Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId" - } - catch { - Write-Host $_ - Write-Host $_.Exception - Write-Host $_.ScriptStackTrace - exit 1 - } - env: - PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }} diff --git a/src/arcade/eng/common/core-templates/steps/component-governance.yml b/src/arcade/eng/common/core-templates/steps/component-governance.yml deleted file mode 100644 index cf0649aa956..00000000000 --- a/src/arcade/eng/common/core-templates/steps/component-governance.yml +++ /dev/null @@ -1,16 +0,0 @@ -parameters: - disableComponentGovernance: false - componentGovernanceIgnoreDirectories: '' - is1ESPipeline: false - displayName: 'Component Detection' - -steps: -- ${{ if eq(parameters.disableComponentGovernance, 'true') }}: - - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" - displayName: Set skipComponentGovernanceDetection variable -- ${{ if ne(parameters.disableComponentGovernance, 'true') }}: - - task: ComponentGovernanceComponentDetection@0 - continueOnError: true - displayName: ${{ parameters.displayName }} - inputs: - ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} diff --git a/src/arcade/eng/common/core-templates/steps/enable-internal-runtimes.yml b/src/arcade/eng/common/core-templates/steps/enable-internal-runtimes.yml deleted file mode 100644 index 6bdbf62ac50..00000000000 --- a/src/arcade/eng/common/core-templates/steps/enable-internal-runtimes.yml +++ /dev/null @@ -1,32 +0,0 @@ -# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' -# variable with the base64-encoded SAS token, by default - -parameters: -- name: federatedServiceConnection - type: string - default: 'dotnetbuilds-internal-read' -- name: outputVariableName - type: string - default: 'dotnetbuilds-internal-container-read-token-base64' -- name: expiryInHours - type: number - default: 1 -- name: base64Encode - type: boolean - default: true -- name: is1ESPipeline - type: boolean - default: false - -steps: -- ${{ if ne(variables['System.TeamProject'], 'public') }}: - - template: /eng/common/core-templates/steps/get-delegation-sas.yml - parameters: - federatedServiceConnection: ${{ parameters.federatedServiceConnection }} - outputVariableName: ${{ parameters.outputVariableName }} - expiryInHours: ${{ parameters.expiryInHours }} - base64Encode: ${{ parameters.base64Encode }} - storageAccount: dotnetbuilds - container: internal - permissions: rl - is1ESPipeline: ${{ parameters.is1ESPipeline }} \ No newline at end of file diff --git a/src/arcade/eng/common/core-templates/steps/enable-internal-sources.yml b/src/arcade/eng/common/core-templates/steps/enable-internal-sources.yml deleted file mode 100644 index 64f881bffc3..00000000000 --- a/src/arcade/eng/common/core-templates/steps/enable-internal-sources.yml +++ /dev/null @@ -1,47 +0,0 @@ -parameters: -# This is the Azure federated service connection that we log into to get an access token. -- name: nugetFederatedServiceConnection - type: string - default: 'dnceng-artifacts-feeds-read' -- name: is1ESPipeline - type: boolean - default: false -# Legacy parameters to allow for PAT usage -- name: legacyCredential - type: string - default: '' - -steps: -- ${{ if ne(variables['System.TeamProject'], 'public') }}: - - ${{ if ne(parameters.legacyCredential, '') }}: - - task: PowerShell@2 - displayName: Setup Internal Feeds - inputs: - filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 - arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token - env: - Token: ${{ parameters.legacyCredential }} - # If running on dnceng (internal project), just use the default behavior for NuGetAuthenticate. - # If running on DevDiv, NuGetAuthenticate is not really an option. It's scoped to a single feed, and we have many feeds that - # may be added. Instead, we'll use the traditional approach (add cred to nuget.config), but use an account token. - - ${{ else }}: - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - task: PowerShell@2 - displayName: Setup Internal Feeds - inputs: - filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 - arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config - - ${{ else }}: - - template: /eng/common/templates/steps/get-federated-access-token.yml - parameters: - federatedServiceConnection: ${{ parameters.nugetFederatedServiceConnection }} - outputVariableName: 'dnceng-artifacts-feeds-read-access-token' - - task: PowerShell@2 - displayName: Setup Internal Feeds - inputs: - filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1 - arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $(dnceng-artifacts-feeds-read-access-token) - # This is required in certain scenarios to install the ADO credential provider. - # It installed by default in some msbuild invocations (e.g. VS msbuild), but needs to be installed for others - # (e.g. dotnet msbuild). - - task: NuGetAuthenticate@1 diff --git a/src/arcade/eng/common/core-templates/steps/get-federated-access-token.yml b/src/arcade/eng/common/core-templates/steps/get-federated-access-token.yml deleted file mode 100644 index 3a4d4410c48..00000000000 --- a/src/arcade/eng/common/core-templates/steps/get-federated-access-token.yml +++ /dev/null @@ -1,42 +0,0 @@ -parameters: -- name: federatedServiceConnection - type: string -- name: outputVariableName - type: string -- name: is1ESPipeline - type: boolean -- name: stepName - type: string - default: 'getFederatedAccessToken' -- name: condition - type: string - default: '' -# Resource to get a token for. Common values include: -# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps -# - 'https://storage.azure.com/' for storage -# Defaults to Azure DevOps -- name: resource - type: string - default: '499b84ac-1321-427f-aa17-267ca6975798' -- name: isStepOutputVariable - type: boolean - default: false - -steps: -- task: AzureCLI@2 - displayName: 'Getting federated access token for feeds' - name: ${{ parameters.stepName }} - ${{ if ne(parameters.condition, '') }}: - condition: ${{ parameters.condition }} - inputs: - azureSubscription: ${{ parameters.federatedServiceConnection }} - scriptType: 'pscore' - scriptLocation: 'inlineScript' - inlineScript: | - $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv - if ($LASTEXITCODE -ne 0) { - Write-Error "Failed to get access token for resource '${{ parameters.resource }}'" - exit 1 - } - Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" - Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken" \ No newline at end of file diff --git a/src/arcade/eng/common/core-templates/steps/publish-build-artifacts.yml b/src/arcade/eng/common/core-templates/steps/publish-build-artifacts.yml deleted file mode 100644 index f24ce346684..00000000000 --- a/src/arcade/eng/common/core-templates/steps/publish-build-artifacts.yml +++ /dev/null @@ -1,20 +0,0 @@ -parameters: -- name: is1ESPipeline - type: boolean - default: false -- name: args - type: object - default: {} -steps: -- ${{ if ne(parameters.is1ESPipeline, true) }}: - - template: /eng/common/templates/steps/publish-build-artifacts.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} - ${{ each parameter in parameters.args }}: - ${{ parameter.key }}: ${{ parameter.value }} -- ${{ else }}: - - template: /eng/common/templates-official/steps/publish-build-artifacts.yml - parameters: - is1ESPipeline: ${{ parameters.is1ESPipeline }} - ${{ each parameter in parameters.args }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/core-templates/steps/publish-pipeline-artifacts.yml b/src/arcade/eng/common/core-templates/steps/publish-pipeline-artifacts.yml deleted file mode 100644 index 2efec04dc2c..00000000000 --- a/src/arcade/eng/common/core-templates/steps/publish-pipeline-artifacts.yml +++ /dev/null @@ -1,20 +0,0 @@ -parameters: -- name: is1ESPipeline - type: boolean - default: false - -- name: args - type: object - default: {} - -steps: -- ${{ if ne(parameters.is1ESPipeline, true) }}: - - template: /eng/common/templates/steps/publish-pipeline-artifacts.yml - parameters: - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} -- ${{ else }}: - - template: /eng/common/templates-official/steps/publish-pipeline-artifacts.yml - parameters: - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/core-templates/steps/retain-build.yml b/src/arcade/eng/common/core-templates/steps/retain-build.yml deleted file mode 100644 index 83d97a26a01..00000000000 --- a/src/arcade/eng/common/core-templates/steps/retain-build.yml +++ /dev/null @@ -1,28 +0,0 @@ -parameters: - # Optional azure devops PAT with build execute permissions for the build's organization, - # only needed if the build that should be retained ran on a different organization than - # the pipeline where this template is executing from - Token: '' - # Optional BuildId to retain, defaults to the current running build - BuildId: '' - # Azure devops Organization URI for the build in the https://dev.azure.com/ format. - # Defaults to the organization the current pipeline is running on - AzdoOrgUri: '$(System.CollectionUri)' - # Azure devops project for the build. Defaults to the project the current pipeline is running on - AzdoProject: '$(System.TeamProject)' - -steps: - - task: powershell@2 - inputs: - targetType: 'filePath' - filePath: eng/common/retain-build.ps1 - pwsh: true - arguments: > - -AzdoOrgUri: ${{parameters.AzdoOrgUri}} - -AzdoProject ${{parameters.AzdoProject}} - -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }} - -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}} - displayName: Enable permanent build retention - env: - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - BUILD_ID: $(Build.BuildId) \ No newline at end of file diff --git a/src/arcade/eng/common/core-templates/steps/send-to-helix.yml b/src/arcade/eng/common/core-templates/steps/send-to-helix.yml deleted file mode 100644 index 68fa739c4ab..00000000000 --- a/src/arcade/eng/common/core-templates/steps/send-to-helix.yml +++ /dev/null @@ -1,93 +0,0 @@ -# Please remember to update the documentation if you make changes to these parameters! -parameters: - HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ - HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' - HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number - HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues - HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group - HelixProjectPath: 'eng/common/helixpublish.proj' # optional -- path to the project file to build relative to BUILD_SOURCESDIRECTORY - HelixProjectArguments: '' # optional -- arguments passed to the build command - HelixConfiguration: '' # optional -- additional property attached to a job - HelixPreCommands: '' # optional -- commands to run before Helix work item execution - HelixPostCommands: '' # optional -- commands to run after Helix work item execution - WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects - WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects - WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects - CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload - XUnitProjects: '' # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true - XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects - XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects - XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner - XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects - IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion - DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json - DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json - WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." - IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set - HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) - Creator: '' # optional -- if the build is external, use this to specify who is sending the job - DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO - condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() - continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false - -steps: - - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' - displayName: ${{ parameters.DisplayNamePrefix }} (Windows) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} - - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/${{ parameters.HelixProjectPath }} /restore /p:TreatWarningsAsErrors=false ${{ parameters.HelixProjectArguments }} /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog - displayName: ${{ parameters.DisplayNamePrefix }} (Unix) - env: - BuildConfig: $(_BuildConfig) - HelixSource: ${{ parameters.HelixSource }} - HelixType: ${{ parameters.HelixType }} - HelixBuild: ${{ parameters.HelixBuild }} - HelixConfiguration: ${{ parameters.HelixConfiguration }} - HelixTargetQueues: ${{ parameters.HelixTargetQueues }} - HelixAccessToken: ${{ parameters.HelixAccessToken }} - HelixPreCommands: ${{ parameters.HelixPreCommands }} - HelixPostCommands: ${{ parameters.HelixPostCommands }} - WorkItemDirectory: ${{ parameters.WorkItemDirectory }} - WorkItemCommand: ${{ parameters.WorkItemCommand }} - WorkItemTimeout: ${{ parameters.WorkItemTimeout }} - CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} - XUnitProjects: ${{ parameters.XUnitProjects }} - XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} - XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} - XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} - XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} - IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} - DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} - DotNetCliVersion: ${{ parameters.DotNetCliVersion }} - WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} - HelixBaseUri: ${{ parameters.HelixBaseUri }} - Creator: ${{ parameters.Creator }} - SYSTEM_ACCESSTOKEN: $(System.AccessToken) - condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} diff --git a/src/arcade/eng/common/core-templates/variables/pool-providers.yml b/src/arcade/eng/common/core-templates/variables/pool-providers.yml deleted file mode 100644 index 41053d382a2..00000000000 --- a/src/arcade/eng/common/core-templates/variables/pool-providers.yml +++ /dev/null @@ -1,8 +0,0 @@ -parameters: - is1ESPipeline: false - -variables: - - ${{ if eq(parameters.is1ESPipeline, 'true') }}: - - template: /eng/common/templates-official/variables/pool-providers.yml - - ${{ else }}: - - template: /eng/common/templates/variables/pool-providers.yml \ No newline at end of file diff --git a/src/arcade/eng/common/cross/armel/tizen/tizen.patch b/src/arcade/eng/common/cross/armel/tizen/tizen.patch deleted file mode 100644 index ca7c7c1ff75..00000000000 --- a/src/arcade/eng/common/cross/armel/tizen/tizen.patch +++ /dev/null @@ -1,9 +0,0 @@ -diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so ---- a/usr/lib/libc.so 2016-12-30 23:00:08.284951863 +0900 -+++ b/usr/lib/libc.so 2016-12-30 23:00:32.140951815 +0900 -@@ -2,4 +2,4 @@ - Use the shared library, but some functions are only in - the static library, so try that secondarily. */ - OUTPUT_FORMAT(elf32-littlearm) --GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.3 ) ) -+GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux.so.3 ) ) diff --git a/src/arcade/eng/common/cross/riscv64/tizen/tizen.patch b/src/arcade/eng/common/cross/riscv64/tizen/tizen.patch deleted file mode 100644 index eb6d1c07470..00000000000 --- a/src/arcade/eng/common/cross/riscv64/tizen/tizen.patch +++ /dev/null @@ -1,9 +0,0 @@ -diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so ---- a/usr/lib64/libc.so 2016-12-30 23:00:08.284951863 +0900 -+++ b/usr/lib64/libc.so 2016-12-30 23:00:32.140951815 +0900 -@@ -2,4 +2,4 @@ - Use the shared library, but some functions are only in - the static library, so try that secondarily. */ - OUTPUT_FORMAT(elf64-littleriscv) --GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib64/ld-linux-riscv64-lp64d.so.1 ) ) -+GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux-riscv64-lp64d.so.1 ) ) diff --git a/src/arcade/eng/common/cross/tizen-build-rootfs.sh b/src/arcade/eng/common/cross/tizen-build-rootfs.sh deleted file mode 100644 index ba31c93285f..00000000000 --- a/src/arcade/eng/common/cross/tizen-build-rootfs.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env bash -set -e - -ARCH=$1 -LINK_ARCH=$ARCH - -case "$ARCH" in - arm) - TIZEN_ARCH="armv7hl" - ;; - armel) - TIZEN_ARCH="armv7l" - LINK_ARCH="arm" - ;; - arm64) - TIZEN_ARCH="aarch64" - ;; - x86) - TIZEN_ARCH="i686" - ;; - x64) - TIZEN_ARCH="x86_64" - LINK_ARCH="x86" - ;; - riscv64) - TIZEN_ARCH="riscv64" - LINK_ARCH="riscv" - ;; - *) - echo "Unsupported architecture for tizen: $ARCH" - exit 1 -esac - -__CrossDir=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) -__TIZEN_CROSSDIR="$__CrossDir/${ARCH}/tizen" - -if [[ -z "$ROOTFS_DIR" ]]; then - echo "ROOTFS_DIR is not defined." - exit 1; -fi - -TIZEN_TMP_DIR=$ROOTFS_DIR/tizen_tmp -mkdir -p $TIZEN_TMP_DIR - -# Download files -echo ">>Start downloading files" -VERBOSE=1 $__CrossDir/tizen-fetch.sh $TIZEN_TMP_DIR $TIZEN_ARCH -echo "<>Start constructing Tizen rootfs" -TIZEN_RPM_FILES=`ls $TIZEN_TMP_DIR/*.rpm` -cd $ROOTFS_DIR -for f in $TIZEN_RPM_FILES; do - rpm2cpio $f | cpio -idm --quiet -done -echo "<>Start configuring Tizen rootfs" -ln -sfn asm-${LINK_ARCH} ./usr/include/asm -patch -p1 < $__TIZEN_CROSSDIR/tizen.patch -if [[ "$TIZEN_ARCH" == "riscv64" ]]; then - echo "Fixing broken symlinks in $PWD" - rm ./usr/lib64/libresolv.so - ln -s ../../lib64/libresolv.so.2 ./usr/lib64/libresolv.so - rm ./usr/lib64/libpthread.so - ln -s ../../lib64/libpthread.so.0 ./usr/lib64/libpthread.so - rm ./usr/lib64/libdl.so - ln -s ../../lib64/libdl.so.2 ./usr/lib64/libdl.so - rm ./usr/lib64/libutil.so - ln -s ../../lib64/libutil.so.1 ./usr/lib64/libutil.so - rm ./usr/lib64/libm.so - ln -s ../../lib64/libm.so.6 ./usr/lib64/libm.so - rm ./usr/lib64/librt.so - ln -s ../../lib64/librt.so.1 ./usr/lib64/librt.so - rm ./lib/ld-linux-riscv64-lp64d.so.1 - ln -s ../lib64/ld-linux-riscv64-lp64d.so.1 ./lib/ld-linux-riscv64-lp64d.so.1 -fi -echo "< 0 ]]; do - opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")" - case "$opt" in - --darcversion) - darcVersion=$2 - shift - ;; - --versionendpoint) - versionEndpoint=$2 - shift - ;; - --verbosity) - verbosity=$2 - shift - ;; - --toolpath) - toolpath=$2 - shift - ;; - *) - echo "Invalid argument: $1" - usage - exit 1 - ;; - esac - - shift -done - -# resolve $source until the file is no longer a symlink -while [[ -h "$source" ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. "$scriptroot/tools.sh" - -if [ -z "$darcVersion" ]; then - darcVersion=$(curl -X GET "$versionEndpoint" -H "accept: text/plain") -fi - -function InstallDarcCli { - local darc_cli_package_name="microsoft.dotnet.darc" - - InitializeDotNetCli true - local dotnet_root=$_InitializeDotNetCli - - if [ -z "$toolpath" ]; then - local tool_list=$($dotnet_root/dotnet tool list -g) - if [[ $tool_list = *$darc_cli_package_name* ]]; then - echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name -g) - fi - else - local tool_list=$($dotnet_root/dotnet tool list --tool-path "$toolpath") - if [[ $tool_list = *$darc_cli_package_name* ]]; then - echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name --tool-path "$toolpath") - fi - fi - - local arcadeServicesSource="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" - - echo "Installing Darc CLI version $darcVersion..." - echo "You may need to restart your command shell if this is the first dotnet tool you have installed." - if [ -z "$toolpath" ]; then - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g) - else - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath") - fi -} - -InstallDarcCli diff --git a/src/arcade/eng/common/dotnet-install.cmd b/src/arcade/eng/common/dotnet-install.cmd deleted file mode 100644 index b1c2642e76f..00000000000 --- a/src/arcade/eng/common/dotnet-install.cmd +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0dotnet-install.ps1""" %*" \ No newline at end of file diff --git a/src/arcade/eng/common/dotnet-install.ps1 b/src/arcade/eng/common/dotnet-install.ps1 deleted file mode 100644 index 811f0f717f7..00000000000 --- a/src/arcade/eng/common/dotnet-install.ps1 +++ /dev/null @@ -1,28 +0,0 @@ -[CmdletBinding(PositionalBinding=$false)] -Param( - [string] $verbosity = 'minimal', - [string] $architecture = '', - [string] $version = 'Latest', - [string] $runtime = 'dotnet', - [string] $RuntimeSourceFeed = '', - [string] $RuntimeSourceFeedKey = '' -) - -. $PSScriptRoot\tools.ps1 - -$dotnetRoot = Join-Path $RepoRoot '.dotnet' - -$installdir = $dotnetRoot -try { - if ($architecture -and $architecture.Trim() -eq 'x86') { - $installdir = Join-Path $installdir 'x86' - } - InstallDotNet $installdir $version $architecture $runtime $true -RuntimeSourceFeed $RuntimeSourceFeed -RuntimeSourceFeedKey $RuntimeSourceFeedKey -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'InitializeToolset' -Message $_ - ExitWithExitCode 1 -} - -ExitWithExitCode 0 diff --git a/src/arcade/eng/common/dotnet-install.sh b/src/arcade/eng/common/dotnet-install.sh deleted file mode 100644 index 7b9d97e3bd4..00000000000 --- a/src/arcade/eng/common/dotnet-install.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" -# resolve $source until the file is no longer a symlink -while [[ -h "$source" ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. "$scriptroot/tools.sh" - -version='Latest' -architecture='' -runtime='dotnet' -runtimeSourceFeed='' -runtimeSourceFeedKey='' -while [[ $# > 0 ]]; do - opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")" - case "$opt" in - -version|-v) - shift - version="$1" - ;; - -architecture|-a) - shift - architecture="$1" - ;; - -runtime|-r) - shift - runtime="$1" - ;; - -runtimesourcefeed) - shift - runtimeSourceFeed="$1" - ;; - -runtimesourcefeedkey) - shift - runtimeSourceFeedKey="$1" - ;; - *) - Write-PipelineTelemetryError -Category 'Build' -Message "Invalid argument: $1" - exit 1 - ;; - esac - shift -done - -# Use uname to determine what the CPU is, see https://en.wikipedia.org/wiki/Uname#Examples -cpuname=$(uname -m) -case $cpuname in - arm64|aarch64) - buildarch=arm64 - if [ "$(getconf LONG_BIT)" -lt 64 ]; then - # This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS) - buildarch=arm - fi - ;; - loongarch64) - buildarch=loongarch64 - ;; - amd64|x86_64) - buildarch=x64 - ;; - armv*l) - buildarch=arm - ;; - i[3-6]86) - buildarch=x86 - ;; - riscv64) - buildarch=riscv64 - ;; - *) - echo "Unknown CPU $cpuname detected, treating it as x64" - buildarch=x64 - ;; -esac - -dotnetRoot="${repo_root}.dotnet" -if [[ $architecture != "" ]] && [[ $architecture != $buildarch ]]; then - dotnetRoot="$dotnetRoot/$architecture" -fi - -InstallDotNet "$dotnetRoot" $version "$architecture" $runtime true $runtimeSourceFeed $runtimeSourceFeedKey || { - local exit_code=$? - Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "dotnet-install.sh failed (exit code '$exit_code')." >&2 - ExitWithExitCode $exit_code -} - -ExitWithExitCode 0 diff --git a/src/arcade/eng/common/enable-cross-org-publishing.ps1 b/src/arcade/eng/common/enable-cross-org-publishing.ps1 deleted file mode 100644 index da09da4f1fc..00000000000 --- a/src/arcade/eng/common/enable-cross-org-publishing.ps1 +++ /dev/null @@ -1,13 +0,0 @@ -param( - [string] $token -) - - -. $PSScriptRoot\pipeline-logging-functions.ps1 - -# Write-PipelineSetVariable will no-op if a variable named $ci is not defined -# Since this script is only ever called in AzDO builds, just universally set it -$ci = $true - -Write-PipelineSetVariable -Name 'VSS_NUGET_ACCESSTOKEN' -Value $token -IsMultiJobVariable $false -Write-PipelineSetVariable -Name 'VSS_NUGET_URI_PREFIXES' -Value 'https://dnceng.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/dnceng/;https://devdiv.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/devdiv/' -IsMultiJobVariable $false diff --git a/src/arcade/eng/common/generate-locproject.ps1 b/src/arcade/eng/common/generate-locproject.ps1 deleted file mode 100644 index 524aaa57f2b..00000000000 --- a/src/arcade/eng/common/generate-locproject.ps1 +++ /dev/null @@ -1,189 +0,0 @@ -Param( - [Parameter(Mandatory=$true)][string] $SourcesDirectory, # Directory where source files live; if using a Localize directory it should live in here - [string] $LanguageSet = 'VS_Main_Languages', # Language set to be used in the LocProject.json - [switch] $UseCheckedInLocProjectJson, # When set, generates a LocProject.json and compares it to one that already exists in the repo; otherwise just generates one - [switch] $CreateNeutralXlfs # Creates neutral xlf files. Only set to false when running locally -) - -# Generates LocProject.json files for the OneLocBuild task. OneLocBuildTask is described here: -# https://ceapex.visualstudio.com/CEINTL/_wiki/wikis/CEINTL.wiki/107/Localization-with-OneLocBuild-Task - -Set-StrictMode -Version 2.0 -$ErrorActionPreference = "Stop" -. $PSScriptRoot\pipeline-logging-functions.ps1 - -$exclusionsFilePath = "$SourcesDirectory\eng\Localize\LocExclusions.json" -$exclusions = @{ Exclusions = @() } -if (Test-Path -Path $exclusionsFilePath) -{ - $exclusions = Get-Content "$exclusionsFilePath" | ConvertFrom-Json -} - -Push-Location "$SourcesDirectory" # push location for Resolve-Path -Relative to work - -# Template files -$jsonFiles = @() -$jsonTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\.template\.config\\localize\\.+\.en\.json" } # .NET templating pattern -$jsonTemplateFiles | ForEach-Object { - $null = $_.Name -Match "(.+)\.[\w-]+\.json" # matches '[filename].[langcode].json - - $destinationFile = "$($_.Directory.FullName)\$($Matches.1).json" - $jsonFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru -} - -$jsonWinformsTemplateFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\\strings\.json" } # current winforms pattern - -$wxlFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\.+\.wxl" -And -Not( $_.Directory.Name -Match "\d{4}" ) } # localized files live in four digit lang ID directories; this excludes them -if (-not $wxlFiles) { - $wxlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "\\1033\\.+\.wxl" } # pick up en files (1033 = en) specifically so we can copy them to use as the neutral xlf files - if ($wxlEnFiles) { - $wxlFiles = @() - $wxlEnFiles | ForEach-Object { - $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)" - $wxlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru - } - } -} - -$macosHtmlEnFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory" | Where-Object { $_.FullName -Match "en\.lproj\\.+\.html$" } # add installer HTML files -$macosHtmlFiles = @() -if ($macosHtmlEnFiles) { - $macosHtmlEnFiles | ForEach-Object { - $destinationFile = "$($_.Directory.Parent.FullName)\$($_.Name)" - $macosHtmlFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru - } -} - -$xlfFiles = @() - -$allXlfFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory\*\*.xlf" -$langXlfFiles = @() -if ($allXlfFiles) { - $null = $allXlfFiles[0].FullName -Match "\.([\w-]+)\.xlf" # matches '[langcode].xlf' - $firstLangCode = $Matches.1 - $langXlfFiles = Get-ChildItem -Recurse -Path "$SourcesDirectory\*\*.$firstLangCode.xlf" -} -$langXlfFiles | ForEach-Object { - $null = $_.Name -Match "(.+)\.[\w-]+\.xlf" # matches '[filename].[langcode].xlf - - $destinationFile = "$($_.Directory.FullName)\$($Matches.1).xlf" - $xlfFiles += Copy-Item "$($_.FullName)" -Destination $destinationFile -PassThru -} - -$locFiles = $jsonFiles + $jsonWinformsTemplateFiles + $xlfFiles - -$locJson = @{ - Projects = @( - @{ - LanguageSet = $LanguageSet - LocItems = @( - $locFiles | ForEach-Object { - $outputPath = "$(($_.DirectoryName | Resolve-Path -Relative) + "\")" - $continue = $true - foreach ($exclusion in $exclusions.Exclusions) { - if ($_.FullName.Contains($exclusion)) - { - $continue = $false - } - } - $sourceFile = ($_.FullName | Resolve-Path -Relative) - if (!$CreateNeutralXlfs -and $_.Extension -eq '.xlf') { - Remove-Item -Path $sourceFile - } - if ($continue) - { - if ($_.Directory.Name -eq 'en' -and $_.Extension -eq '.json') { - return @{ - SourceFile = $sourceFile - CopyOption = "LangIDOnPath" - OutputPath = "$($_.Directory.Parent.FullName | Resolve-Path -Relative)\" - } - } else { - return @{ - SourceFile = $sourceFile - CopyOption = "LangIDOnName" - OutputPath = $outputPath - } - } - } - } - ) - }, - @{ - LanguageSet = $LanguageSet - CloneLanguageSet = "WiX_CloneLanguages" - LssFiles = @( "wxl_loc.lss" ) - LocItems = @( - $wxlFiles | ForEach-Object { - $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\" - $continue = $true - foreach ($exclusion in $exclusions.Exclusions) { - if ($_.FullName.Contains($exclusion)) { - $continue = $false - } - } - $sourceFile = ($_.FullName | Resolve-Path -Relative) - if ($continue) - { - return @{ - SourceFile = $sourceFile - CopyOption = "LangIDOnPath" - OutputPath = $outputPath - } - } - } - ) - }, - @{ - LanguageSet = $LanguageSet - CloneLanguageSet = "VS_macOS_CloneLanguages" - LssFiles = @( ".\eng\common\loc\P22DotNetHtmlLocalization.lss" ) - LocItems = @( - $macosHtmlFiles | ForEach-Object { - $outputPath = "$($_.Directory.FullName | Resolve-Path -Relative)\" - $continue = $true - foreach ($exclusion in $exclusions.Exclusions) { - if ($_.FullName.Contains($exclusion)) { - $continue = $false - } - } - $sourceFile = ($_.FullName | Resolve-Path -Relative) - $lciFile = $sourceFile + ".lci" - if ($continue) { - $result = @{ - SourceFile = $sourceFile - CopyOption = "LangIDOnPath" - OutputPath = $outputPath - } - if (Test-Path $lciFile -PathType Leaf) { - $result["LciFile"] = $lciFile - } - return $result - } - } - ) - } - ) -} - -$json = ConvertTo-Json $locJson -Depth 5 -Write-Host "LocProject.json generated:`n`n$json`n`n" -Pop-Location - -if (!$UseCheckedInLocProjectJson) { - New-Item "$SourcesDirectory\eng\Localize\LocProject.json" -Force # Need this to make sure the Localize directory is created - Set-Content "$SourcesDirectory\eng\Localize\LocProject.json" $json -} -else { - New-Item "$SourcesDirectory\eng\Localize\LocProject-generated.json" -Force # Need this to make sure the Localize directory is created - Set-Content "$SourcesDirectory\eng\Localize\LocProject-generated.json" $json - - if ((Get-FileHash "$SourcesDirectory\eng\Localize\LocProject-generated.json").Hash -ne (Get-FileHash "$SourcesDirectory\eng\Localize\LocProject.json").Hash) { - Write-PipelineTelemetryError -Category "OneLocBuild" -Message "Existing LocProject.json differs from generated LocProject.json. Download LocProject-generated.json and compare them." - - exit 1 - } - else { - Write-Host "Generated LocProject.json and current LocProject.json are identical." - } -} diff --git a/src/arcade/eng/common/generate-sbom-prep.ps1 b/src/arcade/eng/common/generate-sbom-prep.ps1 deleted file mode 100644 index a0c7d792a76..00000000000 --- a/src/arcade/eng/common/generate-sbom-prep.ps1 +++ /dev/null @@ -1,29 +0,0 @@ -Param( - [Parameter(Mandatory=$true)][string] $ManifestDirPath # Manifest directory where sbom will be placed -) - -. $PSScriptRoot\pipeline-logging-functions.ps1 - -# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly -# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. -$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" -$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_' -$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName - -Write-Host "Artifact name before : $ArtifactName" -Write-Host "Artifact name after : $SafeArtifactName" - -Write-Host "Creating dir $ManifestDirPath" - -# create directory for sbom manifest to be placed -if (!(Test-Path -path $SbomGenerationDir)) -{ - New-Item -ItemType Directory -path $SbomGenerationDir - Write-Host "Successfully created directory $SbomGenerationDir" -} -else{ - Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." -} - -Write-Host "Updating artifact name" -Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName" diff --git a/src/arcade/eng/common/generate-sbom-prep.sh b/src/arcade/eng/common/generate-sbom-prep.sh deleted file mode 100644 index b8ecca72bbf..00000000000 --- a/src/arcade/eng/common/generate-sbom-prep.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" - -# resolve $SOURCE until the file is no longer a symlink -while [[ -h $source ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" -. $scriptroot/pipeline-logging-functions.sh - - -# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts. -artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM" -safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}" -manifest_dir=$1 - -# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly -# with their own overwriting ours. So we create it as a sub directory of the requested manifest path. -sbom_generation_dir="$manifest_dir/$safe_artifact_name" - -if [ ! -d "$sbom_generation_dir" ] ; then - mkdir -p "$sbom_generation_dir" - echo "Sbom directory created." $sbom_generation_dir -else - Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder." -fi - -echo "Artifact name before : "$artifact_name -echo "Artifact name after : "$safe_artifact_name -export ARTIFACT_NAME=$safe_artifact_name -echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name" - -exit 0 diff --git a/src/arcade/eng/common/helixpublish.proj b/src/arcade/eng/common/helixpublish.proj deleted file mode 100644 index c1323bf4121..00000000000 --- a/src/arcade/eng/common/helixpublish.proj +++ /dev/null @@ -1,27 +0,0 @@ - - - - - msbuild - - - - - %(Identity) - - - - - - $(WorkItemDirectory) - $(WorkItemCommand) - $(WorkItemTimeout) - - - - - - - - - diff --git a/src/arcade/eng/common/init-tools-native.cmd b/src/arcade/eng/common/init-tools-native.cmd deleted file mode 100644 index 438cd548c45..00000000000 --- a/src/arcade/eng/common/init-tools-native.cmd +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -powershell -NoProfile -NoLogo -ExecutionPolicy ByPass -command "& """%~dp0init-tools-native.ps1""" %*" -exit /b %ErrorLevel% \ No newline at end of file diff --git a/src/arcade/eng/common/init-tools-native.ps1 b/src/arcade/eng/common/init-tools-native.ps1 deleted file mode 100644 index 27ccdb9ecc9..00000000000 --- a/src/arcade/eng/common/init-tools-native.ps1 +++ /dev/null @@ -1,203 +0,0 @@ -<# -.SYNOPSIS -Entry point script for installing native tools - -.DESCRIPTION -Reads $RepoRoot\global.json file to determine native assets to install -and executes installers for those tools - -.PARAMETER BaseUri -Base file directory or Url from which to acquire tool archives - -.PARAMETER InstallDirectory -Directory to install native toolset. This is a command-line override for the default -Install directory precedence order: -- InstallDirectory command-line override -- NETCOREENG_INSTALL_DIRECTORY environment variable -- (default) %USERPROFILE%/.netcoreeng/native - -.PARAMETER Clean -Switch specifying to not install anything, but cleanup native asset folders - -.PARAMETER Force -Clean and then install tools - -.PARAMETER DownloadRetries -Total number of retry attempts - -.PARAMETER RetryWaitTimeInSeconds -Wait time between retry attempts in seconds - -.PARAMETER GlobalJsonFile -File path to global.json file - -.PARAMETER PathPromotion -Optional switch to enable either promote native tools specified in the global.json to the path (in Azure Pipelines) -or break the build if a native tool is not found on the path (on a local dev machine) - -.NOTES -#> -[CmdletBinding(PositionalBinding=$false)] -Param ( - [string] $BaseUri = 'https://netcorenativeassets.blob.core.windows.net/resource-packages/external', - [string] $InstallDirectory, - [switch] $Clean = $False, - [switch] $Force = $False, - [int] $DownloadRetries = 5, - [int] $RetryWaitTimeInSeconds = 30, - [string] $GlobalJsonFile, - [switch] $PathPromotion -) - -if (!$GlobalJsonFile) { - $GlobalJsonFile = Join-Path (Get-Item $PSScriptRoot).Parent.Parent.FullName 'global.json' -} - -Set-StrictMode -version 2.0 -$ErrorActionPreference='Stop' - -. $PSScriptRoot\pipeline-logging-functions.ps1 -Import-Module -Name (Join-Path $PSScriptRoot 'native\CommonLibrary.psm1') - -try { - # Define verbose switch if undefined - $Verbose = $VerbosePreference -Eq 'Continue' - - $EngCommonBaseDir = Join-Path $PSScriptRoot 'native\' - $NativeBaseDir = $InstallDirectory - if (!$NativeBaseDir) { - $NativeBaseDir = CommonLibrary\Get-NativeInstallDirectory - } - $Env:CommonLibrary_NativeInstallDir = $NativeBaseDir - $InstallBin = Join-Path $NativeBaseDir 'bin' - $InstallerPath = Join-Path $EngCommonBaseDir 'install-tool.ps1' - - # Process tools list - Write-Host "Processing $GlobalJsonFile" - If (-Not (Test-Path $GlobalJsonFile)) { - Write-Host "Unable to find '$GlobalJsonFile'" - exit 0 - } - $NativeTools = Get-Content($GlobalJsonFile) -Raw | - ConvertFrom-Json | - Select-Object -Expand 'native-tools' -ErrorAction SilentlyContinue - if ($NativeTools) { - if ($PathPromotion -eq $True) { - $ArcadeToolsDirectory = "$env:SYSTEMDRIVE\arcade-tools" - if (Test-Path $ArcadeToolsDirectory) { # if this directory exists, we should use native tools on machine - $NativeTools.PSObject.Properties | ForEach-Object { - $ToolName = $_.Name - $ToolVersion = $_.Value - $InstalledTools = @{} - - if ((Get-Command "$ToolName" -ErrorAction SilentlyContinue) -eq $null) { - if ($ToolVersion -eq "latest") { - $ToolVersion = "" - } - $ToolDirectories = (Get-ChildItem -Path "$ArcadeToolsDirectory" -Filter "$ToolName-$ToolVersion*" | Sort-Object -Descending) - if ($ToolDirectories -eq $null) { - Write-Error "Unable to find directory for $ToolName $ToolVersion; please make sure the tool is installed on this image." - exit 1 - } - $ToolDirectory = $ToolDirectories[0] - $BinPathFile = "$($ToolDirectory.FullName)\binpath.txt" - if (-not (Test-Path -Path "$BinPathFile")) { - Write-Error "Unable to find binpath.txt in '$($ToolDirectory.FullName)' ($ToolName $ToolVersion); artifact is either installed incorrectly or is not a bootstrappable tool." - exit 1 - } - $BinPath = Get-Content "$BinPathFile" - $ToolPath = Convert-Path -Path $BinPath - Write-Host "Adding $ToolName to the path ($ToolPath)..." - Write-Host "##vso[task.prependpath]$ToolPath" - $env:PATH = "$ToolPath;$env:PATH" - $InstalledTools += @{ $ToolName = $ToolDirectory.FullName } - } - } - return $InstalledTools - } else { - $NativeTools.PSObject.Properties | ForEach-Object { - $ToolName = $_.Name - $ToolVersion = $_.Value - - if ((Get-Command "$ToolName" -ErrorAction SilentlyContinue) -eq $null) { - Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "$ToolName not found on path. Please install $ToolName $ToolVersion before proceeding." - Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "If this is running on a build machine, the arcade-tools directory was not found, which means there's an error with the image." - } - } - exit 0 - } - } else { - $NativeTools.PSObject.Properties | ForEach-Object { - $ToolName = $_.Name - $ToolVersion = $_.Value - $LocalInstallerArguments = @{ ToolName = "$ToolName" } - $LocalInstallerArguments += @{ InstallPath = "$InstallBin" } - $LocalInstallerArguments += @{ BaseUri = "$BaseUri" } - $LocalInstallerArguments += @{ CommonLibraryDirectory = "$EngCommonBaseDir" } - $LocalInstallerArguments += @{ Version = "$ToolVersion" } - - if ($Verbose) { - $LocalInstallerArguments += @{ Verbose = $True } - } - if (Get-Variable 'Force' -ErrorAction 'SilentlyContinue') { - if($Force) { - $LocalInstallerArguments += @{ Force = $True } - } - } - if ($Clean) { - $LocalInstallerArguments += @{ Clean = $True } - } - - Write-Verbose "Installing $ToolName version $ToolVersion" - Write-Verbose "Executing '$InstallerPath $($LocalInstallerArguments.Keys.ForEach({"-$_ '$($LocalInstallerArguments.$_)'"}) -join ' ')'" - & $InstallerPath @LocalInstallerArguments - if ($LASTEXITCODE -Ne "0") { - $errMsg = "$ToolName installation failed" - if ((Get-Variable 'DoNotAbortNativeToolsInstallationOnFailure' -ErrorAction 'SilentlyContinue') -and $DoNotAbortNativeToolsInstallationOnFailure) { - $showNativeToolsWarning = $true - if ((Get-Variable 'DoNotDisplayNativeToolsInstallationWarnings' -ErrorAction 'SilentlyContinue') -and $DoNotDisplayNativeToolsInstallationWarnings) { - $showNativeToolsWarning = $false - } - if ($showNativeToolsWarning) { - Write-Warning $errMsg - } - $toolInstallationFailure = $true - } else { - # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482 - Write-Host $errMsg - exit 1 - } - } - } - - if ((Get-Variable 'toolInstallationFailure' -ErrorAction 'SilentlyContinue') -and $toolInstallationFailure) { - # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482 - Write-Host 'Native tools bootstrap failed' - exit 1 - } - } - } - else { - Write-Host 'No native tools defined in global.json' - exit 0 - } - - if ($Clean) { - exit 0 - } - if (Test-Path $InstallBin) { - Write-Host 'Native tools are available from ' (Convert-Path -Path $InstallBin) - Write-Host "##vso[task.prependpath]$(Convert-Path -Path $InstallBin)" - return $InstallBin - } - elseif (-not ($PathPromotion)) { - Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message 'Native tools install directory does not exist, installation failed' - exit 1 - } - exit 0 -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message $_ - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/init-tools-native.sh b/src/arcade/eng/common/init-tools-native.sh deleted file mode 100644 index 3e6a8d6acf2..00000000000 --- a/src/arcade/eng/common/init-tools-native.sh +++ /dev/null @@ -1,238 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -base_uri='https://netcorenativeassets.blob.core.windows.net/resource-packages/external' -install_directory='' -clean=false -force=false -download_retries=5 -retry_wait_time_seconds=30 -global_json_file="$(dirname "$(dirname "${scriptroot}")")/global.json" -declare -a native_assets - -. $scriptroot/pipeline-logging-functions.sh -. $scriptroot/native/common-library.sh - -while (($# > 0)); do - lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")" - case $lowerI in - --baseuri) - base_uri=$2 - shift 2 - ;; - --installdirectory) - install_directory=$2 - shift 2 - ;; - --clean) - clean=true - shift 1 - ;; - --force) - force=true - shift 1 - ;; - --donotabortonfailure) - donotabortonfailure=true - shift 1 - ;; - --donotdisplaywarnings) - donotdisplaywarnings=true - shift 1 - ;; - --downloadretries) - download_retries=$2 - shift 2 - ;; - --retrywaittimeseconds) - retry_wait_time_seconds=$2 - shift 2 - ;; - --help) - echo "Common settings:" - echo " --installdirectory Directory to install native toolset." - echo " This is a command-line override for the default" - echo " Install directory precedence order:" - echo " - InstallDirectory command-line override" - echo " - NETCOREENG_INSTALL_DIRECTORY environment variable" - echo " - (default) %USERPROFILE%/.netcoreeng/native" - echo "" - echo " --clean Switch specifying not to install anything, but cleanup native asset folders" - echo " --donotabortonfailure Switch specifiying whether to abort native tools installation on failure" - echo " --donotdisplaywarnings Switch specifiying whether to display warnings during native tools installation on failure" - echo " --force Clean and then install tools" - echo " --help Print help and exit" - echo "" - echo "Advanced settings:" - echo " --baseuri Base URI for where to download native tools from" - echo " --downloadretries Number of times a download should be attempted" - echo " --retrywaittimeseconds Wait time between download attempts" - echo "" - exit 0 - ;; - esac -done - -function ReadGlobalJsonNativeTools { - # happy path: we have a proper JSON parsing tool `jq(1)` in PATH! - if command -v jq &> /dev/null; then - - # jq: read each key/value pair under "native-tools" entry and emit: - # KEY="" VALUE="" - # followed by a null byte. - # - # bash: read line with null byte delimeter and push to array (for later `eval`uation). - - while IFS= read -rd '' line; do - native_assets+=("$line") - done < <(jq -r '. | - select(has("native-tools")) | - ."native-tools" | - keys[] as $k | - @sh "KEY=\($k) VALUE=\(.[$k])\u0000"' "$global_json_file") - - return - fi - - # Warning: falling back to manually parsing JSON, which is not recommended. - - # Following routine matches the output and escaping logic of jq(1)'s @sh formatter used above. - # It has been tested with several weird strings with escaped characters in entries (key and value) - # and results were compared with the output of jq(1) in binary representation using xxd(1); - # just before the assignment to 'native_assets' array (above and below). - - # try to capture the section under "native-tools". - if [[ ! "$(cat "$global_json_file")" =~ \"native-tools\"[[:space:]\:\{]*([^\}]+) ]]; then - return - fi - - section="${BASH_REMATCH[1]}" - - parseStarted=0 - possibleEnd=0 - escaping=0 - escaped=0 - isKey=1 - - for (( i=0; i<${#section}; i++ )); do - char="${section:$i:1}" - if ! ((parseStarted)) && [[ "$char" =~ [[:space:],:] ]]; then continue; fi - - if ! ((escaping)) && [[ "$char" == "\\" ]]; then - escaping=1 - elif ((escaping)) && ! ((escaped)); then - escaped=1 - fi - - if ! ((parseStarted)) && [[ "$char" == "\"" ]]; then - parseStarted=1 - possibleEnd=0 - elif [[ "$char" == "'" ]]; then - token="$token'\\\''" - possibleEnd=0 - elif ((escaping)) || [[ "$char" != "\"" ]]; then - token="$token$char" - possibleEnd=1 - fi - - if ((possibleEnd)) && ! ((escaping)) && [[ "$char" == "\"" ]]; then - # Use printf to unescape token to match jq(1)'s @sh formatting rules. - # do not use 'token="$(printf "$token")"' syntax, as $() eats the trailing linefeed. - printf -v token "'$token'" - - if ((isKey)); then - KEY="$token" - isKey=0 - else - line="KEY=$KEY VALUE=$token" - native_assets+=("$line") - isKey=1 - fi - - # reset for next token - parseStarted=0 - token= - elif ((escaping)) && ((escaped)); then - escaping=0 - escaped=0 - fi - done -} - -native_base_dir=$install_directory -if [[ -z $install_directory ]]; then - native_base_dir=$(GetNativeInstallDirectory) -fi - -install_bin="${native_base_dir}/bin" -installed_any=false - -ReadGlobalJsonNativeTools - -if [[ ${#native_assets[@]} -eq 0 ]]; then - echo "No native tools defined in global.json" - exit 0; -else - native_installer_dir="$scriptroot/native" - for index in "${!native_assets[@]}"; do - eval "${native_assets["$index"]}" - - installer_path="$native_installer_dir/install-$KEY.sh" - installer_command="$installer_path" - installer_command+=" --baseuri $base_uri" - installer_command+=" --installpath $install_bin" - installer_command+=" --version $VALUE" - echo $installer_command - - if [[ $force = true ]]; then - installer_command+=" --force" - fi - - if [[ $clean = true ]]; then - installer_command+=" --clean" - fi - - if [[ -a $installer_path ]]; then - $installer_command - if [[ $? != 0 ]]; then - if [[ $donotabortonfailure = true ]]; then - if [[ $donotdisplaywarnings != true ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Execution Failed" - fi - else - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Execution Failed" - exit 1 - fi - else - $installed_any = true - fi - else - if [[ $donotabortonfailure == true ]]; then - if [[ $donotdisplaywarnings != true ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Execution Failed: no install script" - fi - else - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Execution Failed: no install script" - exit 1 - fi - fi - done -fi - -if [[ $clean = true ]]; then - exit 0 -fi - -if [[ -d $install_bin ]]; then - echo "Native tools are available from $install_bin" - echo "##vso[task.prependpath]$install_bin" -else - if [[ $installed_any = true ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Native tools install directory does not exist, installation failed" - exit 1 - fi -fi - -exit 0 diff --git a/src/arcade/eng/common/internal-feed-operations.ps1 b/src/arcade/eng/common/internal-feed-operations.ps1 deleted file mode 100644 index 92b77347d99..00000000000 --- a/src/arcade/eng/common/internal-feed-operations.ps1 +++ /dev/null @@ -1,132 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $Operation, - [string] $AuthToken, - [string] $CommitSha, - [string] $RepoName, - [switch] $IsFeedPrivate -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 -. $PSScriptRoot\tools.ps1 - -# Sets VSS_NUGET_EXTERNAL_FEED_ENDPOINTS based on the "darc-int-*" feeds defined in NuGet.config. This is needed -# in build agents by CredProvider to authenticate the restore requests to internal feeds as specified in -# https://github.com/microsoft/artifacts-credprovider/blob/0f53327cd12fd893d8627d7b08a2171bf5852a41/README.md#environment-variables. This should ONLY be called from identified -# internal builds -function SetupCredProvider { - param( - [string] $AuthToken - ) - - # Install the Cred Provider NuGet plugin - Write-Host 'Setting up Cred Provider NuGet plugin in the agent...' - Write-Host "Getting 'installcredprovider.ps1' from 'https://github.com/microsoft/artifacts-credprovider'..." - - $url = 'https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.ps1' - - Write-Host "Writing the contents of 'installcredprovider.ps1' locally..." - Invoke-WebRequest $url -OutFile installcredprovider.ps1 - - Write-Host 'Installing plugin...' - .\installcredprovider.ps1 -Force - - Write-Host "Deleting local copy of 'installcredprovider.ps1'..." - Remove-Item .\installcredprovider.ps1 - - if (-Not("$env:USERPROFILE\.nuget\plugins\netcore")) { - Write-PipelineTelemetryError -Category 'Arcade' -Message 'CredProvider plugin was not installed correctly!' - ExitWithExitCode 1 - } - else { - Write-Host 'CredProvider plugin was installed correctly!' - } - - # Then, we set the 'VSS_NUGET_EXTERNAL_FEED_ENDPOINTS' environment variable to restore from the stable - # feeds successfully - - $nugetConfigPath = Join-Path $RepoRoot "NuGet.config" - - if (-Not (Test-Path -Path $nugetConfigPath)) { - Write-PipelineTelemetryError -Category 'Build' -Message 'NuGet.config file not found in repo root!' - ExitWithExitCode 1 - } - - $endpoints = New-Object System.Collections.ArrayList - $nugetConfigPackageSources = Select-Xml -Path $nugetConfigPath -XPath "//packageSources/add[contains(@key, 'darc-int-')]/@value" | foreach{$_.Node.Value} - - if (($nugetConfigPackageSources | Measure-Object).Count -gt 0 ) { - foreach ($stableRestoreResource in $nugetConfigPackageSources) { - $trimmedResource = ([string]$stableRestoreResource).Trim() - [void]$endpoints.Add(@{endpoint="$trimmedResource"; password="$AuthToken"}) - } - } - - if (($endpoints | Measure-Object).Count -gt 0) { - $endpointCredentials = @{endpointCredentials=$endpoints} | ConvertTo-Json -Compress - - # Create the environment variables the AzDo way - Write-LoggingCommand -Area 'task' -Event 'setvariable' -Data $endpointCredentials -Properties @{ - 'variable' = 'VSS_NUGET_EXTERNAL_FEED_ENDPOINTS' - 'issecret' = 'false' - } - - # We don't want sessions cached since we will be updating the endpoints quite frequently - Write-LoggingCommand -Area 'task' -Event 'setvariable' -Data 'False' -Properties @{ - 'variable' = 'NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED' - 'issecret' = 'false' - } - } - else - { - Write-Host 'No internal endpoints found in NuGet.config' - } -} - -#Workaround for https://github.com/microsoft/msbuild/issues/4430 -function InstallDotNetSdkAndRestoreArcade { - $dotnetTempDir = Join-Path $RepoRoot "dotnet" - $dotnetSdkVersion="2.1.507" # After experimentation we know this version works when restoring the SDK (compared to 3.0.*) - $dotnet = "$dotnetTempDir\dotnet.exe" - $restoreProjPath = "$PSScriptRoot\restore.proj" - - Write-Host "Installing dotnet SDK version $dotnetSdkVersion to restore Arcade SDK..." - InstallDotNetSdk "$dotnetTempDir" "$dotnetSdkVersion" - - '' | Out-File "$restoreProjPath" - - & $dotnet restore $restoreProjPath - - Write-Host 'Arcade SDK restored!' - - if (Test-Path -Path $restoreProjPath) { - Remove-Item $restoreProjPath - } - - if (Test-Path -Path $dotnetTempDir) { - Remove-Item $dotnetTempDir -Recurse - } -} - -try { - Push-Location $PSScriptRoot - - if ($Operation -like 'setup') { - SetupCredProvider $AuthToken - } - elseif ($Operation -like 'install-restore') { - InstallDotNetSdkAndRestoreArcade - } - else { - Write-PipelineTelemetryError -Category 'Arcade' -Message "Unknown operation '$Operation'!" - ExitWithExitCode 1 - } -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'Arcade' -Message $_ - ExitWithExitCode 1 -} -finally { - Pop-Location -} diff --git a/src/arcade/eng/common/internal-feed-operations.sh b/src/arcade/eng/common/internal-feed-operations.sh deleted file mode 100644 index 9378223ba09..00000000000 --- a/src/arcade/eng/common/internal-feed-operations.sh +++ /dev/null @@ -1,141 +0,0 @@ -#!/usr/bin/env bash - -set -e - -# Sets VSS_NUGET_EXTERNAL_FEED_ENDPOINTS based on the "darc-int-*" feeds defined in NuGet.config. This is needed -# in build agents by CredProvider to authenticate the restore requests to internal feeds as specified in -# https://github.com/microsoft/artifacts-credprovider/blob/0f53327cd12fd893d8627d7b08a2171bf5852a41/README.md#environment-variables. -# This should ONLY be called from identified internal builds -function SetupCredProvider { - local authToken=$1 - - # Install the Cred Provider NuGet plugin - echo "Setting up Cred Provider NuGet plugin in the agent..."... - echo "Getting 'installcredprovider.ps1' from 'https://github.com/microsoft/artifacts-credprovider'..." - - local url="https://raw.githubusercontent.com/microsoft/artifacts-credprovider/master/helpers/installcredprovider.sh" - - echo "Writing the contents of 'installcredprovider.ps1' locally..." - local installcredproviderPath="installcredprovider.sh" - if command -v curl > /dev/null; then - curl $url > "$installcredproviderPath" - else - wget -q -O "$installcredproviderPath" "$url" - fi - - echo "Installing plugin..." - . "$installcredproviderPath" - - echo "Deleting local copy of 'installcredprovider.sh'..." - rm installcredprovider.sh - - if [ ! -d "$HOME/.nuget/plugins" ]; then - Write-PipelineTelemetryError -category 'Build' 'CredProvider plugin was not installed correctly!' - ExitWithExitCode 1 - else - echo "CredProvider plugin was installed correctly!" - fi - - # Then, we set the 'VSS_NUGET_EXTERNAL_FEED_ENDPOINTS' environment variable to restore from the stable - # feeds successfully - - local nugetConfigPath="{$repo_root}NuGet.config" - - if [ ! "$nugetConfigPath" ]; then - Write-PipelineTelemetryError -category 'Build' "NuGet.config file not found in repo's root!" - ExitWithExitCode 1 - fi - - local endpoints='[' - local nugetConfigPackageValues=`cat "$nugetConfigPath" | grep "key=\"darc-int-"` - local pattern="value=\"(.*)\"" - - for value in $nugetConfigPackageValues - do - if [[ $value =~ $pattern ]]; then - local endpoint="${BASH_REMATCH[1]}" - endpoints+="{\"endpoint\": \"$endpoint\", \"password\": \"$authToken\"}," - fi - done - - endpoints=${endpoints%?} - endpoints+=']' - - if [ ${#endpoints} -gt 2 ]; then - local endpointCredentials="{\"endpointCredentials\": "$endpoints"}" - - echo "##vso[task.setvariable variable=VSS_NUGET_EXTERNAL_FEED_ENDPOINTS]$endpointCredentials" - echo "##vso[task.setvariable variable=NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED]False" - else - echo "No internal endpoints found in NuGet.config" - fi -} - -# Workaround for https://github.com/microsoft/msbuild/issues/4430 -function InstallDotNetSdkAndRestoreArcade { - local dotnetTempDir="$repo_root/dotnet" - local dotnetSdkVersion="2.1.507" # After experimentation we know this version works when restoring the SDK (compared to 3.0.*) - local restoreProjPath="$repo_root/eng/common/restore.proj" - - echo "Installing dotnet SDK version $dotnetSdkVersion to restore Arcade SDK..." - echo "" > "$restoreProjPath" - - InstallDotNetSdk "$dotnetTempDir" "$dotnetSdkVersion" - - local res=`$dotnetTempDir/dotnet restore $restoreProjPath` - echo "Arcade SDK restored!" - - # Cleanup - if [ "$restoreProjPath" ]; then - rm "$restoreProjPath" - fi - - if [ "$dotnetTempDir" ]; then - rm -r $dotnetTempDir - fi -} - -source="${BASH_SOURCE[0]}" -operation='' -authToken='' -repoName='' - -while [[ $# > 0 ]]; do - opt="$(echo "$1" | tr "[:upper:]" "[:lower:]")" - case "$opt" in - --operation) - operation=$2 - shift - ;; - --authtoken) - authToken=$2 - shift - ;; - *) - echo "Invalid argument: $1" - usage - exit 1 - ;; - esac - - shift -done - -while [[ -h "$source" ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. "$scriptroot/tools.sh" - -if [ "$operation" = "setup" ]; then - SetupCredProvider $authToken -elif [ "$operation" = "install-restore" ]; then - InstallDotNetSdkAndRestoreArcade -else - echo "Unknown operation '$operation'!" -fi diff --git a/src/arcade/eng/common/internal/Directory.Build.props b/src/arcade/eng/common/internal/Directory.Build.props deleted file mode 100644 index f1d041c33da..00000000000 --- a/src/arcade/eng/common/internal/Directory.Build.props +++ /dev/null @@ -1,11 +0,0 @@ - - - - - false - false - - - - - diff --git a/src/arcade/eng/common/internal/NuGet.config b/src/arcade/eng/common/internal/NuGet.config deleted file mode 100644 index 19d3d311b16..00000000000 --- a/src/arcade/eng/common/internal/NuGet.config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/arcade/eng/common/internal/Tools.csproj b/src/arcade/eng/common/internal/Tools.csproj deleted file mode 100644 index feaa6d20812..00000000000 --- a/src/arcade/eng/common/internal/Tools.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - - net472 - false - false - - - - - - - - - - - - - - - diff --git a/src/arcade/eng/common/loc/P22DotNetHtmlLocalization.lss b/src/arcade/eng/common/loc/P22DotNetHtmlLocalization.lss deleted file mode 100644 index 5d892d61939..00000000000 --- a/src/arcade/eng/common/loc/P22DotNetHtmlLocalization.lss +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/arcade/eng/common/msbuild.ps1 b/src/arcade/eng/common/msbuild.ps1 deleted file mode 100644 index f041e5ddd95..00000000000 --- a/src/arcade/eng/common/msbuild.ps1 +++ /dev/null @@ -1,28 +0,0 @@ -[CmdletBinding(PositionalBinding=$false)] -Param( - [string] $verbosity = 'minimal', - [bool] $warnAsError = $true, - [bool] $nodeReuse = $true, - [switch] $ci, - [switch] $prepareMachine, - [switch] $excludePrereleaseVS, - [string] $msbuildEngine = $null, - [Parameter(ValueFromRemainingArguments=$true)][String[]]$extraArgs -) - -. $PSScriptRoot\tools.ps1 - -try { - if ($ci) { - $nodeReuse = $false - } - - MSBuild @extraArgs -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'Build' -Message $_ - ExitWithExitCode 1 -} - -ExitWithExitCode 0 \ No newline at end of file diff --git a/src/arcade/eng/common/msbuild.sh b/src/arcade/eng/common/msbuild.sh deleted file mode 100644 index 20d3dad5435..00000000000 --- a/src/arcade/eng/common/msbuild.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" - -# resolve $source until the file is no longer a symlink -while [[ -h "$source" ]]; do - scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - source="$(readlink "$source")" - # if $source was a relative symlink, we need to resolve it relative to the path where the - # symlink file was located - [[ $source != /* ]] && source="$scriptroot/$source" -done -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -verbosity='minimal' -warn_as_error=true -node_reuse=true -prepare_machine=false -extra_args='' - -while (($# > 0)); do - lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")" - case $lowerI in - --verbosity) - verbosity=$2 - shift 2 - ;; - --warnaserror) - warn_as_error=$2 - shift 2 - ;; - --nodereuse) - node_reuse=$2 - shift 2 - ;; - --ci) - ci=true - shift 1 - ;; - --preparemachine) - prepare_machine=true - shift 1 - ;; - *) - extra_args="$extra_args $1" - shift 1 - ;; - esac -done - -. "$scriptroot/tools.sh" - -if [[ "$ci" == true ]]; then - node_reuse=false -fi - -MSBuild $extra_args -ExitWithExitCode 0 diff --git a/src/arcade/eng/common/native/CommonLibrary.psm1 b/src/arcade/eng/common/native/CommonLibrary.psm1 deleted file mode 100644 index f71f6af6cdb..00000000000 --- a/src/arcade/eng/common/native/CommonLibrary.psm1 +++ /dev/null @@ -1,401 +0,0 @@ -<# -.SYNOPSIS -Helper module to install an archive to a directory - -.DESCRIPTION -Helper module to download and extract an archive to a specified directory - -.PARAMETER Uri -Uri of artifact to download - -.PARAMETER InstallDirectory -Directory to extract artifact contents to - -.PARAMETER Force -Force download / extraction if file or contents already exist. Default = False - -.PARAMETER DownloadRetries -Total number of retry attempts. Default = 5 - -.PARAMETER RetryWaitTimeInSeconds -Wait time between retry attempts in seconds. Default = 30 - -.NOTES -Returns False if download or extraction fail, True otherwise -#> -function DownloadAndExtract { - [CmdletBinding(PositionalBinding=$false)] - Param ( - [Parameter(Mandatory=$True)] - [string] $Uri, - [Parameter(Mandatory=$True)] - [string] $InstallDirectory, - [switch] $Force = $False, - [int] $DownloadRetries = 5, - [int] $RetryWaitTimeInSeconds = 30 - ) - # Define verbose switch if undefined - $Verbose = $VerbosePreference -Eq "Continue" - - $TempToolPath = CommonLibrary\Get-TempPathFilename -Path $Uri - - # Download native tool - $DownloadStatus = CommonLibrary\Get-File -Uri $Uri ` - -Path $TempToolPath ` - -DownloadRetries $DownloadRetries ` - -RetryWaitTimeInSeconds $RetryWaitTimeInSeconds ` - -Force:$Force ` - -Verbose:$Verbose - - if ($DownloadStatus -Eq $False) { - Write-Error "Download failed from $Uri" - return $False - } - - # Extract native tool - $UnzipStatus = CommonLibrary\Expand-Zip -ZipPath $TempToolPath ` - -OutputDirectory $InstallDirectory ` - -Force:$Force ` - -Verbose:$Verbose - - if ($UnzipStatus -Eq $False) { - # Retry Download one more time with Force=true - $DownloadRetryStatus = CommonLibrary\Get-File -Uri $Uri ` - -Path $TempToolPath ` - -DownloadRetries 1 ` - -RetryWaitTimeInSeconds $RetryWaitTimeInSeconds ` - -Force:$True ` - -Verbose:$Verbose - - if ($DownloadRetryStatus -Eq $False) { - Write-Error "Last attempt of download failed as well" - return $False - } - - # Retry unzip again one more time with Force=true - $UnzipRetryStatus = CommonLibrary\Expand-Zip -ZipPath $TempToolPath ` - -OutputDirectory $InstallDirectory ` - -Force:$True ` - -Verbose:$Verbose - if ($UnzipRetryStatus -Eq $False) - { - Write-Error "Last attempt of unzip failed as well" - # Clean up partial zips and extracts - if (Test-Path $TempToolPath) { - Remove-Item $TempToolPath -Force - } - if (Test-Path $InstallDirectory) { - Remove-Item $InstallDirectory -Force -Recurse - } - return $False - } - } - - return $True -} - -<# -.SYNOPSIS -Download a file, retry on failure - -.DESCRIPTION -Download specified file and retry if attempt fails - -.PARAMETER Uri -Uri of file to download. If Uri is a local path, the file will be copied instead of downloaded - -.PARAMETER Path -Path to download or copy uri file to - -.PARAMETER Force -Overwrite existing file if present. Default = False - -.PARAMETER DownloadRetries -Total number of retry attempts. Default = 5 - -.PARAMETER RetryWaitTimeInSeconds -Wait time between retry attempts in seconds Default = 30 - -#> -function Get-File { - [CmdletBinding(PositionalBinding=$false)] - Param ( - [Parameter(Mandatory=$True)] - [string] $Uri, - [Parameter(Mandatory=$True)] - [string] $Path, - [int] $DownloadRetries = 5, - [int] $RetryWaitTimeInSeconds = 30, - [switch] $Force = $False - ) - $Attempt = 0 - - if ($Force) { - if (Test-Path $Path) { - Remove-Item $Path -Force - } - } - if (Test-Path $Path) { - Write-Host "File '$Path' already exists, skipping download" - return $True - } - - $DownloadDirectory = Split-Path -ErrorAction Ignore -Path "$Path" -Parent - if (-Not (Test-Path $DownloadDirectory)) { - New-Item -path $DownloadDirectory -force -itemType "Directory" | Out-Null - } - - $TempPath = "$Path.tmp" - if (Test-Path -IsValid -Path $Uri) { - Write-Verbose "'$Uri' is a file path, copying temporarily to '$TempPath'" - Copy-Item -Path $Uri -Destination $TempPath - Write-Verbose "Moving temporary file to '$Path'" - Move-Item -Path $TempPath -Destination $Path - return $? - } - else { - Write-Verbose "Downloading $Uri" - # Don't display the console progress UI - it's a huge perf hit - $ProgressPreference = 'SilentlyContinue' - while($Attempt -Lt $DownloadRetries) - { - try { - Invoke-WebRequest -UseBasicParsing -Uri $Uri -OutFile $TempPath - Write-Verbose "Downloaded to temporary location '$TempPath'" - Move-Item -Path $TempPath -Destination $Path - Write-Verbose "Moved temporary file to '$Path'" - return $True - } - catch { - $Attempt++ - if ($Attempt -Lt $DownloadRetries) { - $AttemptsLeft = $DownloadRetries - $Attempt - Write-Warning "Download failed, $AttemptsLeft attempts remaining, will retry in $RetryWaitTimeInSeconds seconds" - Start-Sleep -Seconds $RetryWaitTimeInSeconds - } - else { - Write-Error $_ - Write-Error $_.Exception - } - } - } - } - - return $False -} - -<# -.SYNOPSIS -Generate a shim for a native tool - -.DESCRIPTION -Creates a wrapper script (shim) that passes arguments forward to native tool assembly - -.PARAMETER ShimName -The name of the shim - -.PARAMETER ShimDirectory -The directory where shims are stored - -.PARAMETER ToolFilePath -Path to file that shim forwards to - -.PARAMETER Force -Replace shim if already present. Default = False - -.NOTES -Returns $True if generating shim succeeds, $False otherwise -#> -function New-ScriptShim { - [CmdletBinding(PositionalBinding=$false)] - Param ( - [Parameter(Mandatory=$True)] - [string] $ShimName, - [Parameter(Mandatory=$True)] - [string] $ShimDirectory, - [Parameter(Mandatory=$True)] - [string] $ToolFilePath, - [Parameter(Mandatory=$True)] - [string] $BaseUri, - [switch] $Force - ) - try { - Write-Verbose "Generating '$ShimName' shim" - - if (-Not (Test-Path $ToolFilePath)){ - Write-Error "Specified tool file path '$ToolFilePath' does not exist" - return $False - } - - # WinShimmer is a small .NET Framework program that creates .exe shims to bootstrapped programs - # Many of the checks for installed programs expect a .exe extension for Windows tools, rather - # than a .bat or .cmd file. - # Source: https://github.com/dotnet/arcade/tree/master/src/WinShimmer - if (-Not (Test-Path "$ShimDirectory\WinShimmer\winshimmer.exe")) { - $InstallStatus = DownloadAndExtract -Uri "$BaseUri/windows/winshimmer/WinShimmer.zip" ` - -InstallDirectory $ShimDirectory\WinShimmer ` - -Force:$Force ` - -DownloadRetries 2 ` - -RetryWaitTimeInSeconds 5 ` - -Verbose:$Verbose - } - - if ((Test-Path (Join-Path $ShimDirectory "$ShimName.exe"))) { - Write-Host "$ShimName.exe already exists; replacing..." - Remove-Item (Join-Path $ShimDirectory "$ShimName.exe") - } - - & "$ShimDirectory\WinShimmer\winshimmer.exe" $ShimName $ToolFilePath $ShimDirectory - return $True - } - catch { - Write-Host $_ - Write-Host $_.Exception - return $False - } -} - -<# -.SYNOPSIS -Returns the machine architecture of the host machine - -.NOTES -Returns 'x64' on 64 bit machines - Returns 'x86' on 32 bit machines -#> -function Get-MachineArchitecture { - $ProcessorArchitecture = $Env:PROCESSOR_ARCHITECTURE - $ProcessorArchitectureW6432 = $Env:PROCESSOR_ARCHITEW6432 - if($ProcessorArchitecture -Eq "X86") - { - if(($ProcessorArchitectureW6432 -Eq "") -Or - ($ProcessorArchitectureW6432 -Eq "X86")) { - return "x86" - } - $ProcessorArchitecture = $ProcessorArchitectureW6432 - } - if (($ProcessorArchitecture -Eq "AMD64") -Or - ($ProcessorArchitecture -Eq "IA64") -Or - ($ProcessorArchitecture -Eq "ARM64") -Or - ($ProcessorArchitecture -Eq "LOONGARCH64") -Or - ($ProcessorArchitecture -Eq "RISCV64")) { - return "x64" - } - return "x86" -} - -<# -.SYNOPSIS -Get the name of a temporary folder under the native install directory -#> -function Get-TempDirectory { - return Join-Path (Get-NativeInstallDirectory) "temp/" -} - -function Get-TempPathFilename { - [CmdletBinding(PositionalBinding=$false)] - Param ( - [Parameter(Mandatory=$True)] - [string] $Path - ) - $TempDir = CommonLibrary\Get-TempDirectory - $TempFilename = Split-Path $Path -leaf - $TempPath = Join-Path $TempDir $TempFilename - return $TempPath -} - -<# -.SYNOPSIS -Returns the base directory to use for native tool installation - -.NOTES -Returns the value of the NETCOREENG_INSTALL_DIRECTORY if that environment variable -is set, or otherwise returns an install directory under the %USERPROFILE% -#> -function Get-NativeInstallDirectory { - $InstallDir = $Env:NETCOREENG_INSTALL_DIRECTORY - if (!$InstallDir) { - $InstallDir = Join-Path $Env:USERPROFILE ".netcoreeng/native/" - } - return $InstallDir -} - -<# -.SYNOPSIS -Unzip an archive - -.DESCRIPTION -Powershell module to unzip an archive to a specified directory - -.PARAMETER ZipPath (Required) -Path to archive to unzip - -.PARAMETER OutputDirectory (Required) -Output directory for archive contents - -.PARAMETER Force -Overwrite output directory contents if they already exist - -.NOTES -- Returns True and does not perform an extraction if output directory already exists but Overwrite is not True. -- Returns True if unzip operation is successful -- Returns False if Overwrite is True and it is unable to remove contents of OutputDirectory -- Returns False if unable to extract zip archive -#> -function Expand-Zip { - [CmdletBinding(PositionalBinding=$false)] - Param ( - [Parameter(Mandatory=$True)] - [string] $ZipPath, - [Parameter(Mandatory=$True)] - [string] $OutputDirectory, - [switch] $Force - ) - - Write-Verbose "Extracting '$ZipPath' to '$OutputDirectory'" - try { - if ((Test-Path $OutputDirectory) -And (-Not $Force)) { - Write-Host "Directory '$OutputDirectory' already exists, skipping extract" - return $True - } - if (Test-Path $OutputDirectory) { - Write-Verbose "'Force' is 'True', but '$OutputDirectory' exists, removing directory" - Remove-Item $OutputDirectory -Force -Recurse - if ($? -Eq $False) { - Write-Error "Unable to remove '$OutputDirectory'" - return $False - } - } - - $TempOutputDirectory = Join-Path "$(Split-Path -Parent $OutputDirectory)" "$(Split-Path -Leaf $OutputDirectory).tmp" - if (Test-Path $TempOutputDirectory) { - Remove-Item $TempOutputDirectory -Force -Recurse - } - New-Item -Path $TempOutputDirectory -Force -ItemType "Directory" | Out-Null - - Add-Type -assembly "system.io.compression.filesystem" - [io.compression.zipfile]::ExtractToDirectory("$ZipPath", "$TempOutputDirectory") - if ($? -Eq $False) { - Write-Error "Unable to extract '$ZipPath'" - return $False - } - - Move-Item -Path $TempOutputDirectory -Destination $OutputDirectory - } - catch { - Write-Host $_ - Write-Host $_.Exception - - return $False - } - return $True -} - -export-modulemember -function DownloadAndExtract -export-modulemember -function Expand-Zip -export-modulemember -function Get-File -export-modulemember -function Get-MachineArchitecture -export-modulemember -function Get-NativeInstallDirectory -export-modulemember -function Get-TempDirectory -export-modulemember -function Get-TempPathFilename -export-modulemember -function New-ScriptShim diff --git a/src/arcade/eng/common/native/common-library.sh b/src/arcade/eng/common/native/common-library.sh deleted file mode 100644 index 080c2c283ae..00000000000 --- a/src/arcade/eng/common/native/common-library.sh +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env bash - -function GetNativeInstallDirectory { - local install_dir - - if [[ -z $NETCOREENG_INSTALL_DIRECTORY ]]; then - install_dir=$HOME/.netcoreeng/native/ - else - install_dir=$NETCOREENG_INSTALL_DIRECTORY - fi - - echo $install_dir - return 0 -} - -function GetTempDirectory { - - echo $(GetNativeInstallDirectory)temp/ - return 0 -} - -function ExpandZip { - local zip_path=$1 - local output_directory=$2 - local force=${3:-false} - - echo "Extracting $zip_path to $output_directory" - if [[ -d $output_directory ]] && [[ $force = false ]]; then - echo "Directory '$output_directory' already exists, skipping extract" - return 0 - fi - - if [[ -d $output_directory ]]; then - echo "'Force flag enabled, but '$output_directory' exists. Removing directory" - rm -rf $output_directory - if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Unable to remove '$output_directory'" - return 1 - fi - fi - - echo "Creating directory: '$output_directory'" - mkdir -p $output_directory - - echo "Extracting archive" - tar -xf $zip_path -C $output_directory - if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Unable to extract '$zip_path'" - return 1 - fi - - return 0 -} - -function GetCurrentOS { - local unameOut="$(uname -s)" - case $unameOut in - Linux*) echo "Linux";; - Darwin*) echo "MacOS";; - esac - return 0 -} - -function GetFile { - local uri=$1 - local path=$2 - local force=${3:-false} - local download_retries=${4:-5} - local retry_wait_time_seconds=${5:-30} - - if [[ -f $path ]]; then - if [[ $force = false ]]; then - echo "File '$path' already exists. Skipping download" - return 0 - else - rm -rf $path - fi - fi - - if [[ -f $uri ]]; then - echo "'$uri' is a file path, copying file to '$path'" - cp $uri $path - return $? - fi - - echo "Downloading $uri" - # Use curl if available, otherwise use wget - if command -v curl > /dev/null; then - curl "$uri" -sSL --retry $download_retries --retry-delay $retry_wait_time_seconds --create-dirs -o "$path" --fail - else - wget -q -O "$path" "$uri" --tries="$download_retries" - fi - - return $? -} - -function GetTempPathFileName { - local path=$1 - - local temp_dir=$(GetTempDirectory) - local temp_file_name=$(basename $path) - echo $temp_dir$temp_file_name - return 0 -} - -function DownloadAndExtract { - local uri=$1 - local installDir=$2 - local force=${3:-false} - local download_retries=${4:-5} - local retry_wait_time_seconds=${5:-30} - - local temp_tool_path=$(GetTempPathFileName $uri) - - echo "downloading to: $temp_tool_path" - - # Download file - GetFile "$uri" "$temp_tool_path" $force $download_retries $retry_wait_time_seconds - if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Failed to download '$uri' to '$temp_tool_path'." - return 1 - fi - - # Extract File - echo "extracting from $temp_tool_path to $installDir" - ExpandZip "$temp_tool_path" "$installDir" $force $download_retries $retry_wait_time_seconds - if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Failed to extract '$temp_tool_path' to '$installDir'." - return 1 - fi - - return 0 -} - -function NewScriptShim { - local shimpath=$1 - local tool_file_path=$2 - local force=${3:-false} - - echo "Generating '$shimpath' shim" - if [[ -f $shimpath ]]; then - if [[ $force = false ]]; then - echo "File '$shimpath' already exists." >&2 - return 1 - else - rm -rf $shimpath - fi - fi - - if [[ ! -f $tool_file_path ]]; then - # try to see if the path is lower cased - tool_file_path="$(echo $tool_file_path | tr "[:upper:]" "[:lower:]")" - if [[ ! -f $tool_file_path ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Specified tool file path:'$tool_file_path' does not exist" - return 1 - fi - fi - - local shim_contents=$'#!/usr/bin/env bash\n' - shim_contents+="SHIMARGS="$'$1\n' - shim_contents+="$tool_file_path"$' $SHIMARGS\n' - - # Write shim file - echo "$shim_contents" > $shimpath - - chmod +x $shimpath - - echo "Finished generating shim '$shimpath'" - - return $? -} - diff --git a/src/arcade/eng/common/native/init-compiler.sh b/src/arcade/eng/common/native/init-compiler.sh deleted file mode 100644 index 9a0e1f2b456..00000000000 --- a/src/arcade/eng/common/native/init-compiler.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/sh -# -# This file detects the C/C++ compiler and exports it to the CC/CXX environment variables -# -# NOTE: some scripts source this file and rely on stdout being empty, make sure -# to not output *anything* here, unless it is an error message that fails the -# build. - -if [ -z "$build_arch" ] || [ -z "$compiler" ]; then - echo "Usage..." - echo "build_arch= compiler= init-compiler.sh" - echo "Specify the target architecture." - echo "Specify the name of compiler (clang or gcc)." - exit 1 -fi - -case "$compiler" in - clang*|-clang*|--clang*) - # clangx.y or clang-x.y - version="$(echo "$compiler" | tr -d '[:alpha:]-=')" - majorVersion="${version%%.*}" - - # LLVM based on v18 released in early 2024, with two releases per year - maxVersion="$((18 + ((($(date +%Y) - 2024) * 12 + $(date +%-m) - 3) / 6)))" - compiler=clang - ;; - - gcc*|-gcc*|--gcc*) - # gccx.y or gcc-x.y - version="$(echo "$compiler" | tr -d '[:alpha:]-=')" - majorVersion="${version%%.*}" - - # GCC based on v14 released in early 2024, with one release per year - maxVersion="$((14 + ((($(date +%Y) - 2024) * 12 + $(date +%-m) - 3) / 12)))" - compiler=gcc - ;; -esac - -cxxCompiler="$compiler++" - -# clear the existing CC and CXX from environment -CC= -CXX= -LDFLAGS= - -if [ "$compiler" = "gcc" ]; then cxxCompiler="g++"; fi - -check_version_exists() { - desired_version=-1 - - # Set up the environment to be used for building with the desired compiler. - if command -v "$compiler-$1" > /dev/null; then - desired_version="-$1" - elif command -v "$compiler$1" > /dev/null; then - desired_version="$1" - fi - - echo "$desired_version" -} - -__baseOS="$(uname)" -set_compiler_version_from_CC() { - if [ "$__baseOS" = "Darwin" ]; then - # On Darwin, the versions from -version/-dumpversion refer to Xcode - # versions, not llvm versions, so we can't rely on them. - return - fi - - version="$("$CC" -dumpversion)" - if [ -z "$version" ]; then - echo "Error: $CC -dumpversion didn't provide a version" - exit 1 - fi - - # gcc and clang often display 3 part versions. However, gcc can show only 1 part in some environments. - IFS=. read -r majorVersion _ < /dev/null; then - echo "Error: No compatible version of $compiler was found within the range of $minVersion to $maxVersion. Please upgrade your toolchain or specify the compiler explicitly using CLR_CC and CLR_CXX environment variables." - exit 1 - fi - - CC="$(command -v "$compiler" 2> /dev/null)" - CXX="$(command -v "$cxxCompiler" 2> /dev/null)" - set_compiler_version_from_CC - fi - else - desired_version="$(check_version_exists "$majorVersion")" - if [ "$desired_version" = "-1" ]; then - echo "Error: Could not find specific version of $compiler: $majorVersion." - exit 1 - fi - fi - - if [ -z "$CC" ]; then - CC="$(command -v "$compiler$desired_version" 2> /dev/null)" - CXX="$(command -v "$cxxCompiler$desired_version" 2> /dev/null)" - if [ -z "$CXX" ]; then CXX="$(command -v "$cxxCompiler" 2> /dev/null)"; fi - set_compiler_version_from_CC - fi -else - if [ ! -f "$CLR_CC" ]; then - echo "Error: CLR_CC is set but path '$CLR_CC' does not exist" - exit 1 - fi - CC="$CLR_CC" - CXX="$CLR_CXX" - set_compiler_version_from_CC -fi - -if [ -z "$CC" ]; then - echo "Error: Unable to find $compiler." - exit 1 -fi - -if [ "$__baseOS" != "Darwin" ]; then - # On Darwin, we always want to use the Apple linker. - - # Only lld version >= 9 can be considered stable. lld supports s390x starting from 18.0. - if [ "$compiler" = "clang" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -ge 9 ] && { [ "$build_arch" != "s390x" ] || [ "$majorVersion" -ge 18 ]; }; then - if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then - LDFLAGS="-fuse-ld=lld" - fi - fi -fi - -SCAN_BUILD_COMMAND="$(command -v "scan-build$desired_version" 2> /dev/null)" - -export CC CXX LDFLAGS SCAN_BUILD_COMMAND diff --git a/src/arcade/eng/common/native/init-distro-rid.sh b/src/arcade/eng/common/native/init-distro-rid.sh deleted file mode 100644 index 83ea7aab0e0..00000000000 --- a/src/arcade/eng/common/native/init-distro-rid.sh +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/sh - -# getNonPortableDistroRid -# -# Input: -# targetOs: (str) -# targetArch: (str) -# rootfsDir: (str) -# -# Return: -# non-portable rid -getNonPortableDistroRid() -{ - targetOs="$1" - targetArch="$2" - rootfsDir="$3" - nonPortableRid="" - - if [ "$targetOs" = "linux" ]; then - # shellcheck disable=SC1091 - if [ -e "${rootfsDir}/etc/os-release" ]; then - . "${rootfsDir}/etc/os-release" - if echo "${VERSION_ID:-}" | grep -qE '^([[:digit:]]|\.)+$'; then - nonPortableRid="${ID}.${VERSION_ID}-${targetArch}" - else - # Rolling release distros either do not set VERSION_ID, set it as blank or - # set it to non-version looking string (such as TEMPLATE_VERSION_ID on ArchLinux); - # so omit it here to be consistent with everything else. - nonPortableRid="${ID}-${targetArch}" - fi - elif [ -e "${rootfsDir}/android_platform" ]; then - # shellcheck disable=SC1091 - . "${rootfsDir}/android_platform" - nonPortableRid="$RID" - fi - fi - - if [ "$targetOs" = "freebsd" ]; then - # $rootfsDir can be empty. freebsd-version is a shell script and should always work. - __freebsd_major_version=$("$rootfsDir"/bin/freebsd-version | cut -d'.' -f1) - nonPortableRid="freebsd.$__freebsd_major_version-${targetArch}" - elif command -v getprop >/dev/null && getprop ro.product.system.model | grep -qi android; then - __android_sdk_version=$(getprop ro.build.version.sdk) - nonPortableRid="android.$__android_sdk_version-${targetArch}" - elif [ "$targetOs" = "illumos" ]; then - __uname_version=$(uname -v) - nonPortableRid="illumos-${targetArch}" - elif [ "$targetOs" = "solaris" ]; then - __uname_version=$(uname -v) - __solaris_major_version=$(echo "$__uname_version" | cut -d'.' -f1) - nonPortableRid="solaris.$__solaris_major_version-${targetArch}" - elif [ "$targetOs" = "haiku" ]; then - __uname_release="$(uname -r)" - nonPortableRid=haiku.r"$__uname_release"-"$targetArch" - fi - - echo "$nonPortableRid" | tr '[:upper:]' '[:lower:]' -} - -# initDistroRidGlobal -# -# Input: -# os: (str) -# arch: (str) -# rootfsDir?: (nullable:string) -# -# Return: -# None -# -# Notes: -# It is important to note that the function does not return anything, but it -# exports the following variables on success: -# __DistroRid : Non-portable rid of the target platform. -# __PortableTargetOS : OS-part of the portable rid that corresponds to the target platform. -initDistroRidGlobal() -{ - targetOs="$1" - targetArch="$2" - rootfsDir="" - if [ $# -ge 3 ]; then - rootfsDir="$3" - fi - - if [ -n "${rootfsDir}" ]; then - # We may have a cross build. Check for the existence of the rootfsDir - if [ ! -e "${rootfsDir}" ]; then - echo "Error: rootfsDir has been passed, but the location is not valid." - exit 1 - fi - fi - - __DistroRid=$(getNonPortableDistroRid "${targetOs}" "${targetArch}" "${rootfsDir}") - - if [ -z "${__PortableTargetOS:-}" ]; then - __PortableTargetOS="$targetOs" - - STRINGS="$(command -v strings || true)" - if [ -z "$STRINGS" ]; then - STRINGS="$(command -v llvm-strings || true)" - fi - - # Check for musl-based distros (e.g. Alpine Linux, Void Linux). - if "${rootfsDir}/usr/bin/ldd" --version 2>&1 | grep -q musl || - ( [ -n "$STRINGS" ] && "$STRINGS" "${rootfsDir}/usr/bin/ldd" 2>&1 | grep -q musl ); then - __PortableTargetOS="linux-musl" - fi - fi - - export __DistroRid __PortableTargetOS -} diff --git a/src/arcade/eng/common/native/init-os-and-arch.sh b/src/arcade/eng/common/native/init-os-and-arch.sh deleted file mode 100644 index 38921d4338f..00000000000 --- a/src/arcade/eng/common/native/init-os-and-arch.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/sh - -# Use uname to determine what the OS is. -OSName=$(uname -s | tr '[:upper:]' '[:lower:]') - -if command -v getprop && getprop ro.product.system.model 2>&1 | grep -qi android; then - OSName="android" -fi - -case "$OSName" in -freebsd|linux|netbsd|openbsd|sunos|android|haiku) - os="$OSName" ;; -darwin) - os=osx ;; -*) - echo "Unsupported OS $OSName detected!" - exit 1 ;; -esac - -# On Solaris, `uname -m` is discouraged, see https://docs.oracle.com/cd/E36784_01/html/E36870/uname-1.html -# and `uname -p` returns processor type (e.g. i386 on amd64). -# The appropriate tool to determine CPU is isainfo(1) https://docs.oracle.com/cd/E36784_01/html/E36870/isainfo-1.html. -if [ "$os" = "sunos" ]; then - if uname -o 2>&1 | grep -q illumos; then - os="illumos" - else - os="solaris" - fi - CPUName=$(isainfo -n) -else - # For the rest of the operating systems, use uname(1) to determine what the CPU is. - CPUName=$(uname -m) -fi - -case "$CPUName" in - arm64|aarch64) - arch=arm64 - if [ "$(getconf LONG_BIT)" -lt 64 ]; then - # This is 32-bit OS running on 64-bit CPU (for example Raspberry Pi OS) - arch=arm - fi - ;; - - loongarch64) - arch=loongarch64 - ;; - - riscv64) - arch=riscv64 - ;; - - amd64|x86_64) - arch=x64 - ;; - - armv7l|armv8l) - # shellcheck disable=SC1091 - if (NAME=""; . /etc/os-release; test "$NAME" = "Tizen"); then - arch=armel - else - arch=arm - fi - ;; - - armv6l) - arch=armv6 - ;; - - i[3-6]86) - echo "Unsupported CPU $CPUName detected, build might not succeed!" - arch=x86 - ;; - - s390x) - arch=s390x - ;; - - ppc64le) - arch=ppc64le - ;; - *) - echo "Unknown CPU $CPUName detected!" - exit 1 - ;; -esac diff --git a/src/arcade/eng/common/native/install-cmake-test.sh b/src/arcade/eng/common/native/install-cmake-test.sh deleted file mode 100644 index 8a5e7cf0db5..00000000000 --- a/src/arcade/eng/common/native/install-cmake-test.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. $scriptroot/common-library.sh - -base_uri= -install_path= -version= -clean=false -force=false -download_retries=5 -retry_wait_time_seconds=30 - -while (($# > 0)); do - lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")" - case $lowerI in - --baseuri) - base_uri=$2 - shift 2 - ;; - --installpath) - install_path=$2 - shift 2 - ;; - --version) - version=$2 - shift 2 - ;; - --clean) - clean=true - shift 1 - ;; - --force) - force=true - shift 1 - ;; - --downloadretries) - download_retries=$2 - shift 2 - ;; - --retrywaittimeseconds) - retry_wait_time_seconds=$2 - shift 2 - ;; - --help) - echo "Common settings:" - echo " --baseuri Base file directory or Url wrom which to acquire tool archives" - echo " --installpath Base directory to install native tool to" - echo " --clean Don't install the tool, just clean up the current install of the tool" - echo " --force Force install of tools even if they previously exist" - echo " --help Print help and exit" - echo "" - echo "Advanced settings:" - echo " --downloadretries Total number of retry attempts" - echo " --retrywaittimeseconds Wait time between retry attempts in seconds" - echo "" - exit 0 - ;; - esac -done - -tool_name="cmake-test" -tool_os=$(GetCurrentOS) -tool_folder="$(echo $tool_os | tr "[:upper:]" "[:lower:]")" -tool_arch="x86_64" -tool_name_moniker="$tool_name-$version-$tool_os-$tool_arch" -tool_install_directory="$install_path/$tool_name/$version" -tool_file_path="$tool_install_directory/$tool_name_moniker/bin/$tool_name" -shim_path="$install_path/$tool_name.sh" -uri="${base_uri}/$tool_folder/$tool_name/$tool_name_moniker.tar.gz" - -# Clean up tool and installers -if [[ $clean = true ]]; then - echo "Cleaning $tool_install_directory" - if [[ -d $tool_install_directory ]]; then - rm -rf $tool_install_directory - fi - - echo "Cleaning $shim_path" - if [[ -f $shim_path ]]; then - rm -rf $shim_path - fi - - tool_temp_path=$(GetTempPathFileName $uri) - echo "Cleaning $tool_temp_path" - if [[ -f $tool_temp_path ]]; then - rm -rf $tool_temp_path - fi - - exit 0 -fi - -# Install tool -if [[ -f $tool_file_path ]] && [[ $force = false ]]; then - echo "$tool_name ($version) already exists, skipping install" - exit 0 -fi - -DownloadAndExtract $uri $tool_install_directory $force $download_retries $retry_wait_time_seconds - -if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Installation failed' - exit 1 -fi - -# Generate Shim -# Always rewrite shims so that we are referencing the expected version -NewScriptShim $shim_path $tool_file_path true - -if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Shim generation failed' - exit 1 -fi - -exit 0 diff --git a/src/arcade/eng/common/native/install-cmake.sh b/src/arcade/eng/common/native/install-cmake.sh deleted file mode 100644 index de496beebc5..00000000000 --- a/src/arcade/eng/common/native/install-cmake.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env bash - -source="${BASH_SOURCE[0]}" -scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" - -. $scriptroot/common-library.sh - -base_uri= -install_path= -version= -clean=false -force=false -download_retries=5 -retry_wait_time_seconds=30 - -while (($# > 0)); do - lowerI="$(echo $1 | tr "[:upper:]" "[:lower:]")" - case $lowerI in - --baseuri) - base_uri=$2 - shift 2 - ;; - --installpath) - install_path=$2 - shift 2 - ;; - --version) - version=$2 - shift 2 - ;; - --clean) - clean=true - shift 1 - ;; - --force) - force=true - shift 1 - ;; - --downloadretries) - download_retries=$2 - shift 2 - ;; - --retrywaittimeseconds) - retry_wait_time_seconds=$2 - shift 2 - ;; - --help) - echo "Common settings:" - echo " --baseuri Base file directory or Url wrom which to acquire tool archives" - echo " --installpath Base directory to install native tool to" - echo " --clean Don't install the tool, just clean up the current install of the tool" - echo " --force Force install of tools even if they previously exist" - echo " --help Print help and exit" - echo "" - echo "Advanced settings:" - echo " --downloadretries Total number of retry attempts" - echo " --retrywaittimeseconds Wait time between retry attempts in seconds" - echo "" - exit 0 - ;; - esac -done - -tool_name="cmake" -tool_os=$(GetCurrentOS) -tool_folder="$(echo $tool_os | tr "[:upper:]" "[:lower:]")" -tool_arch="x86_64" -tool_name_moniker="$tool_name-$version-$tool_os-$tool_arch" -tool_install_directory="$install_path/$tool_name/$version" -tool_file_path="$tool_install_directory/$tool_name_moniker/bin/$tool_name" -shim_path="$install_path/$tool_name.sh" -uri="${base_uri}/$tool_folder/$tool_name/$tool_name_moniker.tar.gz" - -# Clean up tool and installers -if [[ $clean = true ]]; then - echo "Cleaning $tool_install_directory" - if [[ -d $tool_install_directory ]]; then - rm -rf $tool_install_directory - fi - - echo "Cleaning $shim_path" - if [[ -f $shim_path ]]; then - rm -rf $shim_path - fi - - tool_temp_path=$(GetTempPathFileName $uri) - echo "Cleaning $tool_temp_path" - if [[ -f $tool_temp_path ]]; then - rm -rf $tool_temp_path - fi - - exit 0 -fi - -# Install tool -if [[ -f $tool_file_path ]] && [[ $force = false ]]; then - echo "$tool_name ($version) already exists, skipping install" - exit 0 -fi - -DownloadAndExtract $uri $tool_install_directory $force $download_retries $retry_wait_time_seconds - -if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Installation failed' - exit 1 -fi - -# Generate Shim -# Always rewrite shims so that we are referencing the expected version -NewScriptShim $shim_path $tool_file_path true - -if [[ $? != 0 ]]; then - Write-PipelineTelemetryError -category 'NativeToolsBootstrap' 'Shim generation failed' - exit 1 -fi - -exit 0 diff --git a/src/arcade/eng/common/native/install-tool.ps1 b/src/arcade/eng/common/native/install-tool.ps1 deleted file mode 100644 index 78f2d84a4e4..00000000000 --- a/src/arcade/eng/common/native/install-tool.ps1 +++ /dev/null @@ -1,132 +0,0 @@ -<# -.SYNOPSIS -Install native tool - -.DESCRIPTION -Install cmake native tool from Azure blob storage - -.PARAMETER InstallPath -Base directory to install native tool to - -.PARAMETER BaseUri -Base file directory or Url from which to acquire tool archives - -.PARAMETER CommonLibraryDirectory -Path to folder containing common library modules - -.PARAMETER Force -Force install of tools even if they previously exist - -.PARAMETER Clean -Don't install the tool, just clean up the current install of the tool - -.PARAMETER DownloadRetries -Total number of retry attempts - -.PARAMETER RetryWaitTimeInSeconds -Wait time between retry attempts in seconds - -.NOTES -Returns 0 if install succeeds, 1 otherwise -#> -[CmdletBinding(PositionalBinding=$false)] -Param ( - [Parameter(Mandatory=$True)] - [string] $ToolName, - [Parameter(Mandatory=$True)] - [string] $InstallPath, - [Parameter(Mandatory=$True)] - [string] $BaseUri, - [Parameter(Mandatory=$True)] - [string] $Version, - [string] $CommonLibraryDirectory = $PSScriptRoot, - [switch] $Force = $False, - [switch] $Clean = $False, - [int] $DownloadRetries = 5, - [int] $RetryWaitTimeInSeconds = 30 -) - -. $PSScriptRoot\..\pipeline-logging-functions.ps1 - -# Import common library modules -Import-Module -Name (Join-Path $CommonLibraryDirectory "CommonLibrary.psm1") - -try { - # Define verbose switch if undefined - $Verbose = $VerbosePreference -Eq "Continue" - - $Arch = CommonLibrary\Get-MachineArchitecture - $ToolOs = "win64" - if($Arch -Eq "x32") { - $ToolOs = "win32" - } - $ToolNameMoniker = "$ToolName-$Version-$ToolOs-$Arch" - $ToolInstallDirectory = Join-Path $InstallPath "$ToolName\$Version\" - $Uri = "$BaseUri/windows/$ToolName/$ToolNameMoniker.zip" - $ShimPath = Join-Path $InstallPath "$ToolName.exe" - - if ($Clean) { - Write-Host "Cleaning $ToolInstallDirectory" - if (Test-Path $ToolInstallDirectory) { - Remove-Item $ToolInstallDirectory -Force -Recurse - } - Write-Host "Cleaning $ShimPath" - if (Test-Path $ShimPath) { - Remove-Item $ShimPath -Force - } - $ToolTempPath = CommonLibrary\Get-TempPathFilename -Path $Uri - Write-Host "Cleaning $ToolTempPath" - if (Test-Path $ToolTempPath) { - Remove-Item $ToolTempPath -Force - } - exit 0 - } - - # Install tool - if ((Test-Path $ToolInstallDirectory) -And (-Not $Force)) { - Write-Verbose "$ToolName ($Version) already exists, skipping install" - } - else { - $InstallStatus = CommonLibrary\DownloadAndExtract -Uri $Uri ` - -InstallDirectory $ToolInstallDirectory ` - -Force:$Force ` - -DownloadRetries $DownloadRetries ` - -RetryWaitTimeInSeconds $RetryWaitTimeInSeconds ` - -Verbose:$Verbose - - if ($InstallStatus -Eq $False) { - Write-PipelineTelemetryError "Installation failed" -Category "NativeToolsetBootstrapping" - exit 1 - } - } - - $ToolFilePath = Get-ChildItem $ToolInstallDirectory -Recurse -Filter "$ToolName.exe" | % { $_.FullName } - if (@($ToolFilePath).Length -Gt 1) { - Write-Error "There are multiple copies of $ToolName in $($ToolInstallDirectory): `n$(@($ToolFilePath | out-string))" - exit 1 - } elseif (@($ToolFilePath).Length -Lt 1) { - Write-Host "$ToolName was not found in $ToolInstallDirectory." - exit 1 - } - - # Generate shim - # Always rewrite shims so that we are referencing the expected version - $GenerateShimStatus = CommonLibrary\New-ScriptShim -ShimName $ToolName ` - -ShimDirectory $InstallPath ` - -ToolFilePath "$ToolFilePath" ` - -BaseUri $BaseUri ` - -Force:$Force ` - -Verbose:$Verbose - - if ($GenerateShimStatus -Eq $False) { - Write-PipelineTelemetryError "Generate shim failed" -Category "NativeToolsetBootstrapping" - return 1 - } - - exit 0 -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category "NativeToolsetBootstrapping" -Message $_ - exit 1 -} diff --git a/src/arcade/eng/common/pipeline-logging-functions.ps1 b/src/arcade/eng/common/pipeline-logging-functions.ps1 deleted file mode 100644 index 8e422c561e4..00000000000 --- a/src/arcade/eng/common/pipeline-logging-functions.ps1 +++ /dev/null @@ -1,260 +0,0 @@ -# Source for this file was taken from https://github.com/microsoft/azure-pipelines-task-lib/blob/11c9439d4af17e6475d9fe058e6b2e03914d17e6/powershell/VstsTaskSdk/LoggingCommandFunctions.ps1 and modified. - -# NOTE: You should not be calling these method directly as they are likely to change. Instead you should be calling the Write-Pipeline* functions defined in tools.ps1 - -$script:loggingCommandPrefix = '##vso[' -$script:loggingCommandEscapeMappings = @( # TODO: WHAT ABOUT "="? WHAT ABOUT "%"? - New-Object psobject -Property @{ Token = ';' ; Replacement = '%3B' } - New-Object psobject -Property @{ Token = "`r" ; Replacement = '%0D' } - New-Object psobject -Property @{ Token = "`n" ; Replacement = '%0A' } - New-Object psobject -Property @{ Token = "]" ; Replacement = '%5D' } -) -# TODO: BUG: Escape % ??? -# TODO: Add test to verify don't need to escape "=". - -# Specify "-Force" to force pipeline formatted output even if "$ci" is false or not set -function Write-PipelineTelemetryError { - [CmdletBinding()] - param( - [Parameter(Mandatory = $true)] - [string]$Category, - [Parameter(Mandatory = $true)] - [string]$Message, - [Parameter(Mandatory = $false)] - [string]$Type = 'error', - [string]$ErrCode, - [string]$SourcePath, - [string]$LineNumber, - [string]$ColumnNumber, - [switch]$AsOutput, - [switch]$Force) - - $PSBoundParameters.Remove('Category') | Out-Null - - if ($Force -Or ((Test-Path variable:ci) -And $ci)) { - $Message = "(NETCORE_ENGINEERING_TELEMETRY=$Category) $Message" - } - $PSBoundParameters.Remove('Message') | Out-Null - $PSBoundParameters.Add('Message', $Message) - Write-PipelineTaskError @PSBoundParameters -} - -# Specify "-Force" to force pipeline formatted output even if "$ci" is false or not set -function Write-PipelineTaskError { - [CmdletBinding()] - param( - [Parameter(Mandatory = $true)] - [string]$Message, - [Parameter(Mandatory = $false)] - [string]$Type = 'error', - [string]$ErrCode, - [string]$SourcePath, - [string]$LineNumber, - [string]$ColumnNumber, - [switch]$AsOutput, - [switch]$Force - ) - - if (!$Force -And (-Not (Test-Path variable:ci) -Or !$ci)) { - if ($Type -eq 'error') { - Write-Host $Message -ForegroundColor Red - return - } - elseif ($Type -eq 'warning') { - Write-Host $Message -ForegroundColor Yellow - return - } - } - - if (($Type -ne 'error') -and ($Type -ne 'warning')) { - Write-Host $Message - return - } - $PSBoundParameters.Remove('Force') | Out-Null - if (-not $PSBoundParameters.ContainsKey('Type')) { - $PSBoundParameters.Add('Type', 'error') - } - Write-LogIssue @PSBoundParameters -} - -function Write-PipelineSetVariable { - [CmdletBinding()] - param( - [Parameter(Mandatory = $true)] - [string]$Name, - [string]$Value, - [switch]$Secret, - [switch]$AsOutput, - [bool]$IsMultiJobVariable = $true) - - if ((Test-Path variable:ci) -And $ci) { - Write-LoggingCommand -Area 'task' -Event 'setvariable' -Data $Value -Properties @{ - 'variable' = $Name - 'isSecret' = $Secret - 'isOutput' = $IsMultiJobVariable - } -AsOutput:$AsOutput - } -} - -function Write-PipelinePrependPath { - [CmdletBinding()] - param( - [Parameter(Mandatory = $true)] - [string]$Path, - [switch]$AsOutput) - - if ((Test-Path variable:ci) -And $ci) { - Write-LoggingCommand -Area 'task' -Event 'prependpath' -Data $Path -AsOutput:$AsOutput - } -} - -function Write-PipelineSetResult { - [CmdletBinding()] - param( - [ValidateSet("Succeeded", "SucceededWithIssues", "Failed", "Cancelled", "Skipped")] - [Parameter(Mandatory = $true)] - [string]$Result, - [string]$Message) - if ((Test-Path variable:ci) -And $ci) { - Write-LoggingCommand -Area 'task' -Event 'complete' -Data $Message -Properties @{ - 'result' = $Result - } - } -} - -<######################################## -# Private functions. -########################################> -function Format-LoggingCommandData { - [CmdletBinding()] - param([string]$Value, [switch]$Reverse) - - if (!$Value) { - return '' - } - - if (!$Reverse) { - foreach ($mapping in $script:loggingCommandEscapeMappings) { - $Value = $Value.Replace($mapping.Token, $mapping.Replacement) - } - } - else { - for ($i = $script:loggingCommandEscapeMappings.Length - 1 ; $i -ge 0 ; $i--) { - $mapping = $script:loggingCommandEscapeMappings[$i] - $Value = $Value.Replace($mapping.Replacement, $mapping.Token) - } - } - - return $Value -} - -function Format-LoggingCommand { - [CmdletBinding()] - param( - [Parameter(Mandatory = $true)] - [string]$Area, - [Parameter(Mandatory = $true)] - [string]$Event, - [string]$Data, - [hashtable]$Properties) - - # Append the preamble. - [System.Text.StringBuilder]$sb = New-Object -TypeName System.Text.StringBuilder - $null = $sb.Append($script:loggingCommandPrefix).Append($Area).Append('.').Append($Event) - - # Append the properties. - if ($Properties) { - $first = $true - foreach ($key in $Properties.Keys) { - [string]$value = Format-LoggingCommandData $Properties[$key] - if ($value) { - if ($first) { - $null = $sb.Append(' ') - $first = $false - } - else { - $null = $sb.Append(';') - } - - $null = $sb.Append("$key=$value") - } - } - } - - # Append the tail and output the value. - $Data = Format-LoggingCommandData $Data - $sb.Append(']').Append($Data).ToString() -} - -function Write-LoggingCommand { - [CmdletBinding(DefaultParameterSetName = 'Parameters')] - param( - [Parameter(Mandatory = $true, ParameterSetName = 'Parameters')] - [string]$Area, - [Parameter(Mandatory = $true, ParameterSetName = 'Parameters')] - [string]$Event, - [Parameter(ParameterSetName = 'Parameters')] - [string]$Data, - [Parameter(ParameterSetName = 'Parameters')] - [hashtable]$Properties, - [Parameter(Mandatory = $true, ParameterSetName = 'Object')] - $Command, - [switch]$AsOutput) - - if ($PSCmdlet.ParameterSetName -eq 'Object') { - Write-LoggingCommand -Area $Command.Area -Event $Command.Event -Data $Command.Data -Properties $Command.Properties -AsOutput:$AsOutput - return - } - - $command = Format-LoggingCommand -Area $Area -Event $Event -Data $Data -Properties $Properties - if ($AsOutput) { - $command - } - else { - Write-Host $command - } -} - -function Write-LogIssue { - [CmdletBinding()] - param( - [ValidateSet('warning', 'error')] - [Parameter(Mandatory = $true)] - [string]$Type, - [string]$Message, - [string]$ErrCode, - [string]$SourcePath, - [string]$LineNumber, - [string]$ColumnNumber, - [switch]$AsOutput) - - $command = Format-LoggingCommand -Area 'task' -Event 'logissue' -Data $Message -Properties @{ - 'type' = $Type - 'code' = $ErrCode - 'sourcepath' = $SourcePath - 'linenumber' = $LineNumber - 'columnnumber' = $ColumnNumber - } - if ($AsOutput) { - return $command - } - - if ($Type -eq 'error') { - $foregroundColor = $host.PrivateData.ErrorForegroundColor - $backgroundColor = $host.PrivateData.ErrorBackgroundColor - if ($foregroundColor -isnot [System.ConsoleColor] -or $backgroundColor -isnot [System.ConsoleColor]) { - $foregroundColor = [System.ConsoleColor]::Red - $backgroundColor = [System.ConsoleColor]::Black - } - } - else { - $foregroundColor = $host.PrivateData.WarningForegroundColor - $backgroundColor = $host.PrivateData.WarningBackgroundColor - if ($foregroundColor -isnot [System.ConsoleColor] -or $backgroundColor -isnot [System.ConsoleColor]) { - $foregroundColor = [System.ConsoleColor]::Yellow - $backgroundColor = [System.ConsoleColor]::Black - } - } - - Write-Host $command -ForegroundColor $foregroundColor -BackgroundColor $backgroundColor -} diff --git a/src/arcade/eng/common/pipeline-logging-functions.sh b/src/arcade/eng/common/pipeline-logging-functions.sh deleted file mode 100644 index 6a0b2255e91..00000000000 --- a/src/arcade/eng/common/pipeline-logging-functions.sh +++ /dev/null @@ -1,206 +0,0 @@ -#!/usr/bin/env bash - -function Write-PipelineTelemetryError { - local telemetry_category='' - local force=false - local function_args=() - local message='' - while [[ $# -gt 0 ]]; do - opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" - case "$opt" in - -category|-c) - telemetry_category=$2 - shift - ;; - -force|-f) - force=true - ;; - -*) - function_args+=("$1 $2") - shift - ;; - *) - message=$* - ;; - esac - shift - done - - if [[ $force != true ]] && [[ "$ci" != true ]]; then - echo "$message" >&2 - return - fi - - if [[ $force == true ]]; then - function_args+=("-force") - fi - message="(NETCORE_ENGINEERING_TELEMETRY=$telemetry_category) $message" - function_args+=("$message") - Write-PipelineTaskError ${function_args[@]} -} - -function Write-PipelineTaskError { - local message_type="error" - local sourcepath='' - local linenumber='' - local columnnumber='' - local error_code='' - local force=false - - while [[ $# -gt 0 ]]; do - opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" - case "$opt" in - -type|-t) - message_type=$2 - shift - ;; - -sourcepath|-s) - sourcepath=$2 - shift - ;; - -linenumber|-ln) - linenumber=$2 - shift - ;; - -columnnumber|-cn) - columnnumber=$2 - shift - ;; - -errcode|-e) - error_code=$2 - shift - ;; - -force|-f) - force=true - ;; - *) - break - ;; - esac - - shift - done - - if [[ $force != true ]] && [[ "$ci" != true ]]; then - echo "$@" >&2 - return - fi - - local message="##vso[task.logissue" - - message="$message type=$message_type" - - if [ -n "$sourcepath" ]; then - message="$message;sourcepath=$sourcepath" - fi - - if [ -n "$linenumber" ]; then - message="$message;linenumber=$linenumber" - fi - - if [ -n "$columnnumber" ]; then - message="$message;columnnumber=$columnnumber" - fi - - if [ -n "$error_code" ]; then - message="$message;code=$error_code" - fi - - message="$message]$*" - echo "$message" -} - -function Write-PipelineSetVariable { - if [[ "$ci" != true ]]; then - return - fi - - local name='' - local value='' - local secret=false - local as_output=false - local is_multi_job_variable=true - - while [[ $# -gt 0 ]]; do - opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" - case "$opt" in - -name|-n) - name=$2 - shift - ;; - -value|-v) - value=$2 - shift - ;; - -secret|-s) - secret=true - ;; - -as_output|-a) - as_output=true - ;; - -is_multi_job_variable|-i) - is_multi_job_variable=$2 - shift - ;; - esac - shift - done - - value=${value/;/%3B} - value=${value/\\r/%0D} - value=${value/\\n/%0A} - value=${value/]/%5D} - - local message="##vso[task.setvariable variable=$name;isSecret=$secret;isOutput=$is_multi_job_variable]$value" - - if [[ "$as_output" == true ]]; then - $message - else - echo "$message" - fi -} - -function Write-PipelinePrependPath { - local prepend_path='' - - while [[ $# -gt 0 ]]; do - opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" - case "$opt" in - -path|-p) - prepend_path=$2 - shift - ;; - esac - shift - done - - export PATH="$prepend_path:$PATH" - - if [[ "$ci" == true ]]; then - echo "##vso[task.prependpath]$prepend_path" - fi -} - -function Write-PipelineSetResult { - local result='' - local message='' - - while [[ $# -gt 0 ]]; do - opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")" - case "$opt" in - -result|-r) - result=$2 - shift - ;; - -message|-m) - message=$2 - shift - ;; - esac - shift - done - - if [[ "$ci" == true ]]; then - echo "##vso[task.complete result=$result;]$message" - fi -} diff --git a/src/arcade/eng/common/post-build/check-channel-consistency.ps1 b/src/arcade/eng/common/post-build/check-channel-consistency.ps1 deleted file mode 100644 index 61208d2d135..00000000000 --- a/src/arcade/eng/common/post-build/check-channel-consistency.ps1 +++ /dev/null @@ -1,48 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $PromoteToChannels, # List of channels that the build should be promoted to - [Parameter(Mandatory=$true)][array] $AvailableChannelIds # List of channel IDs available in the YAML implementation -) - -try { - $ErrorActionPreference = 'Stop' - Set-StrictMode -Version 2.0 - - # `tools.ps1` checks $ci to perform some actions. Since the post-build - # scripts don't necessarily execute in the same agent that run the - # build.ps1/sh script this variable isn't automatically set. - $ci = $true - $disableConfigureToolsetImport = $true - . $PSScriptRoot\..\tools.ps1 - - if ($PromoteToChannels -eq "") { - Write-PipelineTaskError -Type 'warning' -Message "This build won't publish assets as it's not configured to any Maestro channel. If that wasn't intended use Darc to configure a default channel using add-default-channel for this branch or to promote it to a channel using add-build-to-channel. See https://github.com/dotnet/arcade/blob/main/Documentation/Darc.md#assigning-an-individual-build-to-a-channel for more info." - ExitWithExitCode 0 - } - - # Check that every channel that Maestro told to promote the build to - # is available in YAML - $PromoteToChannelsIds = $PromoteToChannels -split "\D" | Where-Object { $_ } - - $hasErrors = $false - - foreach ($id in $PromoteToChannelsIds) { - if (($id -ne 0) -and ($id -notin $AvailableChannelIds)) { - Write-PipelineTaskError -Message "Channel $id is not present in the post-build YAML configuration! This is an error scenario. Please contact @dnceng." - $hasErrors = $true - } - } - - # The `Write-PipelineTaskError` doesn't error the script and we might report several errors - # in the previous lines. The check below makes sure that we return an error state from the - # script if we reported any validation error - if ($hasErrors) { - ExitWithExitCode 1 - } - - Write-Host 'done.' -} -catch { - Write-Host $_ - Write-PipelineTelemetryError -Category 'CheckChannelConsistency' -Message "There was an error while trying to check consistency of Maestro default channels for the build and post-build YAML configuration." - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/post-build/nuget-validation.ps1 b/src/arcade/eng/common/post-build/nuget-validation.ps1 deleted file mode 100644 index e5de00c8983..00000000000 --- a/src/arcade/eng/common/post-build/nuget-validation.ps1 +++ /dev/null @@ -1,22 +0,0 @@ -# This script validates NuGet package metadata information using this -# tool: https://github.com/NuGet/NuGetGallery/tree/jver-verify/src/VerifyMicrosoftPackage - -param( - [Parameter(Mandatory=$true)][string] $PackagesPath # Path to where the packages to be validated are -) - -# `tools.ps1` checks $ci to perform some actions. Since the post-build -# scripts don't necessarily execute in the same agent that run the -# build.ps1/sh script this variable isn't automatically set. -$ci = $true -$disableConfigureToolsetImport = $true -. $PSScriptRoot\..\tools.ps1 - -try { - & $PSScriptRoot\nuget-verification.ps1 ${PackagesPath}\*.nupkg -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'NuGetValidation' -Message $_ - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/post-build/nuget-verification.ps1 b/src/arcade/eng/common/post-build/nuget-verification.ps1 deleted file mode 100644 index a365194a938..00000000000 --- a/src/arcade/eng/common/post-build/nuget-verification.ps1 +++ /dev/null @@ -1,121 +0,0 @@ -<# -.SYNOPSIS - Verifies that Microsoft NuGet packages have proper metadata. -.DESCRIPTION - Downloads a verification tool and runs metadata validation on the provided NuGet packages. This script writes an - error if any of the provided packages fail validation. All arguments provided to this PowerShell script that do not - match PowerShell parameters are passed on to the verification tool downloaded during the execution of this script. -.PARAMETER NuGetExePath - The path to the nuget.exe binary to use. If not provided, nuget.exe will be downloaded into the -DownloadPath - directory. -.PARAMETER PackageSource - The package source to use to download the verification tool. If not provided, nuget.org will be used. -.PARAMETER DownloadPath - The directory path to download the verification tool and nuget.exe to. If not provided, - %TEMP%\NuGet.VerifyNuGetPackage will be used. -.PARAMETER args - Arguments that will be passed to the verification tool. -.EXAMPLE - PS> .\verify.ps1 *.nupkg - Verifies the metadata of all .nupkg files in the currect working directory. -.EXAMPLE - PS> .\verify.ps1 --help - Displays the help text of the downloaded verifiction tool. -.LINK - https://github.com/NuGet/NuGetGallery/blob/master/src/VerifyMicrosoftPackage/README.md -#> - -# This script was copied from https://github.com/NuGet/NuGetGallery/blob/3e25ad135146676bcab0050a516939d9958bfa5d/src/VerifyMicrosoftPackage/verify.ps1 - -[CmdletBinding(PositionalBinding = $false)] -param( - [string]$NuGetExePath, - [string]$PackageSource = "https://api.nuget.org/v3/index.json", - [string]$DownloadPath, - [Parameter(ValueFromRemainingArguments = $true)] - [string[]]$args -) - -# The URL to download nuget.exe. -$nugetExeUrl = "https://dist.nuget.org/win-x86-commandline/v4.9.4/nuget.exe" - -# The package ID of the verification tool. -$packageId = "NuGet.VerifyMicrosoftPackage" - -# The location that nuget.exe and the verification tool will be downloaded to. -if (!$DownloadPath) { - $DownloadPath = (Join-Path $env:TEMP "NuGet.VerifyMicrosoftPackage") -} - -$fence = New-Object -TypeName string -ArgumentList '=', 80 - -# Create the download directory, if it doesn't already exist. -if (!(Test-Path $DownloadPath)) { - New-Item -ItemType Directory $DownloadPath | Out-Null -} -Write-Host "Using download path: $DownloadPath" - -if ($NuGetExePath) { - $nuget = $NuGetExePath -} else { - $downloadedNuGetExe = Join-Path $DownloadPath "nuget.exe" - - # Download nuget.exe, if it doesn't already exist. - if (!(Test-Path $downloadedNuGetExe)) { - Write-Host "Downloading nuget.exe from $nugetExeUrl..." - $ProgressPreference = 'SilentlyContinue' - try { - Invoke-WebRequest $nugetExeUrl -OutFile $downloadedNuGetExe - $ProgressPreference = 'Continue' - } catch { - $ProgressPreference = 'Continue' - Write-Error $_ - Write-Error "nuget.exe failed to download." - exit - } - } - - $nuget = $downloadedNuGetExe -} - -Write-Host "Using nuget.exe path: $nuget" -Write-Host " " - -# Download the latest version of the verification tool. -Write-Host "Downloading the latest version of $packageId from $packageSource..." -Write-Host $fence -& $nuget install $packageId ` - -Prerelease ` - -OutputDirectory $DownloadPath ` - -Source $PackageSource -Write-Host $fence -Write-Host " " - -if ($LASTEXITCODE -ne 0) { - Write-Error "nuget.exe failed to fetch the verify tool." - exit -} - -# Find the most recently downloaded tool -Write-Host "Finding the most recently downloaded verification tool." -$verifyProbePath = Join-Path $DownloadPath "$packageId.*" -$verifyPath = Get-ChildItem -Path $verifyProbePath -Directory ` - | Sort-Object -Property LastWriteTime -Descending ` - | Select-Object -First 1 -$verify = Join-Path $verifyPath "tools\NuGet.VerifyMicrosoftPackage.exe" -Write-Host "Using verification tool: $verify" -Write-Host " " - -# Execute the verification tool. -Write-Host "Executing the verify tool..." -Write-Host $fence -& $verify $args -Write-Host $fence -Write-Host " " - -# Respond to the exit code. -if ($LASTEXITCODE -ne 0) { - Write-Error "The verify tool found some problems." -} else { - Write-Output "The verify tool succeeded." -} diff --git a/src/arcade/eng/common/post-build/redact-logs.ps1 b/src/arcade/eng/common/post-build/redact-logs.ps1 deleted file mode 100644 index b7fc1959150..00000000000 --- a/src/arcade/eng/common/post-build/redact-logs.ps1 +++ /dev/null @@ -1,89 +0,0 @@ -[CmdletBinding(PositionalBinding=$False)] -param( - [Parameter(Mandatory=$true, Position=0)][string] $InputPath, - [Parameter(Mandatory=$true)][string] $BinlogToolVersion, - [Parameter(Mandatory=$false)][string] $DotnetPath, - [Parameter(Mandatory=$false)][string] $PackageFeed = 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json', - # File with strings to redact - separated by newlines. - # For comments start the line with '# ' - such lines are ignored - [Parameter(Mandatory=$false)][string] $TokensFilePath, - [Parameter(ValueFromRemainingArguments=$true)][String[]]$TokensToRedact -) - -try { - $ErrorActionPreference = 'Stop' - Set-StrictMode -Version 2.0 - - # `tools.ps1` checks $ci to perform some actions. Since the post-build - # scripts don't necessarily execute in the same agent that run the - # build.ps1/sh script this variable isn't automatically set. - $ci = $true - $disableConfigureToolsetImport = $true - . $PSScriptRoot\..\tools.ps1 - - $packageName = 'binlogtool' - - $dotnet = $DotnetPath - - if (!$dotnet) { - $dotnetRoot = InitializeDotNetCli -install:$true - $dotnet = "$dotnetRoot\dotnet.exe" - } - - $toolList = & "$dotnet" tool list -g - - if ($toolList -like "*$packageName*") { - & "$dotnet" tool uninstall $packageName -g - } - - $toolPath = "$PSScriptRoot\..\..\..\.tools" - $verbosity = 'minimal' - - New-Item -ItemType Directory -Force -Path $toolPath - - Push-Location -Path $toolPath - - try { - Write-Host "Installing Binlog redactor CLI..." - Write-Host "'$dotnet' new tool-manifest" - & "$dotnet" new tool-manifest - Write-Host "'$dotnet' tool install $packageName --local --add-source '$PackageFeed' -v $verbosity --version $BinlogToolVersion" - & "$dotnet" tool install $packageName --local --add-source "$PackageFeed" -v $verbosity --version $BinlogToolVersion - - if (Test-Path $TokensFilePath) { - Write-Host "Adding additional sensitive data for redaction from file: " $TokensFilePath - $TokensToRedact += Get-Content -Path $TokensFilePath | Foreach {$_.Trim()} | Where { $_ -notmatch "^# " } - } - - $optionalParams = [System.Collections.ArrayList]::new() - - Foreach ($p in $TokensToRedact) - { - if($p -match '^\$\(.*\)$') - { - Write-Host ("Ignoring token {0} as it is probably unexpanded AzDO variable" -f $p) - } - elseif($p) - { - $optionalParams.Add("-p:" + $p) | Out-Null - } - } - - & $dotnet binlogtool redact --input:$InputPath --recurse --in-place ` - @optionalParams - - if ($LastExitCode -ne 0) { - Write-PipelineTelemetryError -Category 'Redactor' -Type 'warning' -Message "Problems using Redactor tool (exit code: $LastExitCode). But ignoring them now." - } - } - finally { - Pop-Location - } - - Write-Host 'done.' -} -catch { - Write-Host $_ - Write-PipelineTelemetryError -Category 'Redactor' -Message "There was an error while trying to redact logs. Error: $_" - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/post-build/sourcelink-validation.ps1 b/src/arcade/eng/common/post-build/sourcelink-validation.ps1 deleted file mode 100644 index 1976ef70fb8..00000000000 --- a/src/arcade/eng/common/post-build/sourcelink-validation.ps1 +++ /dev/null @@ -1,327 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where Symbols.NuGet packages to be checked are stored - [Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation - [Parameter(Mandatory=$false)][string] $GHRepoName, # GitHub name of the repo including the Org. E.g., dotnet/arcade - [Parameter(Mandatory=$false)][string] $GHCommit, # GitHub commit SHA used to build the packages - [Parameter(Mandatory=$true)][string] $SourcelinkCliVersion # Version of SourceLink CLI to use -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 - -# `tools.ps1` checks $ci to perform some actions. Since the post-build -# scripts don't necessarily execute in the same agent that run the -# build.ps1/sh script this variable isn't automatically set. -$ci = $true -$disableConfigureToolsetImport = $true -. $PSScriptRoot\..\tools.ps1 - -# Cache/HashMap (File -> Exist flag) used to consult whether a file exist -# in the repository at a specific commit point. This is populated by inserting -# all files present in the repo at a specific commit point. -$global:RepoFiles = @{} - -# Maximum number of jobs to run in parallel -$MaxParallelJobs = 16 - -$MaxRetries = 5 -$RetryWaitTimeInSeconds = 30 - -# Wait time between check for system load -$SecondsBetweenLoadChecks = 10 - -if (!$InputPath -or !(Test-Path $InputPath)){ - Write-Host "No files to validate." - ExitWithExitCode 0 -} - -$ValidatePackage = { - param( - [string] $PackagePath # Full path to a Symbols.NuGet package - ) - - . $using:PSScriptRoot\..\tools.ps1 - - # Ensure input file exist - if (!(Test-Path $PackagePath)) { - Write-Host "Input file does not exist: $PackagePath" - return [pscustomobject]@{ - result = 1 - packagePath = $PackagePath - } - } - - # Extensions for which we'll look for SourceLink information - # For now we'll only care about Portable & Embedded PDBs - $RelevantExtensions = @('.dll', '.exe', '.pdb') - - Write-Host -NoNewLine 'Validating ' ([System.IO.Path]::GetFileName($PackagePath)) '...' - - $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) - $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId - $FailedFiles = 0 - - Add-Type -AssemblyName System.IO.Compression.FileSystem - - [System.IO.Directory]::CreateDirectory($ExtractPath) | Out-Null - - try { - $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath) - - $zip.Entries | - Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} | - ForEach-Object { - $FileName = $_.FullName - $Extension = [System.IO.Path]::GetExtension($_.Name) - $FakeName = -Join((New-Guid), $Extension) - $TargetFile = Join-Path -Path $ExtractPath -ChildPath $FakeName - - # We ignore resource DLLs - if ($FileName.EndsWith('.resources.dll')) { - return [pscustomobject]@{ - result = 0 - packagePath = $PackagePath - } - } - - [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true) - - $ValidateFile = { - param( - [string] $FullPath, # Full path to the module that has to be checked - [string] $RealPath, - [ref] $FailedFiles - ) - - $sourcelinkExe = "$env:USERPROFILE\.dotnet\tools" - $sourcelinkExe = Resolve-Path "$sourcelinkExe\sourcelink.exe" - $SourceLinkInfos = & $sourcelinkExe print-urls $FullPath | Out-String - - if ($LASTEXITCODE -eq 0 -and -not ([string]::IsNullOrEmpty($SourceLinkInfos))) { - $NumFailedLinks = 0 - - # We only care about Http addresses - $Matches = (Select-String '(http[s]?)(:\/\/)([^\s,]+)' -Input $SourceLinkInfos -AllMatches).Matches - - if ($Matches.Count -ne 0) { - $Matches.Value | - ForEach-Object { - $Link = $_ - $CommitUrl = "https://raw.githubusercontent.com/${using:GHRepoName}/${using:GHCommit}/" - - $FilePath = $Link.Replace($CommitUrl, "") - $Status = 200 - $Cache = $using:RepoFiles - - $attempts = 0 - - while ($attempts -lt $using:MaxRetries) { - if ( !($Cache.ContainsKey($FilePath)) ) { - try { - $Uri = $Link -as [System.URI] - - if ($Link -match "submodules") { - # Skip submodule links until sourcelink properly handles submodules - $Status = 200 - } - elseif ($Uri.AbsoluteURI -ne $null -and ($Uri.Host -match 'github' -or $Uri.Host -match 'githubusercontent')) { - # Only GitHub links are valid - $Status = (Invoke-WebRequest -Uri $Link -UseBasicParsing -Method HEAD -TimeoutSec 5).StatusCode - } - else { - # If it's not a github link, we want to break out of the loop and not retry. - $Status = 0 - $attempts = $using:MaxRetries - } - } - catch { - Write-Host $_ - $Status = 0 - } - } - - if ($Status -ne 200) { - $attempts++ - - if ($attempts -lt $using:MaxRetries) - { - $attemptsLeft = $using:MaxRetries - $attempts - Write-Warning "Download failed, $attemptsLeft attempts remaining, will retry in $using:RetryWaitTimeInSeconds seconds" - Start-Sleep -Seconds $using:RetryWaitTimeInSeconds - } - else { - if ($NumFailedLinks -eq 0) { - if ($FailedFiles.Value -eq 0) { - Write-Host - } - - Write-Host "`tFile $RealPath has broken links:" - } - - Write-Host "`t`tFailed to retrieve $Link" - - $NumFailedLinks++ - } - } - else { - break - } - } - } - } - - if ($NumFailedLinks -ne 0) { - $FailedFiles.value++ - $global:LASTEXITCODE = 1 - } - } - } - - &$ValidateFile $TargetFile $FileName ([ref]$FailedFiles) - } - } - catch { - Write-Host $_ - } - finally { - $zip.Dispose() - } - - if ($FailedFiles -eq 0) { - Write-Host 'Passed.' - return [pscustomobject]@{ - result = 0 - packagePath = $PackagePath - } - } - else { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$PackagePath has broken SourceLink links." - return [pscustomobject]@{ - result = 1 - packagePath = $PackagePath - } - } -} - -function CheckJobResult( - $result, - $packagePath, - [ref]$ValidationFailures, - [switch]$logErrors) { - if ($result -ne '0') { - if ($logErrors) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links." - } - $ValidationFailures.Value++ - } -} - -function ValidateSourceLinkLinks { - if ($GHRepoName -ne '' -and !($GHRepoName -Match '^[^\s\/]+/[^\s\/]+$')) { - if (!($GHRepoName -Match '^[^\s-]+-[^\s]+$')) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHRepoName should be in the format / or -. '$GHRepoName'" - ExitWithExitCode 1 - } - else { - $GHRepoName = $GHRepoName -replace '^([^\s-]+)-([^\s]+)$', '$1/$2'; - } - } - - if ($GHCommit -ne '' -and !($GHCommit -Match '^[0-9a-fA-F]{40}$')) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHCommit should be a 40 chars hexadecimal string. '$GHCommit'" - ExitWithExitCode 1 - } - - if ($GHRepoName -ne '' -and $GHCommit -ne '') { - $RepoTreeURL = -Join('http://api.github.com/repos/', $GHRepoName, '/git/trees/', $GHCommit, '?recursive=1') - $CodeExtensions = @('.cs', '.vb', '.fs', '.fsi', '.fsx', '.fsscript') - - try { - # Retrieve the list of files in the repo at that particular commit point and store them in the RepoFiles hash - $Data = Invoke-WebRequest $RepoTreeURL -UseBasicParsing | ConvertFrom-Json | Select-Object -ExpandProperty tree - - foreach ($file in $Data) { - $Extension = [System.IO.Path]::GetExtension($file.path) - - if ($CodeExtensions.Contains($Extension)) { - $RepoFiles[$file.path] = 1 - } - } - } - catch { - Write-Host "Problems downloading the list of files from the repo. Url used: $RepoTreeURL . Execution will proceed without caching." - } - } - elseif ($GHRepoName -ne '' -or $GHCommit -ne '') { - Write-Host 'For using the http caching mechanism both GHRepoName and GHCommit should be informed.' - } - - if (Test-Path $ExtractPath) { - Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue - } - - $ValidationFailures = 0 - - # Process each NuGet package in parallel - Get-ChildItem "$InputPath\*.symbols.nupkg" | - ForEach-Object { - Write-Host "Starting $($_.FullName)" - Start-Job -ScriptBlock $ValidatePackage -ArgumentList $_.FullName | Out-Null - $NumJobs = @(Get-Job -State 'Running').Count - - while ($NumJobs -ge $MaxParallelJobs) { - Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again." - sleep $SecondsBetweenLoadChecks - $NumJobs = @(Get-Job -State 'Running').Count - } - - foreach ($Job in @(Get-Job -State 'Completed')) { - $jobResult = Wait-Job -Id $Job.Id | Receive-Job - CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) -LogErrors - Remove-Job -Id $Job.Id - } - } - - foreach ($Job in @(Get-Job)) { - $jobResult = Wait-Job -Id $Job.Id | Receive-Job - CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) - Remove-Job -Id $Job.Id - } - if ($ValidationFailures -gt 0) { - Write-PipelineTelemetryError -Category 'SourceLink' -Message "$ValidationFailures package(s) failed validation." - ExitWithExitCode 1 - } -} - -function InstallSourcelinkCli { - $sourcelinkCliPackageName = 'sourcelink' - - $dotnetRoot = InitializeDotNetCli -install:$true - $dotnet = "$dotnetRoot\dotnet.exe" - $toolList = & "$dotnet" tool list --global - - if (($toolList -like "*$sourcelinkCliPackageName*") -and ($toolList -like "*$sourcelinkCliVersion*")) { - Write-Host "SourceLink CLI version $sourcelinkCliVersion is already installed." - } - else { - Write-Host "Installing SourceLink CLI version $sourcelinkCliVersion..." - Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' - & "$dotnet" tool install $sourcelinkCliPackageName --version $sourcelinkCliVersion --verbosity "minimal" --global - } -} - -try { - InstallSourcelinkCli - - foreach ($Job in @(Get-Job)) { - Remove-Job -Id $Job.Id - } - - ValidateSourceLinkLinks -} -catch { - Write-Host $_.Exception - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'SourceLink' -Message $_ - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/post-build/symbols-validation.ps1 b/src/arcade/eng/common/post-build/symbols-validation.ps1 deleted file mode 100644 index 7146e593ffa..00000000000 --- a/src/arcade/eng/common/post-build/symbols-validation.ps1 +++ /dev/null @@ -1,337 +0,0 @@ -param( - [Parameter(Mandatory = $true)][string] $InputPath, # Full path to directory where NuGet packages to be checked are stored - [Parameter(Mandatory = $true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation - [Parameter(Mandatory = $true)][string] $DotnetSymbolVersion, # Version of dotnet symbol to use - [Parameter(Mandatory = $false)][switch] $CheckForWindowsPdbs, # If we should check for the existence of windows pdbs in addition to portable PDBs - [Parameter(Mandatory = $false)][switch] $ContinueOnError, # If we should keep checking symbols after an error - [Parameter(Mandatory = $false)][switch] $Clean, # Clean extracted symbols directory after checking symbols - [Parameter(Mandatory = $false)][string] $SymbolExclusionFile # Exclude the symbols in the file from publishing to symbol server -) - -. $PSScriptRoot\..\tools.ps1 -# Maximum number of jobs to run in parallel -$MaxParallelJobs = 16 - -# Max number of retries -$MaxRetry = 5 - -# Wait time between check for system load -$SecondsBetweenLoadChecks = 10 - -# Set error codes -Set-Variable -Name "ERROR_BADEXTRACT" -Option Constant -Value -1 -Set-Variable -Name "ERROR_FILEDOESNOTEXIST" -Option Constant -Value -2 - -$WindowsPdbVerificationParam = "" -if ($CheckForWindowsPdbs) { - $WindowsPdbVerificationParam = "--windows-pdbs" -} - -$ExclusionSet = New-Object System.Collections.Generic.HashSet[string]; - -if (!$InputPath -or !(Test-Path $InputPath)){ - Write-Host "No symbols to validate." - ExitWithExitCode 0 -} - -#Check if the path exists -if ($SymbolExclusionFile -and (Test-Path $SymbolExclusionFile)){ - [string[]]$Exclusions = Get-Content "$SymbolExclusionFile" - $Exclusions | foreach { if($_ -and $_.Trim()){$ExclusionSet.Add($_)} } -} -else{ - Write-Host "Symbol Exclusion file does not exists. No symbols to exclude." -} - -$CountMissingSymbols = { - param( - [string] $PackagePath, # Path to a NuGet package - [string] $WindowsPdbVerificationParam # If we should check for the existence of windows pdbs in addition to portable PDBs - ) - - Add-Type -AssemblyName System.IO.Compression.FileSystem - - Write-Host "Validating $PackagePath " - - # Ensure input file exist - if (!(Test-Path $PackagePath)) { - Write-PipelineTaskError "Input file does not exist: $PackagePath" - return [pscustomobject]@{ - result = $using:ERROR_FILEDOESNOTEXIST - packagePath = $PackagePath - } - } - - # Extensions for which we'll look for symbols - $RelevantExtensions = @('.dll', '.exe', '.so', '.dylib') - - # How many files are missing symbol information - $MissingSymbols = 0 - - $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) - $PackageGuid = New-Guid - $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageGuid - $SymbolsPath = Join-Path -Path $ExtractPath -ChildPath 'Symbols' - - try { - [System.IO.Compression.ZipFile]::ExtractToDirectory($PackagePath, $ExtractPath) - } - catch { - Write-Host "Something went wrong extracting $PackagePath" - Write-Host $_ - return [pscustomobject]@{ - result = $using:ERROR_BADEXTRACT - packagePath = $PackagePath - } - } - - Get-ChildItem -Recurse $ExtractPath | - Where-Object { $RelevantExtensions -contains $_.Extension } | - ForEach-Object { - $FileName = $_.FullName - if ($FileName -Match '\\ref\\') { - Write-Host "`t Ignoring reference assembly file " $FileName - return - } - - $FirstMatchingSymbolDescriptionOrDefault = { - param( - [string] $FullPath, # Full path to the module that has to be checked - [string] $TargetServerParam, # Parameter to pass to `Symbol Tool` indicating the server to lookup for symbols - [string] $WindowsPdbVerificationParam, # Parameter to pass to potential check for windows-pdbs. - [string] $SymbolsPath - ) - - $FileName = [System.IO.Path]::GetFileName($FullPath) - $Extension = [System.IO.Path]::GetExtension($FullPath) - - # Those below are potential symbol files that the `dotnet symbol` might - # return. Which one will be returned depend on the type of file we are - # checking and which type of file was uploaded. - - # The file itself is returned - $SymbolPath = $SymbolsPath + '\' + $FileName - - # PDB file for the module - $PdbPath = $SymbolPath.Replace($Extension, '.pdb') - - # PDB file for R2R module (created by crossgen) - $NGenPdb = $SymbolPath.Replace($Extension, '.ni.pdb') - - # DBG file for a .so library - $SODbg = $SymbolPath.Replace($Extension, '.so.dbg') - - # DWARF file for a .dylib - $DylibDwarf = $SymbolPath.Replace($Extension, '.dylib.dwarf') - - $dotnetSymbolExe = "$env:USERPROFILE\.dotnet\tools" - $dotnetSymbolExe = Resolve-Path "$dotnetSymbolExe\dotnet-symbol.exe" - - $totalRetries = 0 - - while ($totalRetries -lt $using:MaxRetry) { - - # Save the output and get diagnostic output - $output = & $dotnetSymbolExe --symbols --modules $WindowsPdbVerificationParam $TargetServerParam $FullPath -o $SymbolsPath --diagnostics | Out-String - - if ((Test-Path $PdbPath) -and (Test-path $SymbolPath)) { - return 'Module and PDB for Module' - } - elseif ((Test-Path $NGenPdb) -and (Test-Path $PdbPath) -and (Test-Path $SymbolPath)) { - return 'Dll, PDB and NGen PDB' - } - elseif ((Test-Path $SODbg) -and (Test-Path $SymbolPath)) { - return 'So and DBG for SO' - } - elseif ((Test-Path $DylibDwarf) -and (Test-Path $SymbolPath)) { - return 'Dylib and Dwarf for Dylib' - } - elseif (Test-Path $SymbolPath) { - return 'Module' - } - else - { - $totalRetries++ - } - } - - return $null - } - - $FileRelativePath = $FileName.Replace("$ExtractPath\", "") - if (($($using:ExclusionSet) -ne $null) -and ($($using:ExclusionSet).Contains($FileRelativePath) -or ($($using:ExclusionSet).Contains($FileRelativePath.Replace("\", "/"))))){ - Write-Host "Skipping $FileName from symbol validation" - } - - else { - $FileGuid = New-Guid - $ExpandedSymbolsPath = Join-Path -Path $SymbolsPath -ChildPath $FileGuid - - $SymbolsOnMSDL = & $FirstMatchingSymbolDescriptionOrDefault ` - -FullPath $FileName ` - -TargetServerParam '--microsoft-symbol-server' ` - -SymbolsPath "$ExpandedSymbolsPath-msdl" ` - -WindowsPdbVerificationParam $WindowsPdbVerificationParam - $SymbolsOnSymWeb = & $FirstMatchingSymbolDescriptionOrDefault ` - -FullPath $FileName ` - -TargetServerParam '--internal-server' ` - -SymbolsPath "$ExpandedSymbolsPath-symweb" ` - -WindowsPdbVerificationParam $WindowsPdbVerificationParam - - Write-Host -NoNewLine "`t Checking file " $FileName "... " - - if ($SymbolsOnMSDL -ne $null -and $SymbolsOnSymWeb -ne $null) { - Write-Host "Symbols found on MSDL ($SymbolsOnMSDL) and SymWeb ($SymbolsOnSymWeb)" - } - else { - $MissingSymbols++ - - if ($SymbolsOnMSDL -eq $null -and $SymbolsOnSymWeb -eq $null) { - Write-Host 'No symbols found on MSDL or SymWeb!' - } - else { - if ($SymbolsOnMSDL -eq $null) { - Write-Host 'No symbols found on MSDL!' - } - else { - Write-Host 'No symbols found on SymWeb!' - } - } - } - } - } - - if ($using:Clean) { - Remove-Item $ExtractPath -Recurse -Force - } - - Pop-Location - - return [pscustomobject]@{ - result = $MissingSymbols - packagePath = $PackagePath - } -} - -function CheckJobResult( - $result, - $packagePath, - [ref]$DupedSymbols, - [ref]$TotalFailures) { - if ($result -eq $ERROR_BADEXTRACT) { - Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "$packagePath has duplicated symbol files" - $DupedSymbols.Value++ - } - elseif ($result -eq $ERROR_FILEDOESNOTEXIST) { - Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "$packagePath does not exist" - $TotalFailures.Value++ - } - elseif ($result -gt '0') { - Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "Missing symbols for $result modules in the package $packagePath" - $TotalFailures.Value++ - } - else { - Write-Host "All symbols verified for package $packagePath" - } -} - -function CheckSymbolsAvailable { - if (Test-Path $ExtractPath) { - Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue - } - - $TotalPackages = 0 - $TotalFailures = 0 - $DupedSymbols = 0 - - Get-ChildItem "$InputPath\*.nupkg" | - ForEach-Object { - $FileName = $_.Name - $FullName = $_.FullName - - # These packages from Arcade-Services include some native libraries that - # our current symbol uploader can't handle. Below is a workaround until - # we get issue: https://github.com/dotnet/arcade/issues/2457 sorted. - if ($FileName -Match 'Microsoft\.DotNet\.Darc\.') { - Write-Host "Ignoring Arcade-services file: $FileName" - Write-Host - return - } - elseif ($FileName -Match 'Microsoft\.DotNet\.Maestro\.Tasks\.') { - Write-Host "Ignoring Arcade-services file: $FileName" - Write-Host - return - } - - $TotalPackages++ - - Start-Job -ScriptBlock $CountMissingSymbols -ArgumentList @($FullName,$WindowsPdbVerificationParam) | Out-Null - - $NumJobs = @(Get-Job -State 'Running').Count - - while ($NumJobs -ge $MaxParallelJobs) { - Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again." - sleep $SecondsBetweenLoadChecks - $NumJobs = @(Get-Job -State 'Running').Count - } - - foreach ($Job in @(Get-Job -State 'Completed')) { - $jobResult = Wait-Job -Id $Job.Id | Receive-Job - CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$DupedSymbols) ([ref]$TotalFailures) - Remove-Job -Id $Job.Id - } - Write-Host - } - - foreach ($Job in @(Get-Job)) { - $jobResult = Wait-Job -Id $Job.Id | Receive-Job - CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$DupedSymbols) ([ref]$TotalFailures) - } - - if ($TotalFailures -gt 0 -or $DupedSymbols -gt 0) { - if ($TotalFailures -gt 0) { - Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "Symbols missing for $TotalFailures/$TotalPackages packages" - } - - if ($DupedSymbols -gt 0) { - Write-PipelineTelemetryError -Category 'CheckSymbols' -Message "$DupedSymbols/$TotalPackages packages had duplicated symbol files and could not be extracted" - } - - ExitWithExitCode 1 - } - else { - Write-Host "All symbols validated!" - } -} - -function InstallDotnetSymbol { - $dotnetSymbolPackageName = 'dotnet-symbol' - - $dotnetRoot = InitializeDotNetCli -install:$true - $dotnet = "$dotnetRoot\dotnet.exe" - $toolList = & "$dotnet" tool list --global - - if (($toolList -like "*$dotnetSymbolPackageName*") -and ($toolList -like "*$dotnetSymbolVersion*")) { - Write-Host "dotnet-symbol version $dotnetSymbolVersion is already installed." - } - else { - Write-Host "Installing dotnet-symbol version $dotnetSymbolVersion..." - Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.' - & "$dotnet" tool install $dotnetSymbolPackageName --version $dotnetSymbolVersion --verbosity "minimal" --global - } -} - -try { - InstallDotnetSymbol - - foreach ($Job in @(Get-Job)) { - Remove-Job -Id $Job.Id - } - - CheckSymbolsAvailable -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Category 'CheckSymbols' -Message $_ - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/retain-build.ps1 b/src/arcade/eng/common/retain-build.ps1 deleted file mode 100644 index e7ba975adeb..00000000000 --- a/src/arcade/eng/common/retain-build.ps1 +++ /dev/null @@ -1,45 +0,0 @@ - -Param( -[Parameter(Mandatory=$true)][int] $buildId, -[Parameter(Mandatory=$true)][string] $azdoOrgUri, -[Parameter(Mandatory=$true)][string] $azdoProject, -[Parameter(Mandatory=$true)][string] $token -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 - -function Get-AzDOHeaders( - [string] $token) -{ - $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":${token}")) - $headers = @{"Authorization"="Basic $base64AuthInfo"} - return $headers -} - -function Update-BuildRetention( - [string] $azdoOrgUri, - [string] $azdoProject, - [int] $buildId, - [string] $token) -{ - $headers = Get-AzDOHeaders -token $token - $requestBody = "{ - `"keepForever`": `"true`" - }" - - $requestUri = "${azdoOrgUri}/${azdoProject}/_apis/build/builds/${buildId}?api-version=6.0" - write-Host "Attempting to retain build using the following URI: ${requestUri} ..." - - try { - Invoke-RestMethod -Uri $requestUri -Method Patch -Body $requestBody -Header $headers -contentType "application/json" - Write-Host "Updated retention settings for build ${buildId}." - } - catch { - Write-Error "Failed to update retention settings for build: $_.Exception.Response.StatusDescription" - exit 1 - } -} - -Update-BuildRetention -azdoOrgUri $azdoOrgUri -azdoProject $azdoProject -buildId $buildId -token $token -exit 0 diff --git a/src/arcade/eng/common/sdl/NuGet.config b/src/arcade/eng/common/sdl/NuGet.config deleted file mode 100644 index 3849bdb3cf5..00000000000 --- a/src/arcade/eng/common/sdl/NuGet.config +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/arcade/eng/common/sdl/configure-sdl-tool.ps1 b/src/arcade/eng/common/sdl/configure-sdl-tool.ps1 deleted file mode 100644 index 27f5a4115fc..00000000000 --- a/src/arcade/eng/common/sdl/configure-sdl-tool.ps1 +++ /dev/null @@ -1,130 +0,0 @@ -Param( - [string] $GuardianCliLocation, - [string] $WorkingDirectory, - [string] $TargetDirectory, - [string] $GdnFolder, - # The list of Guardian tools to configure. For each object in the array: - # - If the item is a [hashtable], it must contain these entries: - # - Name = The tool name as Guardian knows it. - # - Scenario = (Optional) Scenario-specific name for this configuration entry. It must be unique - # among all tool entries with the same Name. - # - Args = (Optional) Array of Guardian tool configuration args, like '@("Target > C:\temp")' - # - If the item is a [string] $v, it is treated as '@{ Name="$v" }' - [object[]] $ToolsList, - [string] $GuardianLoggerLevel='Standard', - # Optional: Additional params to add to any tool using CredScan. - [string[]] $CrScanAdditionalRunConfigParams, - # Optional: Additional params to add to any tool using PoliCheck. - [string[]] $PoliCheckAdditionalRunConfigParams, - # Optional: Additional params to add to any tool using CodeQL/Semmle. - [string[]] $CodeQLAdditionalRunConfigParams, - # Optional: Additional params to add to any tool using Binskim. - [string[]] $BinskimAdditionalRunConfigParams -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 -$disableConfigureToolsetImport = $true -$global:LASTEXITCODE = 0 - -try { - # `tools.ps1` checks $ci to perform some actions. Since the SDL - # scripts don't necessarily execute in the same agent that run the - # build.ps1/sh script this variable isn't automatically set. - $ci = $true - . $PSScriptRoot\..\tools.ps1 - - # Normalize tools list: all in [hashtable] form with defined values for each key. - $ToolsList = $ToolsList | - ForEach-Object { - if ($_ -is [string]) { - $_ = @{ Name = $_ } - } - - if (-not ($_['Scenario'])) { $_.Scenario = "" } - if (-not ($_['Args'])) { $_.Args = @() } - $_ - } - - Write-Host "List of tools to configure:" - $ToolsList | ForEach-Object { $_ | Out-String | Write-Host } - - # We store config files in the r directory of .gdn - $gdnConfigPath = Join-Path $GdnFolder 'r' - $ValidPath = Test-Path $GuardianCliLocation - - if ($ValidPath -eq $False) - { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Invalid Guardian CLI Location." - ExitWithExitCode 1 - } - - foreach ($tool in $ToolsList) { - # Put together the name and scenario to make a unique key. - $toolConfigName = $tool.Name - if ($tool.Scenario) { - $toolConfigName += "_" + $tool.Scenario - } - - Write-Host "=== Configuring $toolConfigName..." - - $gdnConfigFile = Join-Path $gdnConfigPath "$toolConfigName-configure.gdnconfig" - - # For some tools, add default and automatic args. - switch -Exact ($tool.Name) { - 'credscan' { - if ($targetDirectory) { - $tool.Args += "`"TargetDirectory < $TargetDirectory`"" - } - $tool.Args += "`"OutputType < pre`"" - $tool.Args += $CrScanAdditionalRunConfigParams - } - 'policheck' { - if ($targetDirectory) { - $tool.Args += "`"Target < $TargetDirectory`"" - } - $tool.Args += $PoliCheckAdditionalRunConfigParams - } - {$_ -in 'semmle', 'codeql'} { - if ($targetDirectory) { - $tool.Args += "`"SourceCodeDirectory < $TargetDirectory`"" - } - $tool.Args += $CodeQLAdditionalRunConfigParams - } - 'binskim' { - if ($targetDirectory) { - # Binskim crashes due to specific PDBs. GitHub issue: https://github.com/microsoft/binskim/issues/924. - # We are excluding all `_.pdb` files from the scan. - $tool.Args += "`"Target < $TargetDirectory\**;-:file|$TargetDirectory\**\_.pdb`"" - } - $tool.Args += $BinskimAdditionalRunConfigParams - } - } - - # Create variable pointing to the args array directly so we can use splat syntax later. - $toolArgs = $tool.Args - - # Configure the tool. If args array is provided or the current tool has some default arguments - # defined, add "--args" and splat each element on the end. Arg format is "{Arg id} < {Value}", - # one per parameter. Doc page for "guardian configure": - # https://dev.azure.com/securitytools/SecurityIntegration/_wiki/wikis/Guardian/1395/configure - Exec-BlockVerbosely { - & $GuardianCliLocation configure ` - --working-directory $WorkingDirectory ` - --tool $tool.Name ` - --output-path $gdnConfigFile ` - --logger-level $GuardianLoggerLevel ` - --noninteractive ` - --force ` - $(if ($toolArgs) { "--args" }) @toolArgs - Exit-IfNZEC "Sdl" - } - - Write-Host "Created '$toolConfigName' configuration file: $gdnConfigFile" - } -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/sdl/execute-all-sdl-tools.ps1 b/src/arcade/eng/common/sdl/execute-all-sdl-tools.ps1 deleted file mode 100644 index 4715d75e974..00000000000 --- a/src/arcade/eng/common/sdl/execute-all-sdl-tools.ps1 +++ /dev/null @@ -1,167 +0,0 @@ -Param( - [string] $GuardianPackageName, # Required: the name of guardian CLI package (not needed if GuardianCliLocation is specified) - [string] $NugetPackageDirectory, # Required: directory where NuGet packages are installed (not needed if GuardianCliLocation is specified) - [string] $GuardianCliLocation, # Optional: Direct location of Guardian CLI executable if GuardianPackageName & NugetPackageDirectory are not specified - [string] $Repository=$env:BUILD_REPOSITORY_NAME, # Required: the name of the repository (e.g. dotnet/arcade) - [string] $BranchName=$env:BUILD_SOURCEBRANCH, # Optional: name of branch or version of gdn settings; defaults to master - [string] $SourceDirectory=$env:BUILD_SOURCESDIRECTORY, # Required: the directory where source files are located - [string] $ArtifactsDirectory = (Join-Path $env:BUILD_ARTIFACTSTAGINGDIRECTORY ('artifacts')), # Required: the directory where build artifacts are located - [string] $AzureDevOpsAccessToken, # Required: access token for dnceng; should be provided via KeyVault - - # Optional: list of SDL tools to run on source code. See 'configure-sdl-tool.ps1' for tools list - # format. - [object[]] $SourceToolsList, - # Optional: list of SDL tools to run on built artifacts. See 'configure-sdl-tool.ps1' for tools - # list format. - [object[]] $ArtifactToolsList, - # Optional: list of SDL tools to run without automatically specifying a target directory. See - # 'configure-sdl-tool.ps1' for tools list format. - [object[]] $CustomToolsList, - - [bool] $TsaPublish=$False, # Optional: true will publish results to TSA; only set to true after onboarding to TSA; TSA is the automated framework used to upload test results as bugs. - [string] $TsaBranchName=$env:BUILD_SOURCEBRANCH, # Optional: required for TSA publish; defaults to $(Build.SourceBranchName); TSA is the automated framework used to upload test results as bugs. - [string] $TsaRepositoryName=$env:BUILD_REPOSITORY_NAME, # Optional: TSA repository name; will be generated automatically if not submitted; TSA is the automated framework used to upload test results as bugs. - [string] $BuildNumber=$env:BUILD_BUILDNUMBER, # Optional: required for TSA publish; defaults to $(Build.BuildNumber) - [bool] $UpdateBaseline=$False, # Optional: if true, will update the baseline in the repository; should only be run after fixing any issues which need to be fixed - [bool] $TsaOnboard=$False, # Optional: if true, will onboard the repository to TSA; should only be run once; TSA is the automated framework used to upload test results as bugs. - [string] $TsaInstanceUrl, # Optional: only needed if TsaOnboard or TsaPublish is true; the instance-url registered with TSA; TSA is the automated framework used to upload test results as bugs. - [string] $TsaCodebaseName, # Optional: only needed if TsaOnboard or TsaPublish is true; the name of the codebase registered with TSA; TSA is the automated framework used to upload test results as bugs. - [string] $TsaProjectName, # Optional: only needed if TsaOnboard or TsaPublish is true; the name of the project registered with TSA; TSA is the automated framework used to upload test results as bugs. - [string] $TsaNotificationEmail, # Optional: only needed if TsaOnboard is true; the email(s) which will receive notifications of TSA bug filings (e.g. alias@microsoft.com); TSA is the automated framework used to upload test results as bugs. - [string] $TsaCodebaseAdmin, # Optional: only needed if TsaOnboard is true; the aliases which are admins of the TSA codebase (e.g. DOMAIN\alias); TSA is the automated framework used to upload test results as bugs. - [string] $TsaBugAreaPath, # Optional: only needed if TsaOnboard is true; the area path where TSA will file bugs in AzDO; TSA is the automated framework used to upload test results as bugs. - [string] $TsaIterationPath, # Optional: only needed if TsaOnboard is true; the iteration path where TSA will file bugs in AzDO; TSA is the automated framework used to upload test results as bugs. - [string] $GuardianLoggerLevel='Standard', # Optional: the logger level for the Guardian CLI; options are Trace, Verbose, Standard, Warning, and Error - [string[]] $CrScanAdditionalRunConfigParams, # Optional: Additional Params to custom build a CredScan run config in the format @("xyz:abc","sdf:1") - [string[]] $PoliCheckAdditionalRunConfigParams, # Optional: Additional Params to custom build a Policheck run config in the format @("xyz:abc","sdf:1") - [string[]] $CodeQLAdditionalRunConfigParams, # Optional: Additional Params to custom build a Semmle/CodeQL run config in the format @("xyz < abc","sdf < 1") - [string[]] $BinskimAdditionalRunConfigParams, # Optional: Additional Params to custom build a Binskim run config in the format @("xyz < abc","sdf < 1") - [bool] $BreakOnFailure=$False # Optional: Fail the build if there were errors during the run -) - -try { - $ErrorActionPreference = 'Stop' - Set-StrictMode -Version 2.0 - $disableConfigureToolsetImport = $true - $global:LASTEXITCODE = 0 - - # `tools.ps1` checks $ci to perform some actions. Since the SDL - # scripts don't necessarily execute in the same agent that run the - # build.ps1/sh script this variable isn't automatically set. - $ci = $true - . $PSScriptRoot\..\tools.ps1 - - #Replace repo names to the format of org/repo - if (!($Repository.contains('/'))) { - $RepoName = $Repository -replace '(.*?)-(.*)', '$1/$2'; - } - else{ - $RepoName = $Repository; - } - - if ($GuardianPackageName) { - $guardianCliLocation = Join-Path $NugetPackageDirectory (Join-Path $GuardianPackageName (Join-Path 'tools' 'guardian.cmd')) - } else { - $guardianCliLocation = $GuardianCliLocation - } - - $workingDirectory = (Split-Path $SourceDirectory -Parent) - $ValidPath = Test-Path $guardianCliLocation - - if ($ValidPath -eq $False) - { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message 'Invalid Guardian CLI Location.' - ExitWithExitCode 1 - } - - Exec-BlockVerbosely { - & $(Join-Path $PSScriptRoot 'init-sdl.ps1') -GuardianCliLocation $guardianCliLocation -Repository $RepoName -BranchName $BranchName -WorkingDirectory $workingDirectory -AzureDevOpsAccessToken $AzureDevOpsAccessToken -GuardianLoggerLevel $GuardianLoggerLevel - } - $gdnFolder = Join-Path $workingDirectory '.gdn' - - if ($TsaOnboard) { - if ($TsaCodebaseName -and $TsaNotificationEmail -and $TsaCodebaseAdmin -and $TsaBugAreaPath) { - Exec-BlockVerbosely { - & $guardianCliLocation tsa-onboard --codebase-name "$TsaCodebaseName" --notification-alias "$TsaNotificationEmail" --codebase-admin "$TsaCodebaseAdmin" --instance-url "$TsaInstanceUrl" --project-name "$TsaProjectName" --area-path "$TsaBugAreaPath" --iteration-path "$TsaIterationPath" --working-directory $workingDirectory --logger-level $GuardianLoggerLevel - } - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Guardian tsa-onboard failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - } else { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message 'Could not onboard to TSA -- not all required values ($TsaCodebaseName, $TsaNotificationEmail, $TsaCodebaseAdmin, $TsaBugAreaPath) were specified.' - ExitWithExitCode 1 - } - } - - # Configure a list of tools with a default target directory. Populates the ".gdn/r" directory. - function Configure-ToolsList([object[]] $tools, [string] $targetDirectory) { - if ($tools -and $tools.Count -gt 0) { - Exec-BlockVerbosely { - & $(Join-Path $PSScriptRoot 'configure-sdl-tool.ps1') ` - -GuardianCliLocation $guardianCliLocation ` - -WorkingDirectory $workingDirectory ` - -TargetDirectory $targetDirectory ` - -GdnFolder $gdnFolder ` - -ToolsList $tools ` - -AzureDevOpsAccessToken $AzureDevOpsAccessToken ` - -GuardianLoggerLevel $GuardianLoggerLevel ` - -CrScanAdditionalRunConfigParams $CrScanAdditionalRunConfigParams ` - -PoliCheckAdditionalRunConfigParams $PoliCheckAdditionalRunConfigParams ` - -CodeQLAdditionalRunConfigParams $CodeQLAdditionalRunConfigParams ` - -BinskimAdditionalRunConfigParams $BinskimAdditionalRunConfigParams - if ($BreakOnFailure) { - Exit-IfNZEC "Sdl" - } - } - } - } - - # Configure Artifact and Source tools with default Target directories. - Configure-ToolsList $ArtifactToolsList $ArtifactsDirectory - Configure-ToolsList $SourceToolsList $SourceDirectory - # Configure custom tools with no default Target directory. - Configure-ToolsList $CustomToolsList $null - - # At this point, all tools are configured in the ".gdn" directory. Run them all in a single call. - # (If we used "run" multiple times, each run would overwrite data from earlier runs.) - Exec-BlockVerbosely { - & $(Join-Path $PSScriptRoot 'run-sdl.ps1') ` - -GuardianCliLocation $guardianCliLocation ` - -WorkingDirectory $SourceDirectory ` - -UpdateBaseline $UpdateBaseline ` - -GdnFolder $gdnFolder - } - - if ($TsaPublish) { - if ($TsaBranchName -and $BuildNumber) { - if (-not $TsaRepositoryName) { - $TsaRepositoryName = "$($Repository)-$($BranchName)" - } - Exec-BlockVerbosely { - & $guardianCliLocation tsa-publish --all-tools --repository-name "$TsaRepositoryName" --branch-name "$TsaBranchName" --build-number "$BuildNumber" --onboard $True --codebase-name "$TsaCodebaseName" --notification-alias "$TsaNotificationEmail" --codebase-admin "$TsaCodebaseAdmin" --instance-url "$TsaInstanceUrl" --project-name "$TsaProjectName" --area-path "$TsaBugAreaPath" --iteration-path "$TsaIterationPath" --working-directory $workingDirectory --logger-level $GuardianLoggerLevel - } - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Guardian tsa-publish failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - } else { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message 'Could not publish to TSA -- not all required values ($TsaBranchName, $BuildNumber) were specified.' - ExitWithExitCode 1 - } - } - - if ($BreakOnFailure) { - Write-Host "Failing the build in case of breaking results..." - Exec-BlockVerbosely { - & $guardianCliLocation break --working-directory $workingDirectory --logger-level $GuardianLoggerLevel - } - } else { - Write-Host "Letting the build pass even if there were breaking results..." - } -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ - exit 1 -} diff --git a/src/arcade/eng/common/sdl/extract-artifact-archives.ps1 b/src/arcade/eng/common/sdl/extract-artifact-archives.ps1 deleted file mode 100644 index 68da4fbf257..00000000000 --- a/src/arcade/eng/common/sdl/extract-artifact-archives.ps1 +++ /dev/null @@ -1,63 +0,0 @@ -# This script looks for each archive file in a directory and extracts it into the target directory. -# For example, the file "$InputPath/bin.tar.gz" extracts to "$ExtractPath/bin.tar.gz.extracted/**". -# Uses the "tar" utility added to Windows 10 / Windows 2019 that supports tar.gz and zip. -param( - # Full path to directory where archives are stored. - [Parameter(Mandatory=$true)][string] $InputPath, - # Full path to directory to extract archives into. May be the same as $InputPath. - [Parameter(Mandatory=$true)][string] $ExtractPath -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 - -$disableConfigureToolsetImport = $true - -try { - # `tools.ps1` checks $ci to perform some actions. Since the SDL - # scripts don't necessarily execute in the same agent that run the - # build.ps1/sh script this variable isn't automatically set. - $ci = $true - . $PSScriptRoot\..\tools.ps1 - - Measure-Command { - $jobs = @() - - # Find archive files for non-Windows and Windows builds. - $archiveFiles = @( - Get-ChildItem (Join-Path $InputPath "*.tar.gz") - Get-ChildItem (Join-Path $InputPath "*.zip") - ) - - foreach ($targzFile in $archiveFiles) { - $jobs += Start-Job -ScriptBlock { - $file = $using:targzFile - $fileName = [System.IO.Path]::GetFileName($file) - $extractDir = Join-Path $using:ExtractPath "$fileName.extracted" - - New-Item $extractDir -ItemType Directory -Force | Out-Null - - Write-Host "Extracting '$file' to '$extractDir'..." - - # Pipe errors to stdout to prevent PowerShell detecting them and quitting the job early. - # This type of quit skips the catch, so we wouldn't be able to tell which file triggered the - # error. Save output so it can be stored in the exception string along with context. - $output = tar -xf $file -C $extractDir 2>&1 - # Handle NZEC manually rather than using Exit-IfNZEC: we are in a background job, so we - # don't have access to the outer scope. - if ($LASTEXITCODE -ne 0) { - throw "Error extracting '$file': non-zero exit code ($LASTEXITCODE). Output: '$output'" - } - - Write-Host "Extracted to $extractDir" - } - } - - Receive-Job $jobs -Wait - } -} -catch { - Write-Host $_ - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/sdl/extract-artifact-packages.ps1 b/src/arcade/eng/common/sdl/extract-artifact-packages.ps1 deleted file mode 100644 index f031ed5b25e..00000000000 --- a/src/arcade/eng/common/sdl/extract-artifact-packages.ps1 +++ /dev/null @@ -1,82 +0,0 @@ -param( - [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where artifact packages are stored - [Parameter(Mandatory=$true)][string] $ExtractPath # Full path to directory where the packages will be extracted -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 - -$disableConfigureToolsetImport = $true - -function ExtractArtifacts { - if (!(Test-Path $InputPath)) { - Write-Host "Input Path does not exist: $InputPath" - ExitWithExitCode 0 - } - $Jobs = @() - Get-ChildItem "$InputPath\*.nupkg" | - ForEach-Object { - $Jobs += Start-Job -ScriptBlock $ExtractPackage -ArgumentList $_.FullName - } - - foreach ($Job in $Jobs) { - Wait-Job -Id $Job.Id | Receive-Job - } -} - -try { - # `tools.ps1` checks $ci to perform some actions. Since the SDL - # scripts don't necessarily execute in the same agent that run the - # build.ps1/sh script this variable isn't automatically set. - $ci = $true - . $PSScriptRoot\..\tools.ps1 - - $ExtractPackage = { - param( - [string] $PackagePath # Full path to a NuGet package - ) - - if (!(Test-Path $PackagePath)) { - Write-PipelineTelemetryError -Category 'Build' -Message "Input file does not exist: $PackagePath" - ExitWithExitCode 1 - } - - $RelevantExtensions = @('.dll', '.exe', '.pdb') - Write-Host -NoNewLine 'Extracting ' ([System.IO.Path]::GetFileName($PackagePath)) '...' - - $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath) - $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId - - Add-Type -AssemblyName System.IO.Compression.FileSystem - - [System.IO.Directory]::CreateDirectory($ExtractPath); - - try { - $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath) - - $zip.Entries | - Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} | - ForEach-Object { - $TargetPath = Join-Path -Path $ExtractPath -ChildPath (Split-Path -Path $_.FullName) - [System.IO.Directory]::CreateDirectory($TargetPath); - - $TargetFile = Join-Path -Path $ExtractPath -ChildPath $_.FullName - [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile) - } - } - catch { - Write-Host $_ - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ - ExitWithExitCode 1 - } - finally { - $zip.Dispose() - } - } - Measure-Command { ExtractArtifacts } -} -catch { - Write-Host $_ - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/sdl/init-sdl.ps1 b/src/arcade/eng/common/sdl/init-sdl.ps1 deleted file mode 100644 index 3ac1d92b370..00000000000 --- a/src/arcade/eng/common/sdl/init-sdl.ps1 +++ /dev/null @@ -1,55 +0,0 @@ -Param( - [string] $GuardianCliLocation, - [string] $Repository, - [string] $BranchName='master', - [string] $WorkingDirectory, - [string] $AzureDevOpsAccessToken, - [string] $GuardianLoggerLevel='Standard' -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 -$disableConfigureToolsetImport = $true -$global:LASTEXITCODE = 0 - -# `tools.ps1` checks $ci to perform some actions. Since the SDL -# scripts don't necessarily execute in the same agent that run the -# build.ps1/sh script this variable isn't automatically set. -$ci = $true -. $PSScriptRoot\..\tools.ps1 - -# Don't display the console progress UI - it's a huge perf hit -$ProgressPreference = 'SilentlyContinue' - -# Construct basic auth from AzDO access token; construct URI to the repository's gdn folder stored in that repository; construct location of zip file -$encodedPat = [Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$AzureDevOpsAccessToken")) -$escapedRepository = [Uri]::EscapeDataString("/$Repository/$BranchName/.gdn") -$uri = "https://dev.azure.com/dnceng/internal/_apis/git/repositories/sdl-tool-cfg/Items?path=$escapedRepository&versionDescriptor[versionOptions]=0&`$format=zip&api-version=5.0" -$zipFile = "$WorkingDirectory/gdn.zip" - -Add-Type -AssemblyName System.IO.Compression.FileSystem -$gdnFolder = (Join-Path $WorkingDirectory '.gdn') - -try { - # if the folder does not exist, we'll do a guardian init and push it to the remote repository - Write-Host 'Initializing Guardian...' - Write-Host "$GuardianCliLocation init --working-directory $WorkingDirectory --logger-level $GuardianLoggerLevel" - & $GuardianCliLocation init --working-directory $WorkingDirectory --logger-level $GuardianLoggerLevel - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Build' -Message "Guardian init failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - # We create the mainbaseline so it can be edited later - Write-Host "$GuardianCliLocation baseline --working-directory $WorkingDirectory --name mainbaseline" - & $GuardianCliLocation baseline --working-directory $WorkingDirectory --name mainbaseline - if ($LASTEXITCODE -ne 0) { - Write-PipelineTelemetryError -Force -Category 'Build' -Message "Guardian baseline failed with exit code $LASTEXITCODE." - ExitWithExitCode $LASTEXITCODE - } - ExitWithExitCode 0 -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/sdl/run-sdl.ps1 b/src/arcade/eng/common/sdl/run-sdl.ps1 deleted file mode 100644 index 2eac8c78f10..00000000000 --- a/src/arcade/eng/common/sdl/run-sdl.ps1 +++ /dev/null @@ -1,49 +0,0 @@ -Param( - [string] $GuardianCliLocation, - [string] $WorkingDirectory, - [string] $GdnFolder, - [string] $UpdateBaseline, - [string] $GuardianLoggerLevel='Standard' -) - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 -$disableConfigureToolsetImport = $true -$global:LASTEXITCODE = 0 - -try { - # `tools.ps1` checks $ci to perform some actions. Since the SDL - # scripts don't necessarily execute in the same agent that run the - # build.ps1/sh script this variable isn't automatically set. - $ci = $true - . $PSScriptRoot\..\tools.ps1 - - # We store config files in the r directory of .gdn - $gdnConfigPath = Join-Path $GdnFolder 'r' - $ValidPath = Test-Path $GuardianCliLocation - - if ($ValidPath -eq $False) - { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "Invalid Guardian CLI Location." - ExitWithExitCode 1 - } - - $gdnConfigFiles = Get-ChildItem $gdnConfigPath -Recurse -Include '*.gdnconfig' - Write-Host "Discovered Guardian config files:" - $gdnConfigFiles | Out-String | Write-Host - - Exec-BlockVerbosely { - & $GuardianCliLocation run ` - --working-directory $WorkingDirectory ` - --baseline mainbaseline ` - --update-baseline $UpdateBaseline ` - --logger-level $GuardianLoggerLevel ` - --config @gdnConfigFiles - Exit-IfNZEC "Sdl" - } -} -catch { - Write-Host $_.ScriptStackTrace - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/sdl/sdl.ps1 b/src/arcade/eng/common/sdl/sdl.ps1 deleted file mode 100644 index 648c5068d7d..00000000000 --- a/src/arcade/eng/common/sdl/sdl.ps1 +++ /dev/null @@ -1,38 +0,0 @@ - -function Install-Gdn { - param( - [Parameter(Mandatory=$true)] - [string]$Path, - - # If omitted, install the latest version of Guardian, otherwise install that specific version. - [string]$Version - ) - - $ErrorActionPreference = 'Stop' - Set-StrictMode -Version 2.0 - $disableConfigureToolsetImport = $true - $global:LASTEXITCODE = 0 - - # `tools.ps1` checks $ci to perform some actions. Since the SDL - # scripts don't necessarily execute in the same agent that run the - # build.ps1/sh script this variable isn't automatically set. - $ci = $true - . $PSScriptRoot\..\tools.ps1 - - $argumentList = @("install", "Microsoft.Guardian.Cli", "-Source https://securitytools.pkgs.visualstudio.com/_packaging/Guardian/nuget/v3/index.json", "-OutputDirectory $Path", "-NonInteractive", "-NoCache") - - if ($Version) { - $argumentList += "-Version $Version" - } - - Start-Process nuget -Verbose -ArgumentList $argumentList -NoNewWindow -Wait - - $gdnCliPath = Get-ChildItem -Filter guardian.cmd -Recurse -Path $Path - - if (!$gdnCliPath) - { - Write-PipelineTelemetryError -Category 'Sdl' -Message 'Failure installing Guardian' - } - - return $gdnCliPath.FullName -} \ No newline at end of file diff --git a/src/arcade/eng/common/sdl/trim-assets-version.ps1 b/src/arcade/eng/common/sdl/trim-assets-version.ps1 deleted file mode 100644 index 0daa2a9e946..00000000000 --- a/src/arcade/eng/common/sdl/trim-assets-version.ps1 +++ /dev/null @@ -1,75 +0,0 @@ -<# -.SYNOPSIS -Install and run the 'Microsoft.DotNet.VersionTools.Cli' tool with the 'trim-artifacts-version' command to trim the version from the NuGet assets file name. - -.PARAMETER InputPath -Full path to directory where artifact packages are stored - -.PARAMETER Recursive -Search for NuGet packages recursively - -#> - -Param( - [string] $InputPath, - [bool] $Recursive = $true -) - -$CliToolName = "Microsoft.DotNet.VersionTools.Cli" - -function Install-VersionTools-Cli { - param( - [Parameter(Mandatory=$true)][string]$Version - ) - - Write-Host "Installing the package '$CliToolName' with a version of '$version' ..." - $feed = "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" - - $argumentList = @("tool", "install", "--local", "$CliToolName", "--add-source $feed", "--no-cache", "--version $Version", "--create-manifest-if-needed") - Start-Process "$dotnet" -Verbose -ArgumentList $argumentList -NoNewWindow -Wait -} - -# ------------------------------------------------------------------- - -if (!(Test-Path $InputPath)) { - Write-Host "Input Path '$InputPath' does not exist" - ExitWithExitCode 1 -} - -$ErrorActionPreference = 'Stop' -Set-StrictMode -Version 2.0 - -$disableConfigureToolsetImport = $true -$global:LASTEXITCODE = 0 - -# `tools.ps1` checks $ci to perform some actions. Since the SDL -# scripts don't necessarily execute in the same agent that run the -# build.ps1/sh script this variable isn't automatically set. -$ci = $true -. $PSScriptRoot\..\tools.ps1 - -try { - $dotnetRoot = InitializeDotNetCli -install:$true - $dotnet = "$dotnetRoot\dotnet.exe" - - $toolsetVersion = Read-ArcadeSdkVersion - Install-VersionTools-Cli -Version $toolsetVersion - - $cliToolFound = (& "$dotnet" tool list --local | Where-Object {$_.Split(' ')[0] -eq $CliToolName}) - if ($null -eq $cliToolFound) { - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message "The '$CliToolName' tool is not installed." - ExitWithExitCode 1 - } - - Exec-BlockVerbosely { - & "$dotnet" $CliToolName trim-assets-version ` - --assets-path $InputPath ` - --recursive $Recursive - Exit-IfNZEC "Sdl" - } -} -catch { - Write-Host $_ - Write-PipelineTelemetryError -Force -Category 'Sdl' -Message $_ - ExitWithExitCode 1 -} diff --git a/src/arcade/eng/common/template-guidance.md b/src/arcade/eng/common/template-guidance.md deleted file mode 100644 index 98bbc1ded0b..00000000000 --- a/src/arcade/eng/common/template-guidance.md +++ /dev/null @@ -1,133 +0,0 @@ -# Overview - -Arcade provides templates for public (`/templates`) and 1ES pipeline templates (`/templates-official`) scenarios. Pipelines which are required to be managed by 1ES pipeline templates should reference `/templates-offical`, all other pipelines may reference `/templates`. - -## How to use - -Basic guidance is: - -- 1ES Pipeline Template or 1ES Microbuild template runs should reference `eng/common/templates-official`. Any internal production-graded pipeline should use these templates. - -- All other runs should reference `eng/common/templates`. - -See [azure-pipelines.yml](../../azure-pipelines.yml) (templates-official example) or [azure-pipelines-pr.yml](../../azure-pipelines-pr.yml) (templates example) for examples. - -#### The `templateIs1ESManaged` parameter - -The `templateIs1ESManaged` is available on most templates and affects which of the variants is used for nested templates. See [Development Notes](#development-notes) below for more information on the `templateIs1ESManaged1 parameter. - -- For templates under `job/`, `jobs/`, `steps`, or `post-build/`, this parameter must be explicitly set. - -## Multiple outputs - -1ES pipeline templates impose a policy where every publish artifact execution results in additional security scans being injected into your pipeline. When using `templates-official/jobs/jobs.yml`, Arcade reduces the number of additional security injections by gathering all publishing outputs into the [Build.ArtifactStagingDirectory](https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#build-variables-devops-services), and utilizing the [outputParentDirectory](https://eng.ms/docs/cloud-ai-platform/devdiv/one-engineering-system-1es/1es-docs/1es-pipeline-templates/features/outputs#multiple-outputs) feature of 1ES pipeline templates. When implementing your pipeline, if you ensure publish artifacts are located in the `$(Build.ArtifactStagingDirectory)`, and utilize the 1ES provided template context, then you can reduce the number of security scans for your pipeline. - -Example: -``` yaml -# azure-pipelines.yml -extends: - template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate - parameters: - stages: - - stage: build - jobs: - - template: /eng/common/templates-official/jobs/jobs.yml@self - parameters: - # 1ES makes use of outputs to reduce security task injection overhead - templateContext: - outputs: - - output: pipelineArtifact - displayName: 'Publish logs from source' - continueOnError: true - condition: always() - targetPath: $(Build.ArtifactStagingDirectory)/artifacts/log - artifactName: Logs - jobs: - - job: Windows - steps: - - script: echo "friendly neighborhood" > artifacts/marvel/spiderman.txt - # copy build outputs to artifact staging directory for publishing - - task: CopyFiles@2 - displayName: Gather build output - inputs: - SourceFolder: '$(Build.SourcesDirectory)/artifacts/marvel' - Contents: '**' - TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/marvel' -``` - -Note: Multiple outputs are ONLY applicable to 1ES PT publishing (only usable when referencing `templates-official`). - -## Development notes - -**Folder / file structure** - -``` text -eng\common\ - [templates || templates-official]\ - job\ - job.yml (shim + artifact publishing logic) - onelocbuild.yml (shim) - publish-build-assets.yml (shim) - source-build.yml (shim) - source-index-stage1.yml (shim) - jobs\ - codeql-build.yml (shim) - jobs.yml (shim) - source-build.yml (shim) - post-build\ - post-build.yml (shim) - common-variabls.yml (shim) - setup-maestro-vars.yml (shim) - steps\ - publish-build-artifacts.yml (logic) - publish-pipeline-artifacts.yml (logic) - component-governance.yml (shim) - generate-sbom.yml (shim) - publish-logs.yml (shim) - retain-build.yml (shim) - send-to-helix.yml (shim) - source-build.yml (shim) - variables\ - pool-providers.yml (logic + redirect) # templates/variables/pool-providers.yml will redirect to templates-official/variables/pool-providers.yml if you are running in the internal project - sdl-variables.yml (logic) - core-templates\ - job\ - job.yml (logic) - onelocbuild.yml (logic) - publish-build-assets.yml (logic) - source-build.yml (logic) - source-index-stage1.yml (logic) - jobs\ - codeql-build.yml (logic) - jobs.yml (logic) - source-build.yml (logic) - post-build\ - common-variabls.yml (logic) - post-build.yml (logic) - setup-maestro-vars.yml (logic) - steps\ - component-governance.yml (logic) - generate-sbom.yml (logic) - publish-build-artifacts.yml (redirect) - publish-logs.yml (logic) - publish-pipeline-artifacts.yml (redirect) - retain-build.yml (logic) - send-to-helix.yml (logic) - source-build.yml (logic) - variables\ - pool-providers.yml (redirect) -``` - -In the table above, a file is designated as "shim", "logic", or "redirect". - -- shim - represents a yaml file which is an intermediate step between pipeline logic and .Net Core Engineering's templates (`core-templates`) and defines the `is1ESPipeline` parameter value. - -- logic - represents actual base template logic. - -- redirect- represents a file in `core-templates` which redirects to the "logic" file in either `templates` or `templates-official`. - -Logic for Arcade's templates live **primarily** in the `core-templates` folder. The exceptions to the location of the logic files are around artifact publishing, which is handled differently between 1es pipeline templates and standard templates. `templates` and `templates-official` provide shim entry points which redirect to `core-templates` while also defining the `is1ESPipeline` parameter. If a shim is referenced in `templates`, then `is1ESPipeline` is set to `false`. If a shim is referenced in `templates-official`, then `is1ESPipeline` is set to `true`. - -Within `templates` and `templates-official`, the templates at the "stages", and "jobs" / "job" level have been replaced with shims. Templates at the "steps" and "variables" level are typically too granular to be replaced with shims and instead persist logic which is directly applicable to either scenario. - -Within `core-templates`, there are a handful of places where logic is dependent on which shim entry point was used. In those places, we redirect back to the respective logic file in `templates` or `templates-official`. diff --git a/src/arcade/eng/common/templates-official/job/onelocbuild.yml b/src/arcade/eng/common/templates-official/job/onelocbuild.yml deleted file mode 100644 index 0f0c514b912..00000000000 --- a/src/arcade/eng/common/templates-official/job/onelocbuild.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/job/onelocbuild.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/job/publish-build-assets.yml b/src/arcade/eng/common/templates-official/job/publish-build-assets.yml deleted file mode 100644 index d667a70e8de..00000000000 --- a/src/arcade/eng/common/templates-official/job/publish-build-assets.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/job/publish-build-assets.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/job/source-build.yml b/src/arcade/eng/common/templates-official/job/source-build.yml deleted file mode 100644 index 1a480034b67..00000000000 --- a/src/arcade/eng/common/templates-official/job/source-build.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/job/source-build.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/job/source-index-stage1.yml b/src/arcade/eng/common/templates-official/job/source-index-stage1.yml deleted file mode 100644 index 6d5ead316f9..00000000000 --- a/src/arcade/eng/common/templates-official/job/source-index-stage1.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/job/source-index-stage1.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/jobs/codeql-build.yml b/src/arcade/eng/common/templates-official/jobs/codeql-build.yml deleted file mode 100644 index a726322ecfe..00000000000 --- a/src/arcade/eng/common/templates-official/jobs/codeql-build.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/jobs/codeql-build.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/jobs/jobs.yml b/src/arcade/eng/common/templates-official/jobs/jobs.yml deleted file mode 100644 index 007deddaea0..00000000000 --- a/src/arcade/eng/common/templates-official/jobs/jobs.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/jobs/jobs.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/jobs/source-build.yml b/src/arcade/eng/common/templates-official/jobs/source-build.yml deleted file mode 100644 index 483e7b611f3..00000000000 --- a/src/arcade/eng/common/templates-official/jobs/source-build.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/jobs/source-build.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/post-build/common-variables.yml b/src/arcade/eng/common/templates-official/post-build/common-variables.yml deleted file mode 100644 index c32fc49233f..00000000000 --- a/src/arcade/eng/common/templates-official/post-build/common-variables.yml +++ /dev/null @@ -1,8 +0,0 @@ -variables: -- template: /eng/common/core-templates/post-build/common-variables.yml - parameters: - # Specifies whether to use 1ES - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/post-build/post-build.yml b/src/arcade/eng/common/templates-official/post-build/post-build.yml deleted file mode 100644 index 2364c0fd4a5..00000000000 --- a/src/arcade/eng/common/templates-official/post-build/post-build.yml +++ /dev/null @@ -1,8 +0,0 @@ -stages: -- template: /eng/common/core-templates/post-build/post-build.yml - parameters: - # Specifies whether to use 1ES - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/post-build/setup-maestro-vars.yml b/src/arcade/eng/common/templates-official/post-build/setup-maestro-vars.yml deleted file mode 100644 index 024397d8786..00000000000 --- a/src/arcade/eng/common/templates-official/post-build/setup-maestro-vars.yml +++ /dev/null @@ -1,8 +0,0 @@ -steps: -- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml - parameters: - # Specifies whether to use 1ES - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/steps/component-governance.yml b/src/arcade/eng/common/templates-official/steps/component-governance.yml deleted file mode 100644 index 30bb3985ca2..00000000000 --- a/src/arcade/eng/common/templates-official/steps/component-governance.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/component-governance.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/enable-internal-runtimes.yml b/src/arcade/eng/common/templates-official/steps/enable-internal-runtimes.yml deleted file mode 100644 index f9dd238c6cd..00000000000 --- a/src/arcade/eng/common/templates-official/steps/enable-internal-runtimes.yml +++ /dev/null @@ -1,9 +0,0 @@ -# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' -# variable with the base64-encoded SAS token, by default -steps: -- template: /eng/common/core-templates/steps/enable-internal-runtimes.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/enable-internal-sources.yml b/src/arcade/eng/common/templates-official/steps/enable-internal-sources.yml deleted file mode 100644 index e6d57182284..00000000000 --- a/src/arcade/eng/common/templates-official/steps/enable-internal-sources.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/enable-internal-sources.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/steps/generate-sbom.yml b/src/arcade/eng/common/templates-official/steps/generate-sbom.yml deleted file mode 100644 index 9a89a4706d9..00000000000 --- a/src/arcade/eng/common/templates-official/steps/generate-sbom.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/generate-sbom.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/get-delegation-sas.yml b/src/arcade/eng/common/templates-official/steps/get-delegation-sas.yml deleted file mode 100644 index c5a9c1f8275..00000000000 --- a/src/arcade/eng/common/templates-official/steps/get-delegation-sas.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/get-delegation-sas.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/get-federated-access-token.yml b/src/arcade/eng/common/templates-official/steps/get-federated-access-token.yml deleted file mode 100644 index c8dcf6b8139..00000000000 --- a/src/arcade/eng/common/templates-official/steps/get-federated-access-token.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/get-federated-access-token.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/steps/publish-logs.yml b/src/arcade/eng/common/templates-official/steps/publish-logs.yml deleted file mode 100644 index 579fd531e94..00000000000 --- a/src/arcade/eng/common/templates-official/steps/publish-logs.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/publish-logs.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/publish-pipeline-artifacts.yml b/src/arcade/eng/common/templates-official/steps/publish-pipeline-artifacts.yml deleted file mode 100644 index 172f9f0fdc9..00000000000 --- a/src/arcade/eng/common/templates-official/steps/publish-pipeline-artifacts.yml +++ /dev/null @@ -1,28 +0,0 @@ -parameters: -- name: is1ESPipeline - type: boolean - default: true - -- name: args - type: object - default: {} - -steps: -- ${{ if ne(parameters.is1ESPipeline, true) }}: - - 'eng/common/templates-official cannot be referenced from a non-1ES managed template': error -- task: 1ES.PublishPipelineArtifact@1 - displayName: ${{ coalesce(parameters.args.displayName, 'Publish to Build Artifact') }} - ${{ if parameters.args.condition }}: - condition: ${{ parameters.args.condition }} - ${{ else }}: - condition: succeeded() - ${{ if parameters.args.continueOnError }}: - continueOnError: ${{ parameters.args.continueOnError }} - inputs: - targetPath: ${{ parameters.args.targetPath }} - ${{ if parameters.args.artifactName }}: - artifactName: ${{ parameters.args.artifactName }} - ${{ if parameters.args.properties }}: - properties: ${{ parameters.args.properties }} - ${{ if parameters.args.sbomEnabled }}: - sbomEnabled: ${{ parameters.args.sbomEnabled }} diff --git a/src/arcade/eng/common/templates-official/steps/retain-build.yml b/src/arcade/eng/common/templates-official/steps/retain-build.yml deleted file mode 100644 index 5594551508a..00000000000 --- a/src/arcade/eng/common/templates-official/steps/retain-build.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/retain-build.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/send-to-helix.yml b/src/arcade/eng/common/templates-official/steps/send-to-helix.yml deleted file mode 100644 index 6500f21bf84..00000000000 --- a/src/arcade/eng/common/templates-official/steps/send-to-helix.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/send-to-helix.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/steps/source-build.yml b/src/arcade/eng/common/templates-official/steps/source-build.yml deleted file mode 100644 index 8f92c49e7b0..00000000000 --- a/src/arcade/eng/common/templates-official/steps/source-build.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/source-build.yml - parameters: - is1ESPipeline: true - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates-official/variables/pool-providers.yml b/src/arcade/eng/common/templates-official/variables/pool-providers.yml deleted file mode 100644 index 1f308b24efc..00000000000 --- a/src/arcade/eng/common/templates-official/variables/pool-providers.yml +++ /dev/null @@ -1,45 +0,0 @@ -# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool, -# otherwise it should go into the "normal" pools. This separates out the queueing and billing of released branches. - -# Motivation: -# Once a given branch of a repository's output has been officially "shipped" once, it is then considered to be COGS -# (Cost of goods sold) and should be moved to a servicing pool provider. This allows both separation of queueing -# (allowing release builds and main PR builds to not intefere with each other) and billing (required for COGS. -# Additionally, the pool provider name itself may be subject to change when the .NET Core Engineering Services -# team needs to move resources around and create new and potentially differently-named pools. Using this template -# file from an Arcade-ified repo helps guard against both having to update one's release/* branches and renaming. - -# How to use: -# This yaml assumes your shipped product branches use the naming convention "release/..." (which many do). -# If we find alternate naming conventions in broad usage it can be added to the condition below. -# -# First, import the template in an arcade-ified repo to pick up the variables, e.g.: -# -# variables: -# - template: /eng/common/templates-official/variables/pool-providers.yml -# -# ... then anywhere specifying the pool provider use the runtime variables, -# $(DncEngInternalBuildPool) -# -# pool: -# name: $(DncEngInternalBuildPool) -# image: 1es-windows-2022 - -variables: - # Coalesce the target and source branches so we know when a PR targets a release branch - # If these variables are somehow missing, fall back to main (tends to have more capacity) - - # Any new -Svc alternative pools should have variables added here to allow for splitting work - - - name: DncEngInternalBuildPool - value: $[ - replace( - replace( - eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), - True, - 'NetCore1ESPool-Svc-Internal' - ), - False, - 'NetCore1ESPool-Internal' - ) - ] \ No newline at end of file diff --git a/src/arcade/eng/common/templates-official/variables/sdl-variables.yml b/src/arcade/eng/common/templates-official/variables/sdl-variables.yml deleted file mode 100644 index dbdd66d4a4b..00000000000 --- a/src/arcade/eng/common/templates-official/variables/sdl-variables.yml +++ /dev/null @@ -1,7 +0,0 @@ -variables: -# The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in -# sync with the packages.config file. -- name: DefaultGuardianVersion - value: 0.109.0 -- name: GuardianPackagesConfigFile - value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config \ No newline at end of file diff --git a/src/arcade/eng/common/templates/job/onelocbuild.yml b/src/arcade/eng/common/templates/job/onelocbuild.yml deleted file mode 100644 index ff829dc4c70..00000000000 --- a/src/arcade/eng/common/templates/job/onelocbuild.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/job/onelocbuild.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/job/publish-build-assets.yml b/src/arcade/eng/common/templates/job/publish-build-assets.yml deleted file mode 100644 index ab2edec2adb..00000000000 --- a/src/arcade/eng/common/templates/job/publish-build-assets.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/job/publish-build-assets.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/job/source-build.yml b/src/arcade/eng/common/templates/job/source-build.yml deleted file mode 100644 index e44d47b1d76..00000000000 --- a/src/arcade/eng/common/templates/job/source-build.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/job/source-build.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/job/source-index-stage1.yml b/src/arcade/eng/common/templates/job/source-index-stage1.yml deleted file mode 100644 index 89f3291593c..00000000000 --- a/src/arcade/eng/common/templates/job/source-index-stage1.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/job/source-index-stage1.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/jobs/codeql-build.yml b/src/arcade/eng/common/templates/jobs/codeql-build.yml deleted file mode 100644 index 517f24d6a52..00000000000 --- a/src/arcade/eng/common/templates/jobs/codeql-build.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/jobs/codeql-build.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/jobs/jobs.yml b/src/arcade/eng/common/templates/jobs/jobs.yml deleted file mode 100644 index 388e9037b3e..00000000000 --- a/src/arcade/eng/common/templates/jobs/jobs.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/jobs/jobs.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/jobs/source-build.yml b/src/arcade/eng/common/templates/jobs/source-build.yml deleted file mode 100644 index 818d4c326db..00000000000 --- a/src/arcade/eng/common/templates/jobs/source-build.yml +++ /dev/null @@ -1,7 +0,0 @@ -jobs: -- template: /eng/common/core-templates/jobs/source-build.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/post-build/common-variables.yml b/src/arcade/eng/common/templates/post-build/common-variables.yml deleted file mode 100644 index 7fa10587559..00000000000 --- a/src/arcade/eng/common/templates/post-build/common-variables.yml +++ /dev/null @@ -1,8 +0,0 @@ -variables: -- template: /eng/common/core-templates/post-build/common-variables.yml - parameters: - # Specifies whether to use 1ES - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/post-build/post-build.yml b/src/arcade/eng/common/templates/post-build/post-build.yml deleted file mode 100644 index 53ede714bdd..00000000000 --- a/src/arcade/eng/common/templates/post-build/post-build.yml +++ /dev/null @@ -1,8 +0,0 @@ -stages: -- template: /eng/common/core-templates/post-build/post-build.yml - parameters: - # Specifies whether to use 1ES - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/post-build/setup-maestro-vars.yml b/src/arcade/eng/common/templates/post-build/setup-maestro-vars.yml deleted file mode 100644 index a79fab5b441..00000000000 --- a/src/arcade/eng/common/templates/post-build/setup-maestro-vars.yml +++ /dev/null @@ -1,8 +0,0 @@ -steps: -- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml - parameters: - # Specifies whether to use 1ES - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/steps/component-governance.yml b/src/arcade/eng/common/templates/steps/component-governance.yml deleted file mode 100644 index c12a5f8d21d..00000000000 --- a/src/arcade/eng/common/templates/steps/component-governance.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/component-governance.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/enable-internal-runtimes.yml b/src/arcade/eng/common/templates/steps/enable-internal-runtimes.yml deleted file mode 100644 index b21a8038cc1..00000000000 --- a/src/arcade/eng/common/templates/steps/enable-internal-runtimes.yml +++ /dev/null @@ -1,10 +0,0 @@ -# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' -# variable with the base64-encoded SAS token, by default - -steps: -- template: /eng/common/core-templates/steps/enable-internal-runtimes.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/enable-internal-sources.yml b/src/arcade/eng/common/templates/steps/enable-internal-sources.yml deleted file mode 100644 index 5f87e9abb8a..00000000000 --- a/src/arcade/eng/common/templates/steps/enable-internal-sources.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/enable-internal-sources.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/steps/generate-sbom.yml b/src/arcade/eng/common/templates/steps/generate-sbom.yml deleted file mode 100644 index 26dc00a2e0f..00000000000 --- a/src/arcade/eng/common/templates/steps/generate-sbom.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/generate-sbom.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/get-delegation-sas.yml b/src/arcade/eng/common/templates/steps/get-delegation-sas.yml deleted file mode 100644 index 83760c9798e..00000000000 --- a/src/arcade/eng/common/templates/steps/get-delegation-sas.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/get-delegation-sas.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/get-federated-access-token.yml b/src/arcade/eng/common/templates/steps/get-federated-access-token.yml deleted file mode 100644 index 31e151d9d9e..00000000000 --- a/src/arcade/eng/common/templates/steps/get-federated-access-token.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/get-federated-access-token.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/steps/publish-logs.yml b/src/arcade/eng/common/templates/steps/publish-logs.yml deleted file mode 100644 index 4ea86bd8823..00000000000 --- a/src/arcade/eng/common/templates/steps/publish-logs.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/publish-logs.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/publish-pipeline-artifacts.yml b/src/arcade/eng/common/templates/steps/publish-pipeline-artifacts.yml deleted file mode 100644 index 5dd698b212f..00000000000 --- a/src/arcade/eng/common/templates/steps/publish-pipeline-artifacts.yml +++ /dev/null @@ -1,34 +0,0 @@ -parameters: -- name: is1ESPipeline - type: boolean - default: false - -- name: args - type: object - default: {} - -steps: -- ${{ if eq(parameters.is1ESPipeline, true) }}: - - 'eng/common/templates cannot be referenced from a 1ES managed template': error -- task: PublishPipelineArtifact@1 - displayName: ${{ coalesce(parameters.args.displayName, 'Publish to Build Artifact') }} - ${{ if parameters.args.condition }}: - condition: ${{ parameters.args.condition }} - ${{ else }}: - condition: succeeded() - ${{ if parameters.args.continueOnError }}: - continueOnError: ${{ parameters.args.continueOnError }} - inputs: - targetPath: ${{ parameters.args.targetPath }} - ${{ if parameters.args.artifactName }}: - artifactName: ${{ parameters.args.artifactName }} - ${{ if parameters.args.publishLocation }}: - publishLocation: ${{ parameters.args.publishLocation }} - ${{ if parameters.args.fileSharePath }}: - fileSharePath: ${{ parameters.args.fileSharePath }} - ${{ if parameters.args.Parallel }}: - parallel: ${{ parameters.args.Parallel }} - ${{ if parameters.args.parallelCount }}: - parallelCount: ${{ parameters.args.parallelCount }} - ${{ if parameters.args.properties }}: - properties: ${{ parameters.args.properties }} \ No newline at end of file diff --git a/src/arcade/eng/common/templates/steps/retain-build.yml b/src/arcade/eng/common/templates/steps/retain-build.yml deleted file mode 100644 index 8e841ace3d2..00000000000 --- a/src/arcade/eng/common/templates/steps/retain-build.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/retain-build.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/send-to-helix.yml b/src/arcade/eng/common/templates/steps/send-to-helix.yml deleted file mode 100644 index 39f99fc2762..00000000000 --- a/src/arcade/eng/common/templates/steps/send-to-helix.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/send-to-helix.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/steps/source-build.yml b/src/arcade/eng/common/templates/steps/source-build.yml deleted file mode 100644 index 23c1d6f4e9f..00000000000 --- a/src/arcade/eng/common/templates/steps/source-build.yml +++ /dev/null @@ -1,7 +0,0 @@ -steps: -- template: /eng/common/core-templates/steps/source-build.yml - parameters: - is1ESPipeline: false - - ${{ each parameter in parameters }}: - ${{ parameter.key }}: ${{ parameter.value }} diff --git a/src/arcade/eng/common/templates/variables/pool-providers.yml b/src/arcade/eng/common/templates/variables/pool-providers.yml deleted file mode 100644 index e0b19c14a07..00000000000 --- a/src/arcade/eng/common/templates/variables/pool-providers.yml +++ /dev/null @@ -1,59 +0,0 @@ -# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool, -# otherwise it should go into the "normal" pools. This separates out the queueing and billing of released branches. - -# Motivation: -# Once a given branch of a repository's output has been officially "shipped" once, it is then considered to be COGS -# (Cost of goods sold) and should be moved to a servicing pool provider. This allows both separation of queueing -# (allowing release builds and main PR builds to not intefere with each other) and billing (required for COGS. -# Additionally, the pool provider name itself may be subject to change when the .NET Core Engineering Services -# team needs to move resources around and create new and potentially differently-named pools. Using this template -# file from an Arcade-ified repo helps guard against both having to update one's release/* branches and renaming. - -# How to use: -# This yaml assumes your shipped product branches use the naming convention "release/..." (which many do). -# If we find alternate naming conventions in broad usage it can be added to the condition below. -# -# First, import the template in an arcade-ified repo to pick up the variables, e.g.: -# -# variables: -# - template: /eng/common/templates/variables/pool-providers.yml -# -# ... then anywhere specifying the pool provider use the runtime variables, -# $(DncEngInternalBuildPool) and $ (DncEngPublicBuildPool), e.g.: -# -# pool: -# name: $(DncEngInternalBuildPool) -# demands: ImageOverride -equals windows.vs2019.amd64 -variables: - - ${{ if eq(variables['System.TeamProject'], 'internal') }}: - - template: /eng/common/templates-official/variables/pool-providers.yml - - ${{ else }}: - # Coalesce the target and source branches so we know when a PR targets a release branch - # If these variables are somehow missing, fall back to main (tends to have more capacity) - - # Any new -Svc alternative pools should have variables added here to allow for splitting work - - name: DncEngPublicBuildPool - value: $[ - replace( - replace( - eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), - True, - 'NetCore-Svc-Public' - ), - False, - 'NetCore-Public' - ) - ] - - - name: DncEngInternalBuildPool - value: $[ - replace( - replace( - eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), - True, - 'NetCore1ESPool-Svc-Internal' - ), - False, - 'NetCore1ESPool-Internal' - ) - ] From a78caa7134015eb75ea0dfd1580c7bbc95a79f44 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 26 May 2025 05:57:15 +0000 Subject: [PATCH 68/79] Update dependencies from https://github.com/dotnet/arcade build 20250521.1 (#36143) [release/9.0] Update dependencies from dotnet/arcade --- NuGet.config | 18 ------------------ eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- global.json | 4 ++-- 4 files changed, 9 insertions(+), 27 deletions(-) diff --git a/NuGet.config b/NuGet.config index c9a3b6adfce..d1a8a417e43 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,15 +4,6 @@ - - - - - - - - - @@ -29,15 +20,6 @@ - - - - - - - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f6991d7edc5..1a12e7e2383 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - c62eeb5b5432f9eaa034fbd641ccd9fd0d928fb3 + 086a1771875b63404b4a710d27250fe384dc2810 - + https://github.com/dotnet/arcade - c62eeb5b5432f9eaa034fbd641ccd9fd0d928fb3 + 086a1771875b63404b4a710d27250fe384dc2810 - + https://github.com/dotnet/arcade - c62eeb5b5432f9eaa034fbd641ccd9fd0d928fb3 + 086a1771875b63404b4a710d27250fe384dc2810 diff --git a/eng/Versions.props b/eng/Versions.props index 6a4ce93dacc..9c38f7c2843 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.5 - 9.0.0-beta.25266.2 + 9.0.0-beta.25271.1 17.8.3 diff --git a/global.json b/global.json index c6d0ebb8ab1..b4994f6028b 100644 --- a/global.json +++ b/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25266.2", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25266.2" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25271.1", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25271.1" } } From cda1db546f65c43099b454ca8d6099c0671b0352 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Thu, 29 May 2025 13:56:24 +0200 Subject: [PATCH 69/79] Add missing parentheses for set operations (#36139) Fixes #36105 Fixes #36112 --- .../Query/QuerySqlGenerator.cs | 14 ++++- .../Query/Internal/SqliteQuerySqlGenerator.cs | 63 ++++++++++++++++++- .../NorthwindSetOperationsQueryTestBase.cs | 24 +++++++ ...orthwindSetOperationsQuerySqlServerTest.cs | 61 +++++++++++++++--- 4 files changed, 150 insertions(+), 12 deletions(-) diff --git a/src/EFCore.Relational/Query/QuerySqlGenerator.cs b/src/EFCore.Relational/Query/QuerySqlGenerator.cs index 644dd171dce..612a64d9500 100644 --- a/src/EFCore.Relational/Query/QuerySqlGenerator.cs +++ b/src/EFCore.Relational/Query/QuerySqlGenerator.cs @@ -44,6 +44,9 @@ public class QuerySqlGenerator : SqlExpressionVisitor private static readonly bool UseOldBehavior32375 = AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue32375", out var enabled32375) && enabled32375; + private static readonly bool UseOldBehavior36105 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue36105", out var enabled36105) && enabled36105; + /// /// Creates a new instance of the class. /// @@ -1276,9 +1279,16 @@ static string GetSetOperation(SetOperationBase operation) protected virtual void GenerateSetOperationOperand(SetOperationBase setOperation, SelectExpression operand) { // INTERSECT has higher precedence over UNION and EXCEPT, but otherwise evaluation is left-to-right. - // To preserve meaning, add parentheses whenever a set operation is nested within a different set operation. + // To preserve evaluation order, add parentheses whenever a set operation is nested within a different set operation + // - including different distinctness. + // In addition, EXCEPT is non-commutative (unlike UNION/INTERSECT), so add parentheses for that case too (see #36105). if (IsNonComposedSetOperation(operand) - && operand.Tables[0].GetType() != setOperation.GetType()) + && ((UseOldBehavior36105 && operand.Tables[0].GetType() != setOperation.GetType()) + || (!UseOldBehavior36105 + && operand.Tables[0] is SetOperationBase nestedSetOperation + && (nestedSetOperation is ExceptExpression + || nestedSetOperation.GetType() != setOperation.GetType() + || nestedSetOperation.IsDistinct != setOperation.IsDistinct)))) { _relationalCommandBuilder.AppendLine("("); using (_relationalCommandBuilder.Indent()) diff --git a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQuerySqlGenerator.cs b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQuerySqlGenerator.cs index 3868ed9ae49..db95ce7c2da 100644 --- a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQuerySqlGenerator.cs +++ b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQuerySqlGenerator.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Diagnostics.CodeAnalysis; using Microsoft.EntityFrameworkCore.Query.SqlExpressions; using Microsoft.EntityFrameworkCore.Sqlite.Query.SqlExpressions.Internal; @@ -14,6 +15,9 @@ namespace Microsoft.EntityFrameworkCore.Sqlite.Query.Internal; /// public class SqliteQuerySqlGenerator : QuerySqlGenerator { + private static readonly bool UseOldBehavior36112 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue36112", out var enabled36112) && enabled36112; + /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in @@ -98,8 +102,63 @@ protected override void GenerateLimitOffset(SelectExpression selectExpression) /// doing so can result in application failures when updating to a new Entity Framework Core release. /// protected override void GenerateSetOperationOperand(SetOperationBase setOperation, SelectExpression operand) - // Sqlite doesn't support parentheses around set operation operands - => Visit(operand); + { + // Most databases support parentheses around set operations to determine evaluation order, but SQLite does not; + // however, we can instead wrap the nested set operation in a SELECT * FROM () to achieve the same effect. + // The following is a copy-paste of the base implementation from QuerySqlGenerator, adding the SELECT. + + // INTERSECT has higher precedence over UNION and EXCEPT, but otherwise evaluation is left-to-right. + // To preserve evaluation order, add parentheses whenever a set operation is nested within a different set operation + // - including different distinctness. + // In addition, EXCEPT is non-commutative (unlike UNION/INTERSECT), so add parentheses for that case too (see #36105). + if (!UseOldBehavior36112 + && TryUnwrapBareSetOperation(operand, out var nestedSetOperation) + && (nestedSetOperation is ExceptExpression + || nestedSetOperation.GetType() != setOperation.GetType() + || nestedSetOperation.IsDistinct != setOperation.IsDistinct)) + { + Sql.AppendLine("SELECT * FROM ("); + + using (Sql.Indent()) + { + Visit(operand); + } + + Sql.AppendLine().Append(")"); + } + else + { + Visit(operand); + } + + static bool TryUnwrapBareSetOperation(SelectExpression selectExpression, [NotNullWhen(true)] out SetOperationBase? setOperation) + { + if (selectExpression is + { + Tables: [SetOperationBase s], + Predicate: null, + Orderings: [], + Offset: null, + Limit: null, + IsDistinct: false, + Having: null, + GroupBy: [] + } + && selectExpression.Projection.Count == s.Source1.Projection.Count + && selectExpression.Projection.Select( + (pe, index) => pe.Expression is ColumnExpression column + && column.TableAlias == s.Alias + && column.Name == s.Source1.Projection[index].Alias) + .All(e => e)) + { + setOperation = s; + return true; + } + + setOperation = null; + return false; + } + } private void GenerateGlob(GlobExpression globExpression, bool negated = false) { diff --git a/test/EFCore.Specification.Tests/Query/NorthwindSetOperationsQueryTestBase.cs b/test/EFCore.Specification.Tests/Query/NorthwindSetOperationsQueryTestBase.cs index a6d4ea8d07d..72992cfb49c 100644 --- a/test/EFCore.Specification.Tests/Query/NorthwindSetOperationsQueryTestBase.cs +++ b/test/EFCore.Specification.Tests/Query/NorthwindSetOperationsQueryTestBase.cs @@ -82,6 +82,19 @@ public virtual Task Except_nested(bool async) .Except(ss.Set().Where(s => s.City == "México D.F.")) .Except(ss.Set().Where(e => e.City == "Seattle"))); + // EXCEPT is non-commutative, unlike UNION/INTERSECT. Therefore, parentheses are needed in the following query + // to ensure that the inner EXCEPT is evaluated first. See #36105. + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual Task Except_nested2(bool async) + => AssertQuery( + async, + ss => ss.Set() + .Except(ss.Set() + .Where(s => s.City == "Seattle") + .Except(ss.Set() + .Where(e => e.City == "Seattle")))); + [ConditionalTheory] [MemberData(nameof(IsAsyncData))] public virtual Task Except_non_entity(bool async) @@ -221,6 +234,17 @@ public virtual Task Union_Intersect(bool async) .Union(ss.Set().Where(c => c.City == "London")) .Intersect(ss.Set().Where(c => c.ContactName.Contains("Thomas")))); + // The evaluation order of Concat and Union can matter: A UNION ALL (B UNION C) can be different from (A UNION ALL B) UNION C. + // Make sure parentheses are added. + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual Task Union_inside_Concat(bool async) + => AssertQuery( + async, + ss => ss.Set().Where(c => c.City == "Berlin") + .Concat(ss.Set().Where(c => c.City == "London") + .Union(ss.Set().Where(c => c.City == "Berlin")))); + [ConditionalTheory] [MemberData(nameof(IsAsyncData))] public virtual Task Union_Take_Union_Take(bool async) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs index ded5240008b..e010573267d 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs @@ -201,6 +201,28 @@ WHERE [c1].[ContactName] LIKE N'%Thomas%' """); } + public override async Task Union_inside_Concat(bool async) + { + await base.Union_inside_Concat(async); + +AssertSql( +""" +SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] +FROM [Customers] AS [c] +WHERE [c].[City] = N'Berlin' +UNION ALL +( + SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] + FROM [Customers] AS [c0] + WHERE [c0].[City] = N'London' + UNION + SELECT [c1].[CustomerID], [c1].[Address], [c1].[City], [c1].[CompanyName], [c1].[ContactName], [c1].[ContactTitle], [c1].[Country], [c1].[Fax], [c1].[Phone], [c1].[PostalCode], [c1].[Region] + FROM [Customers] AS [c1] + WHERE [c1].[City] = N'Berlin' +) +"""); + } + public override async Task Union_Take_Union_Take(bool async) { await base.Union_Take_Union_Take(async); @@ -1234,14 +1256,16 @@ public override async Task Except_nested(bool async) await base.Except_nested(async); AssertSql( - """ -SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] -FROM [Customers] AS [c] -WHERE [c].[ContactTitle] = N'Owner' -EXCEPT -SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] -FROM [Customers] AS [c0] -WHERE [c0].[City] = N'México D.F.' +""" +( + SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] + FROM [Customers] AS [c] + WHERE [c].[ContactTitle] = N'Owner' + EXCEPT + SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] + FROM [Customers] AS [c0] + WHERE [c0].[City] = N'México D.F.' +) EXCEPT SELECT [c1].[CustomerID], [c1].[Address], [c1].[City], [c1].[CompanyName], [c1].[ContactName], [c1].[ContactTitle], [c1].[Country], [c1].[Fax], [c1].[Phone], [c1].[PostalCode], [c1].[Region] FROM [Customers] AS [c1] @@ -1249,6 +1273,27 @@ FROM [Customers] AS [c1] """); } + public override async Task Except_nested2(bool async) + { + await base.Except_nested2(async); + + AssertSql( +""" +SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] +FROM [Customers] AS [c] +EXCEPT +( + SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] + FROM [Customers] AS [c0] + WHERE [c0].[City] = N'Seattle' + EXCEPT + SELECT [c1].[CustomerID], [c1].[Address], [c1].[City], [c1].[CompanyName], [c1].[ContactName], [c1].[ContactTitle], [c1].[Country], [c1].[Fax], [c1].[Phone], [c1].[PostalCode], [c1].[Region] + FROM [Customers] AS [c1] + WHERE [c1].[City] = N'Seattle' +) +"""); + } + public override async Task Intersect_non_entity(bool async) { await base.Intersect_non_entity(async); From ccf6fab1a0f2fa0f6b4434cad73c170a0faf8c24 Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Thu, 29 May 2025 13:56:31 +0200 Subject: [PATCH 70/79] Add missing parentheses for set operations (#36138) Fixes #36105 Fixes #36112 --- .../Query/QuerySqlGenerator.cs | 14 ++++- .../Query/Internal/SqliteQuerySqlGenerator.cs | 63 ++++++++++++++++++- .../NorthwindSetOperationsQueryTestBase.cs | 24 +++++++ ...orthwindSetOperationsQuerySqlServerTest.cs | 61 +++++++++++++++--- 4 files changed, 150 insertions(+), 12 deletions(-) diff --git a/src/EFCore.Relational/Query/QuerySqlGenerator.cs b/src/EFCore.Relational/Query/QuerySqlGenerator.cs index 1906d587a40..c18fe6a3ffd 100644 --- a/src/EFCore.Relational/Query/QuerySqlGenerator.cs +++ b/src/EFCore.Relational/Query/QuerySqlGenerator.cs @@ -22,6 +22,9 @@ public class QuerySqlGenerator : SqlExpressionVisitor private IRelationalCommandBuilder _relationalCommandBuilder; private Dictionary? _repeatedParameterCounts; + private static readonly bool UseOldBehavior36105 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue36105", out var enabled36105) && enabled36105; + /// /// Creates a new instance of the class. /// @@ -1382,9 +1385,16 @@ static string GetSetOperation(SetOperationBase operation) protected virtual void GenerateSetOperationOperand(SetOperationBase setOperation, SelectExpression operand) { // INTERSECT has higher precedence over UNION and EXCEPT, but otherwise evaluation is left-to-right. - // To preserve meaning, add parentheses whenever a set operation is nested within a different set operation. + // To preserve evaluation order, add parentheses whenever a set operation is nested within a different set operation + // - including different distinctness. + // In addition, EXCEPT is non-commutative (unlike UNION/INTERSECT), so add parentheses for that case too (see #36105). if (IsNonComposedSetOperation(operand) - && operand.Tables[0].GetType() != setOperation.GetType()) + && ((UseOldBehavior36105 && operand.Tables[0].GetType() != setOperation.GetType()) + || (!UseOldBehavior36105 + && operand.Tables[0] is SetOperationBase nestedSetOperation + && (nestedSetOperation is ExceptExpression + || nestedSetOperation.GetType() != setOperation.GetType() + || nestedSetOperation.IsDistinct != setOperation.IsDistinct)))) { _relationalCommandBuilder.AppendLine("("); using (_relationalCommandBuilder.Indent()) diff --git a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQuerySqlGenerator.cs b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQuerySqlGenerator.cs index ad1c62dc00e..f761526cf12 100644 --- a/src/EFCore.Sqlite.Core/Query/Internal/SqliteQuerySqlGenerator.cs +++ b/src/EFCore.Sqlite.Core/Query/Internal/SqliteQuerySqlGenerator.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Diagnostics.CodeAnalysis; using Microsoft.EntityFrameworkCore.Query.SqlExpressions; namespace Microsoft.EntityFrameworkCore.Sqlite.Query.Internal; @@ -13,6 +14,9 @@ namespace Microsoft.EntityFrameworkCore.Sqlite.Query.Internal; /// public class SqliteQuerySqlGenerator : QuerySqlGenerator { + private static readonly bool UseOldBehavior36112 = + AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue36112", out var enabled36112) && enabled36112; + /// /// This is an internal API that supports the Entity Framework Core infrastructure and not subject to /// the same compatibility standards as public APIs. It may be changed or removed without notice in @@ -97,8 +101,63 @@ protected override void GenerateLimitOffset(SelectExpression selectExpression) /// doing so can result in application failures when updating to a new Entity Framework Core release. /// protected override void GenerateSetOperationOperand(SetOperationBase setOperation, SelectExpression operand) - // Sqlite doesn't support parentheses around set operation operands - => Visit(operand); + { + // Most databases support parentheses around set operations to determine evaluation order, but SQLite does not; + // however, we can instead wrap the nested set operation in a SELECT * FROM () to achieve the same effect. + // The following is a copy-paste of the base implementation from QuerySqlGenerator, adding the SELECT. + + // INTERSECT has higher precedence over UNION and EXCEPT, but otherwise evaluation is left-to-right. + // To preserve evaluation order, add parentheses whenever a set operation is nested within a different set operation + // - including different distinctness. + // In addition, EXCEPT is non-commutative (unlike UNION/INTERSECT), so add parentheses for that case too (see #36105). + if (!UseOldBehavior36112 + && TryUnwrapBareSetOperation(operand, out var nestedSetOperation) + && (nestedSetOperation is ExceptExpression + || nestedSetOperation.GetType() != setOperation.GetType() + || nestedSetOperation.IsDistinct != setOperation.IsDistinct)) + { + Sql.AppendLine("SELECT * FROM ("); + + using (Sql.Indent()) + { + Visit(operand); + } + + Sql.AppendLine().Append(")"); + } + else + { + Visit(operand); + } + + static bool TryUnwrapBareSetOperation(SelectExpression selectExpression, [NotNullWhen(true)] out SetOperationBase? setOperation) + { + if (selectExpression is + { + Tables: [SetOperationBase s], + Predicate: null, + Orderings: [], + Offset: null, + Limit: null, + IsDistinct: false, + Having: null, + GroupBy: [] + } + && selectExpression.Projection.Count == s.Source1.Projection.Count + && selectExpression.Projection.Select( + (pe, index) => pe.Expression is ColumnExpression column + && column.TableAlias == s.Alias + && column.Name == s.Source1.Projection[index].Alias) + .All(e => e)) + { + setOperation = s; + return true; + } + + setOperation = null; + return false; + } + } private void GenerateGlob(GlobExpression globExpression, bool negated = false) { diff --git a/test/EFCore.Specification.Tests/Query/NorthwindSetOperationsQueryTestBase.cs b/test/EFCore.Specification.Tests/Query/NorthwindSetOperationsQueryTestBase.cs index a1164523546..4478b052877 100644 --- a/test/EFCore.Specification.Tests/Query/NorthwindSetOperationsQueryTestBase.cs +++ b/test/EFCore.Specification.Tests/Query/NorthwindSetOperationsQueryTestBase.cs @@ -79,6 +79,19 @@ public virtual Task Except_nested(bool async) .Except(ss.Set().Where(s => s.City == "México D.F.")) .Except(ss.Set().Where(e => e.City == "Seattle"))); + // EXCEPT is non-commutative, unlike UNION/INTERSECT. Therefore, parentheses are needed in the following query + // to ensure that the inner EXCEPT is evaluated first. See #36105. + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual Task Except_nested2(bool async) + => AssertQuery( + async, + ss => ss.Set() + .Except(ss.Set() + .Where(s => s.City == "Seattle") + .Except(ss.Set() + .Where(e => e.City == "Seattle")))); + [ConditionalTheory] [MemberData(nameof(IsAsyncData))] public virtual Task Except_non_entity(bool async) @@ -218,6 +231,17 @@ public virtual Task Union_Intersect(bool async) .Union(ss.Set().Where(c => c.City == "London")) .Intersect(ss.Set().Where(c => c.ContactName.Contains("Thomas")))); + // The evaluation order of Concat and Union can matter: A UNION ALL (B UNION C) can be different from (A UNION ALL B) UNION C. + // Make sure parentheses are added. + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual Task Union_inside_Concat(bool async) + => AssertQuery( + async, + ss => ss.Set().Where(c => c.City == "Berlin") + .Concat(ss.Set().Where(c => c.City == "London") + .Union(ss.Set().Where(c => c.City == "Berlin")))); + [ConditionalTheory] [MemberData(nameof(IsAsyncData))] public virtual Task Union_Take_Union_Take(bool async) diff --git a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs index 0077db190b6..1f275431265 100644 --- a/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs +++ b/test/EFCore.SqlServer.FunctionalTests/Query/NorthwindSetOperationsQuerySqlServerTest.cs @@ -200,6 +200,28 @@ WHERE [c1].[ContactName] LIKE N'%Thomas%' """); } + public override async Task Union_inside_Concat(bool async) + { + await base.Union_inside_Concat(async); + +AssertSql( +""" +SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] +FROM [Customers] AS [c] +WHERE [c].[City] = N'Berlin' +UNION ALL +( + SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] + FROM [Customers] AS [c0] + WHERE [c0].[City] = N'London' + UNION + SELECT [c1].[CustomerID], [c1].[Address], [c1].[City], [c1].[CompanyName], [c1].[ContactName], [c1].[ContactTitle], [c1].[Country], [c1].[Fax], [c1].[Phone], [c1].[PostalCode], [c1].[Region] + FROM [Customers] AS [c1] + WHERE [c1].[City] = N'Berlin' +) +"""); + } + public override async Task Union_Take_Union_Take(bool async) { await base.Union_Take_Union_Take(async); @@ -1233,14 +1255,16 @@ public override async Task Except_nested(bool async) await base.Except_nested(async); AssertSql( - """ -SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] -FROM [Customers] AS [c] -WHERE [c].[ContactTitle] = N'Owner' -EXCEPT -SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] -FROM [Customers] AS [c0] -WHERE [c0].[City] = N'México D.F.' +""" +( + SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] + FROM [Customers] AS [c] + WHERE [c].[ContactTitle] = N'Owner' + EXCEPT + SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] + FROM [Customers] AS [c0] + WHERE [c0].[City] = N'México D.F.' +) EXCEPT SELECT [c1].[CustomerID], [c1].[Address], [c1].[City], [c1].[CompanyName], [c1].[ContactName], [c1].[ContactTitle], [c1].[Country], [c1].[Fax], [c1].[Phone], [c1].[PostalCode], [c1].[Region] FROM [Customers] AS [c1] @@ -1248,6 +1272,27 @@ FROM [Customers] AS [c1] """); } + public override async Task Except_nested2(bool async) + { + await base.Except_nested2(async); + + AssertSql( +""" +SELECT [c].[CustomerID], [c].[Address], [c].[City], [c].[CompanyName], [c].[ContactName], [c].[ContactTitle], [c].[Country], [c].[Fax], [c].[Phone], [c].[PostalCode], [c].[Region] +FROM [Customers] AS [c] +EXCEPT +( + SELECT [c0].[CustomerID], [c0].[Address], [c0].[City], [c0].[CompanyName], [c0].[ContactName], [c0].[ContactTitle], [c0].[Country], [c0].[Fax], [c0].[Phone], [c0].[PostalCode], [c0].[Region] + FROM [Customers] AS [c0] + WHERE [c0].[City] = N'Seattle' + EXCEPT + SELECT [c1].[CustomerID], [c1].[Address], [c1].[City], [c1].[CompanyName], [c1].[ContactName], [c1].[ContactTitle], [c1].[Country], [c1].[Fax], [c1].[Phone], [c1].[PostalCode], [c1].[Region] + FROM [Customers] AS [c1] + WHERE [c1].[City] = N'Seattle' +) +"""); + } + public override async Task Intersect_non_entity(bool async) { await base.Intersect_non_entity(async); From bc9e54556421c445c04f11dce3bdc23c14c4dae8 Mon Sep 17 00:00:00 2001 From: Sean Reeser Date: Wed, 4 Jun 2025 09:21:29 -0700 Subject: [PATCH 71/79] Update branding to 9.0.7 --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 9c38f7c2843..bba512ffc31 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 9.0.6 + 9.0.7 rtm From bf8cff18a2b4aec36a294c3a50834bcd5b7ecb93 Mon Sep 17 00:00:00 2001 From: Sean Reeser Date: Wed, 4 Jun 2025 09:21:16 -0700 Subject: [PATCH 72/79] Update branding to 8.0.18 --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 480ff00097b..ed0da3a15c7 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -1,6 +1,6 @@ - 8.0.17 + 8.0.18 servicing From e798765011de6740a07c486bbab8b006f399ae87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jiri=20Cincura=20=E2=86=B9?= Date: Thu, 5 Jun 2025 21:21:50 +0200 Subject: [PATCH 73/79] Fix conflict. --- src/EFCore.Relational/Query/QuerySqlGenerator.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/EFCore.Relational/Query/QuerySqlGenerator.cs b/src/EFCore.Relational/Query/QuerySqlGenerator.cs index 57108b410ee..c18fe6a3ffd 100644 --- a/src/EFCore.Relational/Query/QuerySqlGenerator.cs +++ b/src/EFCore.Relational/Query/QuerySqlGenerator.cs @@ -22,9 +22,6 @@ public class QuerySqlGenerator : SqlExpressionVisitor private IRelationalCommandBuilder _relationalCommandBuilder; private Dictionary? _repeatedParameterCounts; - private static readonly bool UseOldBehavior36105 = - AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue36105", out var enabled36105) && enabled36105; - private static readonly bool UseOldBehavior36105 = AppContext.TryGetSwitch("Microsoft.EntityFrameworkCore.Issue36105", out var enabled36105) && enabled36105; From da42a59297d50605e762b66737b811e1c879ba90 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 06:09:39 +0000 Subject: [PATCH 74/79] Update dependencies from https://github.com/dotnet/arcade build 20250602.2 (#36213) [release/9.0] Update dependencies from dotnet/arcade --- eng/Version.Details.xml | 12 ++++++------ eng/Versions.props | 2 +- eng/common/core-templates/post-build/post-build.yml | 6 ++++++ eng/common/post-build/publish-using-darc.ps1 | 7 ++++++- global.json | 4 ++-- 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 1a12e7e2383..e473aa2f7bf 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -67,17 +67,17 @@ - + https://github.com/dotnet/arcade - 086a1771875b63404b4a710d27250fe384dc2810 + 0d52a8b262d35fa2fde84e398cb2e791b8454bd2 - + https://github.com/dotnet/arcade - 086a1771875b63404b4a710d27250fe384dc2810 + 0d52a8b262d35fa2fde84e398cb2e791b8454bd2 - + https://github.com/dotnet/arcade - 086a1771875b63404b4a710d27250fe384dc2810 + 0d52a8b262d35fa2fde84e398cb2e791b8454bd2 diff --git a/eng/Versions.props b/eng/Versions.props index bba512ffc31..40bf81e9db2 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -34,7 +34,7 @@ 9.0.5 - 9.0.0-beta.25271.1 + 9.0.0-beta.25302.2 17.8.3 diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml index 454fd75c7af..a8c0bd3b921 100644 --- a/eng/common/core-templates/post-build/post-build.yml +++ b/eng/common/core-templates/post-build/post-build.yml @@ -44,6 +44,11 @@ parameters: displayName: Publish installers and checksums type: boolean default: true + + - name: requireDefaultChannels + displayName: Fail the build if there are no default channel(s) registrations for the current build + type: boolean + default: false - name: SDLValidationParameters type: object @@ -312,5 +317,6 @@ stages: -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} -AzdoToken '$(System.AccessToken)' -WaitPublishingFinish true + -RequireDefaultChannels ${{ parameters.requireDefaultChannels }} -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1 index 90b58e32a87..a261517ef90 100644 --- a/eng/common/post-build/publish-using-darc.ps1 +++ b/eng/common/post-build/publish-using-darc.ps1 @@ -5,7 +5,8 @@ param( [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net', [Parameter(Mandatory=$true)][string] $WaitPublishingFinish, [Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters, - [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters + [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters, + [Parameter(Mandatory=$false)][string] $RequireDefaultChannels ) try { @@ -33,6 +34,10 @@ try { if ("false" -eq $WaitPublishingFinish) { $optionalParams.Add("--no-wait") | Out-Null } + + if ("true" -eq $RequireDefaultChannels) { + $optionalParams.Add("--default-channels-required") | Out-Null + } & $darc add-build-to-channel ` --id $buildId ` diff --git a/global.json b/global.json index b4994f6028b..3edced2da7a 100644 --- a/global.json +++ b/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25271.1", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25271.1" + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.25302.2", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.25302.2" } } From b66a3b21acb7b50fc8776518d8af7924d7d4d72f Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Tue, 10 Jun 2025 23:31:32 -0700 Subject: [PATCH 75/79] Merging internal commits for release/8.0 (#36222) * Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250501.5 Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport From Version 8.0.16-servicing.25215.6 -> To Version 8.0.16-servicing.25251.5 * Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250516.2 Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport From Version 8.0.16-servicing.25251.5 -> To Version 8.0.17-servicing.25266.2 --------- Co-authored-by: Mirroring Co-authored-by: DotNet-Bot Co-authored-by: ProductConstructionServiceProd --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- eng/Versions.props | 8 ++++---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/NuGet.config b/NuGet.config index 353a7af9ad1..1626facc700 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -19,7 +19,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a7a0c5da62c..3a9bd00fd96 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -29,9 +29,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - efd5742bb5dd1677fbbbeb277bcfb5c9025548e5 + 77545d6fd5ca79bc08198fd6d8037c14843f14ad https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -45,18 +45,18 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime dcf4a22cf8671c1abe880ebec4cfd906c99588bf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - efd5742bb5dd1677fbbbeb277bcfb5c9025548e5 + 77545d6fd5ca79bc08198fd6d8037c14843f14ad - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - efd5742bb5dd1677fbbbeb277bcfb5c9025548e5 + 77545d6fd5ca79bc08198fd6d8037c14843f14ad - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - efd5742bb5dd1677fbbbeb277bcfb5c9025548e5 + 77545d6fd5ca79bc08198fd6d8037c14843f14ad diff --git a/eng/Versions.props b/eng/Versions.props index ed0da3a15c7..68aaf8fbccf 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,13 +24,13 @@ 8.0.1 8.0.1 8.0.2 - 8.0.16-servicing.25215.6 + 8.0.17-servicing.25266.2 8.0.1 8.0.5 8.0.2 - 8.0.16 - 8.0.16 - 8.0.16-servicing.25215.6 + 8.0.17 + 8.0.17 + 8.0.17-servicing.25266.2 8.0.0-beta.25263.4 From 2ed58376ab450c225bc9e1190ee1474b78fc9e19 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Tue, 10 Jun 2025 23:31:54 -0700 Subject: [PATCH 76/79] Merging internal commits for release/9.0 (#36223) * Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250516.5 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Logging , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 , System.Text.Encodings.Web , System.Text.Json From Version 9.0.5 -> To Version 9.0.6 * Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250516.13 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Logging , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 , System.Text.Encodings.Web , System.Text.Json From Version 9.0.6 -> To Version 9.0.6 --------- Co-authored-by: Maurycy Markowski Co-authored-by: Mirroring Co-authored-by: DotNet-Bot Co-authored-by: ProductConstructionServiceProd --- NuGet.config | 2 ++ eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 30 ++++++++++----------- 3 files changed, 47 insertions(+), 45 deletions(-) diff --git a/NuGet.config b/NuGet.config index d1a8a417e43..f4a8386b411 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,6 +4,7 @@ + @@ -20,6 +21,7 @@ + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e473aa2f7bf..f958bc67a01 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,69 +1,69 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e36e4d1a8f8dfb08d7e3a6041459c9791d732c01 + 3875b54e7b10b10606b105340199946d0b877754 diff --git a/eng/Versions.props b/eng/Versions.props index 40bf81e9db2..f4e9a855cc9 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -17,21 +17,21 @@ False - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5-servicing.25215.9 - 9.0.5 - 9.0.5 - 9.0.5 - 9.0.5-servicing.25215.9 - 9.0.5 - 9.0.5 - 9.0.5 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6-servicing.25266.13 + 9.0.6 + 9.0.6 + 9.0.6 + 9.0.6-servicing.25266.13 + 9.0.6 + 9.0.6 + 9.0.6 9.0.0-beta.25302.2 From d87d5cf370598e6e5dc02b5686c77c8e37b62b83 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 11 Jun 2025 11:19:26 +0000 Subject: [PATCH 77/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250610.29 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Logging , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 , System.Text.Encodings.Web , System.Text.Json From Version 9.0.6 -> To Version 9.0.7 --- NuGet.config | 4 +-- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 30 ++++++++++----------- 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/NuGet.config b/NuGet.config index f4a8386b411..2615c973134 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f958bc67a01..17d62c7442b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -1,69 +1,69 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3875b54e7b10b10606b105340199946d0b877754 + d2042a18ee63b2021128e1e5674d79eae9cd4932 diff --git a/eng/Versions.props b/eng/Versions.props index f4e9a855cc9..1fab6f5264b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -17,21 +17,21 @@ False - 9.0.6 - 9.0.6 - 9.0.6 - 9.0.6 - 9.0.6 - 9.0.6 - 9.0.6 - 9.0.6-servicing.25266.13 - 9.0.6 - 9.0.6 - 9.0.6 - 9.0.6-servicing.25266.13 - 9.0.6 - 9.0.6 - 9.0.6 + 9.0.7 + 9.0.7 + 9.0.7 + 9.0.7 + 9.0.7 + 9.0.7 + 9.0.7 + 9.0.7-servicing.25310.29 + 9.0.7 + 9.0.7 + 9.0.7 + 9.0.7-servicing.25310.29 + 9.0.7 + 9.0.7 + 9.0.7 9.0.0-beta.25302.2 From 57013cd03b2a8f49af1832647502d3659e2f04fa Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 12 Jun 2025 12:00:43 +0000 Subject: [PATCH 78/79] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20250611.18 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration , Microsoft.Extensions.Configuration.Abstractions , Microsoft.Extensions.Configuration.EnvironmentVariables , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Logging , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , System.Formats.Asn1 , System.Text.Encodings.Web , System.Text.Json From Version 9.0.6 -> To Version 9.0.7 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 34 +++++++++++++++++----------------- eng/Versions.props | 4 ++-- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/NuGet.config b/NuGet.config index 2615c973134..f43674200c1 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 17d62c7442b..0348b0fadae 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,47 +3,47 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d2042a18ee63b2021128e1e5674d79eae9cd4932 + 1bafa9761541b20cded99398ce1a8630d09f43fd diff --git a/eng/Versions.props b/eng/Versions.props index 1fab6f5264b..98974ab1732 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,11 +24,11 @@ 9.0.7 9.0.7 9.0.7 - 9.0.7-servicing.25310.29 + 9.0.7-servicing.25311.18 9.0.7 9.0.7 9.0.7 - 9.0.7-servicing.25310.29 + 9.0.7-servicing.25311.18 9.0.7 9.0.7 9.0.7 From 67d253c17619e6ba325e5390905ea2a13cc7f532 Mon Sep 17 00:00:00 2001 From: ProductConstructionServiceProd Date: Tue, 17 Jun 2025 01:24:58 +0000 Subject: [PATCH 79/79] [internal/release/9.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 4 ++-- eng/Version.Details.xml | 34 +++++++++++++++++----------------- eng/Versions.props | 4 ++-- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/NuGet.config b/NuGet.config index f43674200c1..4b75d96c4fa 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0348b0fadae..6fd90654018 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,47 +3,47 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1bafa9761541b20cded99398ce1a8630d09f43fd + 3c298d9f00936d651cc47d221762474e25277672 diff --git a/eng/Versions.props b/eng/Versions.props index 98974ab1732..e9d675db6df 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -24,11 +24,11 @@ 9.0.7 9.0.7 9.0.7 - 9.0.7-servicing.25311.18 + 9.0.7-servicing.25316.16 9.0.7 9.0.7 9.0.7 - 9.0.7-servicing.25311.18 + 9.0.7-servicing.25316.16 9.0.7 9.0.7 9.0.7