diff --git a/All.sln b/All.sln
index 645fd0c59fd..b7fad66baf8 100644
--- a/All.sln
+++ b/All.sln
@@ -9,6 +9,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
azure-pipelines.yml = azure-pipelines.yml
Directory.Build.props = Directory.Build.props
Directory.Build.targets = Directory.Build.targets
+ global.json = global.json
tools\Resources.tt = tools\Resources.tt
eng\Versions.props = eng\Versions.props
EndProjectSection
@@ -125,6 +126,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFCore.Trimming.Tests", "te
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFCore.Templates", "src\EFCore.Templates\EFCore.Templates.csproj", "{1FE385D8-8F8B-4EC9-A1A9-AFCC38B8546C}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFCore.NativeAotTests", "test\EFCore.NativeAotTests\EFCore.NativeAotTests.csproj", "{2487950B-403A-482C-8ED3-CCF31E9E677F}"
+EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFCore.SqlServer.HierarchyId", "src\EFCore.SqlServer.HierarchyId\EFCore.SqlServer.HierarchyId.csproj", "{8F722A02-71A4-4787-ACD8-FB7D5B7AE648}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFCore.SqlServer.HierarchyId.Tests", "test\EFCore.SqlServer.HierarchyId.Tests\EFCore.SqlServer.HierarchyId.Tests.csproj", "{01F86E65-6448-424C-AAB5-9C6427EF6FD4}"
@@ -339,6 +342,10 @@ Global
{1FE385D8-8F8B-4EC9-A1A9-AFCC38B8546C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1FE385D8-8F8B-4EC9-A1A9-AFCC38B8546C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FE385D8-8F8B-4EC9-A1A9-AFCC38B8546C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2487950B-403A-482C-8ED3-CCF31E9E677F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2487950B-403A-482C-8ED3-CCF31E9E677F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2487950B-403A-482C-8ED3-CCF31E9E677F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2487950B-403A-482C-8ED3-CCF31E9E677F}.Release|Any CPU.Build.0 = Release|Any CPU
{8F722A02-71A4-4787-ACD8-FB7D5B7AE648}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8F722A02-71A4-4787-ACD8-FB7D5B7AE648}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8F722A02-71A4-4787-ACD8-FB7D5B7AE648}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -410,6 +417,7 @@ Global
{F1B2E5A0-8C74-414A-B262-353FEE325E9F} = {258D5057-81B9-40EC-A872-D21E27452749}
{933C8662-817C-4F45-B98B-6557E28F7BB1} = {258D5057-81B9-40EC-A872-D21E27452749}
{1FE385D8-8F8B-4EC9-A1A9-AFCC38B8546C} = {CE6B50B2-34AE-44C9-940A-4E48C3E1B3BC}
+ {2487950B-403A-482C-8ED3-CCF31E9E677F} = {258D5057-81B9-40EC-A872-D21E27452749}
{8F722A02-71A4-4787-ACD8-FB7D5B7AE648} = {CE6B50B2-34AE-44C9-940A-4E48C3E1B3BC}
{01F86E65-6448-424C-AAB5-9C6427EF6FD4} = {258D5057-81B9-40EC-A872-D21E27452749}
{3D935B7D-80BD-49AD-BDC9-E1B0C9D9494F} = {CE6B50B2-34AE-44C9-940A-4E48C3E1B3BC}
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index c9eced9f7df..6a2ada63064 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -760,9 +760,9 @@ function MSBuild() {
(Join-Path $basePath (Join-Path $buildTool.Framework 'Microsoft.DotNet.ArcadeLogging.dll')),
(Join-Path $basePath (Join-Path $buildTool.Framework 'Microsoft.DotNet.Arcade.Sdk.dll')),
(Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.ArcadeLogging.dll')),
- (Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.Arcade.Sdk.dll'))
+ (Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.Arcade.Sdk.dll')),
(Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.ArcadeLogging.dll')),
- (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.Arcade.Sdk.dll'))
+ (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.Arcade.Sdk.dll')),
(Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.ArcadeLogging.dll')),
(Join-Path $basePath (Join-Path net7.0 'Microsoft.DotNet.Arcade.Sdk.dll'))
)
diff --git a/eng/helix.proj b/eng/helix.proj
index 2e45ac424d3..4195e894e36 100644
--- a/eng/helix.proj
+++ b/eng/helix.proj
@@ -29,8 +29,9 @@
-
+
+
diff --git a/src/EFCore/ChangeTracking/Internal/InternalEntityEntry.cs b/src/EFCore/ChangeTracking/Internal/InternalEntityEntry.cs
index 568df9bde78..fdfa9112ba3 100644
--- a/src/EFCore/ChangeTracking/Internal/InternalEntityEntry.cs
+++ b/src/EFCore/ChangeTracking/Internal/InternalEntityEntry.cs
@@ -5,7 +5,6 @@
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
-using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore.Internal;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
@@ -185,8 +184,9 @@ public async Task SetEntityStateAsync(
CancellationToken cancellationToken = default)
{
var oldState = _stateData.EntityState;
- var adding = false;
- await SetupAsync().ConfigureAwait(false);
+ bool adding = PrepareForAdd(entityState);
+ entityState = await PropagateToUnknownKeyAsync(
+ oldState, entityState, adding, forceStateWhenUnknownKey, cancellationToken).ConfigureAwait(false);
if ((adding || oldState is EntityState.Detached)
&& await StateManager.ValueGenerationManager
@@ -194,17 +194,12 @@ public async Task SetEntityStateAsync(
&& fallbackState.HasValue)
{
entityState = fallbackState.Value;
- await SetupAsync().ConfigureAwait(false);
- }
-
- SetEntityState(oldState, entityState, acceptChanges, modifyProperties);
-
- async Task SetupAsync()
- {
adding = PrepareForAdd(entityState);
entityState = await PropagateToUnknownKeyAsync(
oldState, entityState, adding, forceStateWhenUnknownKey, cancellationToken).ConfigureAwait(false);
}
+
+ SetEntityState(oldState, entityState, acceptChanges, modifyProperties);
}
private EntityState PropagateToUnknownKey(
@@ -829,8 +824,13 @@ private static readonly MethodInfo ReadOriginalValueMethod
internal static MethodInfo MakeReadOriginalValueMethod(Type type)
=> ReadOriginalValueMethod.MakeGenericMethod(type);
- [UsedImplicitly]
- private T ReadOriginalValue(IProperty property, int originalValueIndex)
+ ///
+ /// 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 T ReadOriginalValue(IProperty property, int originalValueIndex)
=> _originalValues.GetValue(this, property, originalValueIndex);
private static readonly MethodInfo ReadRelationshipSnapshotValueMethod
@@ -842,8 +842,13 @@ private static readonly MethodInfo ReadRelationshipSnapshotValueMethod
internal static MethodInfo MakeReadRelationshipSnapshotValueMethod(Type type)
=> ReadRelationshipSnapshotValueMethod.MakeGenericMethod(type);
- [UsedImplicitly]
- private T ReadRelationshipSnapshotValue(IPropertyBase propertyBase, int relationshipSnapshotIndex)
+ ///
+ /// 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 T ReadRelationshipSnapshotValue(IPropertyBase propertyBase, int relationshipSnapshotIndex)
=> _relationshipsSnapshot.GetValue(this, propertyBase, relationshipSnapshotIndex);
[UnconditionalSuppressMessage(
@@ -855,12 +860,17 @@ internal static MethodInfo MakeReadStoreGeneratedValueMethod(Type type)
private static readonly MethodInfo ReadStoreGeneratedValueMethod
= typeof(InternalEntityEntry).GetTypeInfo().GetDeclaredMethod(nameof(ReadStoreGeneratedValue))!;
- [UsedImplicitly]
- private T ReadStoreGeneratedValue(int storeGeneratedIndex)
+ ///
+ /// 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 T ReadStoreGeneratedValue(int storeGeneratedIndex)
=> _storeGeneratedValues.GetValue(storeGeneratedIndex);
private static readonly MethodInfo ReadTemporaryValueMethod
- = typeof(InternalEntityEntry).GetTypeInfo().GetDeclaredMethod(nameof(ReadTemporaryValue))!;
+ = typeof(InternalEntityEntry).GetMethod(nameof(ReadTemporaryValue))!;
[UnconditionalSuppressMessage(
"ReflectionAnalysis", "IL2060",
@@ -868,8 +878,13 @@ private static readonly MethodInfo ReadTemporaryValueMethod
internal static MethodInfo MakeReadTemporaryValueMethod(Type type)
=> ReadTemporaryValueMethod.MakeGenericMethod(type);
- [UsedImplicitly]
- private T ReadTemporaryValue(int storeGeneratedIndex)
+ ///
+ /// 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 T ReadTemporaryValue(int storeGeneratedIndex)
=> _temporaryValues.GetValue(storeGeneratedIndex);
private static readonly MethodInfo GetCurrentValueMethod
@@ -942,7 +957,7 @@ private void WritePropertyValue(
var setter = forMaterialization
? concretePropertyBase.MaterializationSetter
- : concretePropertyBase.Setter;
+ : concretePropertyBase.GetSetter();
setter.SetClrValue(Entity, value);
}
@@ -1124,7 +1139,7 @@ public void EnsureTemporaryValues()
{
if (_temporaryValues.IsEmpty)
{
- _temporaryValues = new SidecarValues(((IRuntimeEntityType)EntityType).TemporaryValuesFactory(this));
+ _temporaryValues = new SidecarValues(EntityType.TemporaryValuesFactory(this));
}
}
@@ -1138,7 +1153,7 @@ public void EnsureStoreGeneratedValues()
{
if (_storeGeneratedValues.IsEmpty)
{
- _storeGeneratedValues = new SidecarValues(((IRuntimeEntityType)EntityType).StoreGeneratedValuesFactory());
+ _storeGeneratedValues = new SidecarValues(EntityType.StoreGeneratedValuesFactory());
}
}
diff --git a/src/EFCore/ChangeTracking/Internal/SidecarValues.cs b/src/EFCore/ChangeTracking/Internal/SidecarValues.cs
index 88d531092ca..f4e2ec834af 100644
--- a/src/EFCore/ChangeTracking/Internal/SidecarValues.cs
+++ b/src/EFCore/ChangeTracking/Internal/SidecarValues.cs
@@ -9,9 +9,9 @@ private readonly struct SidecarValues
{
private readonly ISnapshot _values;
- public SidecarValues(ISnapshot valuesFactory)
+ public SidecarValues(ISnapshot values)
{
- _values = valuesFactory;
+ _values = values;
}
public bool TryGetValue(int index, out object? value)
diff --git a/src/EFCore/ChangeTracking/Internal/Snapshot.cs b/src/EFCore/ChangeTracking/Internal/Snapshot.cs
index 1c447b29add..aac2c05085d 100644
--- a/src/EFCore/ChangeTracking/Internal/Snapshot.cs
+++ b/src/EFCore/ChangeTracking/Internal/Snapshot.cs
@@ -2,6 +2,7 @@
// The .NET Foundation licenses this file to you under the MIT license.
using System.Diagnostics.CodeAnalysis;
+using static Microsoft.EntityFrameworkCore.Metadata.Internal.EntityType;
namespace Microsoft.EntityFrameworkCore.ChangeTracking.Internal;
@@ -54,30 +55,6 @@ public object? this[int index]
public T GetValue(int index)
=> throw new IndexOutOfRangeException();
- ///
- /// 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 Delegate[] CreateReaders()
- {
- var genericArguments = typeof(TSnapshot).GenericTypeArguments;
- var delegates = new Delegate[genericArguments.Length];
-
- for (var i = 0; i < genericArguments.Length; ++i)
- {
- var snapshotParameter = Expression.Parameter(typeof(TSnapshot), "snapshot");
-
- delegates[i] = Expression.Lambda(
- typeof(Func<,>).MakeGenericType(typeof(TSnapshot), genericArguments[i]),
- Expression.Field(snapshotParameter, "_value" + i), snapshotParameter)
- .Compile();
- }
-
- return delegates;
- }
-
///
/// 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
@@ -132,10 +109,39 @@ public sealed class Snapshot
: ISnapshot
{
- private static readonly Delegate[] ValueReaders
- = Snapshot
- .CreateReaders>();
+ private static readonly Delegate[] ValueReaders = new Delegate[]
+ {
+ (Snapshot e) => e._value0,
+ (Snapshot e) => e._value1,
+ (Snapshot e) => e._value2,
+ (Snapshot e) => e._value3,
+ (Snapshot e) => e._value4,
+ (Snapshot e) => e._value5,
+ (Snapshot e) => e._value6,
+ (Snapshot e) => e._value7,
+ (Snapshot e) => e._value8,
+ (Snapshot e) => e._value9,
+ (Snapshot e) => e._value10,
+ (Snapshot e) => e._value11,
+ (Snapshot e) => e._value12,
+ (Snapshot e) => e._value13,
+ (Snapshot e) => e._value14,
+ (Snapshot e) => e._value15,
+ (Snapshot e) => e._value16,
+ (Snapshot e) => e._value17,
+ (Snapshot e) => e._value18,
+ (Snapshot e) => e._value19,
+ (Snapshot e) => e._value20,
+ (Snapshot e) => e._value21,
+ (Snapshot e) => e._value22,
+ (Snapshot e) => e._value23,
+ (Snapshot e) => e._value24,
+ (Snapshot e) => e._value25,
+ (Snapshot e) => e._value26,
+ (Snapshot e) => e._value27,
+ (Snapshot e) => e._value28,
+ (Snapshot e) => e._value29
+ };
///
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
@@ -401,10 +407,38 @@ public sealed class Snapshot
: ISnapshot
{
- private static readonly Delegate[] ValueReaders
- = Snapshot
- .CreateReaders>();
+ private static readonly Delegate[] ValueReaders = new Delegate[]
+ {
+ (Snapshot e) => e._value0,
+ (Snapshot e) => e._value1,
+ (Snapshot e) => e._value2,
+ (Snapshot e) => e._value3,
+ (Snapshot e) => e._value4,
+ (Snapshot e) => e._value5,
+ (Snapshot e) => e._value6,
+ (Snapshot e) => e._value7,
+ (Snapshot e) => e._value8,
+ (Snapshot e) => e._value9,
+ (Snapshot e) => e._value10,
+ (Snapshot e) => e._value11,
+ (Snapshot e) => e._value12,
+ (Snapshot e) => e._value13,
+ (Snapshot e) => e._value14,
+ (Snapshot e) => e._value15,
+ (Snapshot e) => e._value16,
+ (Snapshot e) => e._value17,
+ (Snapshot e) => e._value18,
+ (Snapshot e) => e._value19,
+ (Snapshot e) => e._value20,
+ (Snapshot e) => e._value21,
+ (Snapshot e) => e._value22,
+ (Snapshot e) => e._value23,
+ (Snapshot e) => e._value24,
+ (Snapshot e) => e._value25,
+ (Snapshot e) => e._value26,
+ (Snapshot e) => e._value27,
+ (Snapshot e) => e._value28
+ };
///
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
@@ -663,10 +697,38 @@ public sealed class Snapshot
: ISnapshot
{
- private static readonly Delegate[] ValueReaders
- = Snapshot
- .CreateReaders>();
+ private static readonly Delegate[] ValueReaders = new Delegate[]
+ {
+ (Snapshot e) => e._value0,
+ (Snapshot e) => e._value1,
+ (Snapshot e) => e._value2,
+ (Snapshot e) => e._value3,
+ (Snapshot e) => e._value4,
+ (Snapshot e) => e._value5,
+ (Snapshot e) => e._value6,
+ (Snapshot e) => e._value7,
+ (Snapshot e) => e._value8,
+ (Snapshot e) => e._value9,
+ (Snapshot e) => e._value10,
+ (Snapshot e) => e._value11,
+ (Snapshot e) => e._value12,
+ (Snapshot e) => e._value13,
+ (Snapshot e) => e._value14,
+ (Snapshot e) => e._value15,
+ (Snapshot e) => e._value16,
+ (Snapshot e) => e._value17,
+ (Snapshot e) => e._value18,
+ (Snapshot e) => e._value19,
+ (Snapshot e) => e._value20,
+ (Snapshot e) => e._value21,
+ (Snapshot e) => e._value22,
+ (Snapshot e) => e._value23,
+ (Snapshot e) => e._value24,
+ (Snapshot e) => e._value25,
+ (Snapshot e) => e._value26,
+ (Snapshot e) => e._value27
+ };
+
///
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
@@ -918,10 +980,36 @@ public sealed class Snapshot
: ISnapshot
{
- private static readonly Delegate[] ValueReaders
- = Snapshot
- .CreateReaders>();
+ private static readonly Delegate[] ValueReaders = new Delegate[]
+ {
+ (Snapshot e) => e._value0,
+ (Snapshot e) => e._value1,
+ (Snapshot e) => e._value2,
+ (Snapshot e) => e._value3,
+ (Snapshot e) => e._value4,
+ (Snapshot e) => e._value5,
+ (Snapshot e) => e._value6,
+ (Snapshot e) => e._value7,
+ (Snapshot e) => e._value8,
+ (Snapshot e) => e._value9,
+ (Snapshot e) => e._value10,
+ (Snapshot e) => e._value11,
+ (Snapshot e) => e._value12,
+ (Snapshot e) => e._value13,
+ (Snapshot e) => e._value14,
+ (Snapshot e) => e._value15,
+ (Snapshot e) => e._value16,
+ (Snapshot e) => e._value17,
+ (Snapshot e) => e._value18,
+ (Snapshot e) => e._value19,
+ (Snapshot e) => e._value20,
+ (Snapshot e) => e._value21,
+ (Snapshot e) => e._value22,
+ (Snapshot e) => e._value23,
+ (Snapshot e) => e._value24,
+ (Snapshot e) => e._value25,
+ (Snapshot e) => e._value26
+ };
///
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
@@ -1166,10 +1254,35 @@ public sealed class Snapshot
: ISnapshot
{
- private static readonly Delegate[] ValueReaders
- = Snapshot
- .CreateReaders>();
+ private static readonly Delegate[] ValueReaders = new Delegate[]
+ {
+ (Snapshot e) => e._value0,
+ (Snapshot e) => e._value1,
+ (Snapshot e) => e._value2,
+ (Snapshot e) => e._value3,
+ (Snapshot e) => e._value4,
+ (Snapshot e) => e._value5,
+ (Snapshot e) => e._value6,
+ (Snapshot e) => e._value7,
+ (Snapshot e) => e._value8,
+ (Snapshot e) => e._value9,
+ (Snapshot e) => e._value10,
+ (Snapshot e) => e._value11,
+ (Snapshot e) => e._value12,
+ (Snapshot e) => e._value13,
+ (Snapshot e) => e._value14,
+ (Snapshot e) => e._value15,
+ (Snapshot e) => e._value16,
+ (Snapshot e) => e._value17,
+ (Snapshot e) => e._value18,
+ (Snapshot e) => e._value19,
+ (Snapshot e) => e._value20,
+ (Snapshot e) => e._value21,
+ (Snapshot e) => e._value22,
+ (Snapshot e) => e._value23,
+ (Snapshot e) => e._value24,
+ (Snapshot e) => e._value25
+ };
///
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
@@ -1407,10 +1520,34 @@ public sealed class Snapshot
: ISnapshot
{
- private static readonly Delegate[] ValueReaders
- = Snapshot
- .CreateReaders>();
+ private static readonly Delegate[] ValueReaders = new Delegate[]
+ {
+ (Snapshot e) => e._value0,
+ (Snapshot e) => e._value1,
+ (Snapshot e) => e._value2,
+ (Snapshot e) => e._value3,
+ (Snapshot e) => e._value4,
+ (Snapshot e) => e._value5,
+ (Snapshot e) => e._value6,
+ (Snapshot e) => e._value7,
+ (Snapshot e) => e._value8,
+ (Snapshot e) => e._value9,
+ (Snapshot e) => e._value10,
+ (Snapshot e) => e._value11,
+ (Snapshot e) => e._value12,
+ (Snapshot e) => e._value13,
+ (Snapshot e) => e._value14,
+ (Snapshot e) => e._value15,
+ (Snapshot e) => e._value16,
+ (Snapshot e) => e._value17,
+ (Snapshot e) => e._value18,
+ (Snapshot e) => e._value19,
+ (Snapshot e) => e._value20,
+ (Snapshot e) => e._value21,
+ (Snapshot e) => e._value22,
+ (Snapshot e) => e._value23,
+ (Snapshot e) => e._value24
+ };
///
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
@@ -1641,10 +1778,33 @@ public sealed class Snapshot
: ISnapshot
{
- private static readonly Delegate[] ValueReaders
- = Snapshot
- .CreateReaders>();
+ private static readonly Delegate[] ValueReaders = new Delegate[]
+ {
+ (Snapshot e) => e._value0,
+ (Snapshot e) => e._value1,
+ (Snapshot e) => e._value2,
+ (Snapshot e) => e._value3,
+ (Snapshot e) => e._value4,
+ (Snapshot e) => e._value5,
+ (Snapshot e) => e._value6,
+ (Snapshot e) => e._value7,
+ (Snapshot e) => e._value8,
+ (Snapshot e) => e._value9,
+ (Snapshot e) => e._value10,
+ (Snapshot e) => e._value11,
+ (Snapshot e) => e._value12,
+ (Snapshot e) => e._value13,
+ (Snapshot e) => e._value14,
+ (Snapshot e) => e._value15,
+ (Snapshot e) => e._value16,
+ (Snapshot e) => e._value17,
+ (Snapshot e) => e._value18,
+ (Snapshot e) => e._value19,
+ (Snapshot e) => e._value20,
+ (Snapshot e) => e._value21,
+ (Snapshot e) => e._value22,
+ (Snapshot e) => e._value23
+ };
///
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
@@ -1867,10 +2027,32 @@ public object? this[int index]
public sealed class Snapshot
: ISnapshot
{
- private static readonly Delegate[] ValueReaders
- = Snapshot
- .CreateReaders>();
+ private static readonly Delegate[] ValueReaders = new Delegate[]
+ {
+ (Snapshot e) => e._value0,
+ (Snapshot e) => e._value1,
+ (Snapshot e) => e._value2,
+ (Snapshot e) => e._value3,
+ (Snapshot e) => e._value4,
+ (Snapshot e) => e._value5,
+ (Snapshot e) => e._value6,
+ (Snapshot e) => e._value7,
+ (Snapshot e) => e._value8,
+ (Snapshot e) => e._value9,
+ (Snapshot e) => e._value10,
+ (Snapshot e) => e._value11,
+ (Snapshot e) => e._value12,
+ (Snapshot e) => e._value13,
+ (Snapshot e) => e._value14,
+ (Snapshot e) => e._value15,
+ (Snapshot e) => e._value16,
+ (Snapshot e) => e._value17,
+ (Snapshot e) => e._value18,
+ (Snapshot e) => e._value19,
+ (Snapshot e) => e._value20,
+ (Snapshot e) => e._value21,
+ (Snapshot e) => e._value22
+ };
///
/// This is an internal API that supports the Entity Framework Core infrastructure and not subject to
@@ -2086,10 +2268,31 @@ public object? this[int index]
public sealed class Snapshot
: ISnapshot
{
- private static readonly Delegate[] ValueReaders
- = Snapshot
- .CreateReaders
- >();
+ private static readonly Delegate[] ValueReaders = new Delegate[]
+ {
+ (Snapshot e) => e._value0,
+ (Snapshot