Commit Graph

6 Commits

Author SHA1 Message Date
Pranav K cdae83efae
Use the declared type to infer NullableContextOptions (#15134)
* Use the declared type to infer NullableContextOptions

Prior to this change MVC used the runtime type rather than the declared type to
determine the nullability of a property based on state. In the case of inheritance,
this can be erroneous since the declared type may have a different nullability context
than the model type.

This change addresses this by adding content to `ModelIdentity` that allows inspecting the
declared type.

* Add an overload to `ModelMetadataIdentity` that allows flowing `PropertyInfo`
* Use the declared type in `DataAnnotationsMetadataProvider` to determine nullability based on context.

Fixes https://github.com/aspnet/AspNetCore/issues/14812
2019-10-20 06:30:58 -07:00
dotnet-maestro[bot] 8b7f662169 [release/3.1] Update dependencies from 2 repositories (#13571)
* Fix build

* Fix build.cmd

* Resolve build warnings

* Update ref assemblies

* Missed TFM updates

* Fix source build

* Update dependencies from https://github.com/aspnet/EntityFrameworkCore build 20190913.13
- Microsoft.EntityFrameworkCore.Tools - 3.1.0-preview1.19463.13
- Microsoft.EntityFrameworkCore.SqlServer - 3.1.0-preview1.19463.13
- dotnet-ef - 3.1.0-preview1.19463.13
- Microsoft.EntityFrameworkCore - 3.1.0-preview1.19463.13
- Microsoft.EntityFrameworkCore.InMemory - 3.1.0-preview1.19463.13
- Microsoft.EntityFrameworkCore.Relational - 3.1.0-preview1.19463.13
- Microsoft.EntityFrameworkCore.Sqlite - 3.1.0-preview1.19463.13

Dependency coherency updates
- Microsoft.AspNetCore.Analyzer.Testing - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.BenchmarkRunner.Sources - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ActivatorUtilities.Sources - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Abstractions - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.Memory - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.SqlServer - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Caching.StackExchangeRedis - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.CommandLineUtils.Sources - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Abstractions - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.AzureKeyVault - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Binder - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.CommandLine - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.EnvironmentVariables - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.FileExtensions - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Ini - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Json - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.KeyPerFile - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.UserSecrets - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration.Xml - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Configuration - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection.Abstractions - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DependencyInjection - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.DiagnosticAdapter - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Diagnostics.HealthChecks - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Abstractions - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Composite - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Embedded - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileProviders.Physical - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.FileSystemGlobbing - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HashCodeCombiner.Sources - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting.Abstractions - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Hosting - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.HostFactoryResolver.Sources - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Http - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization.Abstractions - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Localization - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Abstractions - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.AzureAppServices - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Configuration - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Console - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Debug - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventSource - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.EventLog - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.TraceSource - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Logging.Testing - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ObjectPool - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.ConfigurationExtensions - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options.DataAnnotations - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Options - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ParameterDefaultValue.Sources - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.Primitives - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.TypeNameHelper.Sources - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.ValueStopwatch.Sources - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Extensions.WebEncoders - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Internal.Extensions.Refs - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.JSInterop - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Mono.WebAssembly.Interop - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Bcl.AsyncInterfaces - 1.1.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.NETCore.App.Runtime.win-x64 - 3.1.0-preview1.19463.3 (parent: Microsoft.Extensions.Logging)
- Microsoft.Extensions.Logging - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.CSharp - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.Win32.Registry - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.Win32.SystemEvents - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.ComponentModel.Annotations - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Diagnostics.EventLog - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Drawing.Common - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.IO.Pipelines - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Net.Http.WinHttpHandler - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Net.WebSockets.WebSocketProtocol - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Reflection.Metadata - 1.8.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Runtime.CompilerServices.Unsafe - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Security.Cryptography.Cng - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Security.Cryptography.Pkcs - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Security.Cryptography.Xml - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Security.Permissions - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Security.Principal.Windows - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.ServiceProcess.ServiceController - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Text.Encodings.Web - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Text.Json - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Threading.Channels - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- System.Windows.Extensions - 4.7.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Microsoft.Extensions.DependencyModel - 3.1.0-preview1.19463.3 (parent: Microsoft.Extensions.Logging)
- Microsoft.NETCore.App.Ref - 3.1.0-preview1.19463.3 (parent: Microsoft.Extensions.Logging)
- NETStandard.Library.Ref - 2.1.0-preview1.19463.3 (parent: Microsoft.Extensions.Logging)
- Microsoft.NETCore.Platforms - 3.1.0-preview1.19463.3 (parent: Microsoft.NETCore.App.Runtime.win-x64)
- Internal.AspNetCore.Analyzers - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.AspNetCore.Testing - 3.1.0-preview1.19463.6 (parent: Microsoft.EntityFrameworkCore)
- Microsoft.Net.Compilers.Toolset - 3.4.0-beta2-19462-08 (parent: Microsoft.Extensions.Logging)

* Fix tests

* Skip dotnet-openapi tests

* Add AssemblyName to nuspec to fix build

* Fix templates

* Fix template tests

* Update eng/Versions.props

* Feedback

* Hard code TFM in tools

* Fix build warnings

* Update dependencies from https://github.com/aspnet/AspNetCore-Tooling build 20190915.1
- Microsoft.NET.Sdk.Razor - 3.1.0-preview1.19465.1
- Microsoft.CodeAnalysis.Razor - 3.1.0-preview1.19465.1
- Microsoft.AspNetCore.Razor.Language - 3.1.0-preview1.19465.1
- Microsoft.AspNetCore.Mvc.Razor.Extensions - 3.1.0-preview1.19465.1
2019-09-15 21:27:50 -07:00
Ryan Nowak 91e6839c8d
Adds inferred [Required] for non-null ref types (#9978)
* Adds inferred [Required] for non-null ref types

Follow up from #9194

This change adds the automatic inference of [Required] for non-nullable
properties and parameters. This means that if you opt into nullable
context in C#8, we'll start treating those types as-if you put
[Required] on them.

This provides a nice invariant to rely on, namely that MVC will honor
your declared nullability contract OR report a validation error. This
reinforces the guidance already published by the C# team for using
POCOs/DTOs with nullability. See
https://github.com/aspnet/specs/blob/master/notes/3_0/nullable.md for my
analysis on the topic.

* preemptively fix PR feedback xD

* PR feedback and functional test

* more

* Fix test failures

* fix

* more

* Do a barrel roll
2019-06-02 17:11:43 -07:00
Pranav K 093df67c06
Avoid buffering during input formatting for longer than necessary (#9806)
* Avoid buffering during input formatting for longer than necessary

EnableRewind uses FileBufferingReadStream which is not disposed until the response is completed.
This results in holding on to internal buffers for significantly longer than necessary. Changing it
to  return the buffers immediately improved the allocations and throughput.
2019-05-03 06:45:52 -07:00
Ajay Bhargav Baaskaran 7a26d27e8b Merge branch 'release/2.2' 2019-02-14 16:08:51 -08:00
Ajay Bhargav Baaskaran 0c2ee920a1 Merge branch 'release/2.1' into release/2.2 2019-02-13 14:52:38 -08:00