Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[release/9.0-staging] Don't scaffold NonNullableConventionState annotation #35359

Open
wants to merge 1 commit into
base: release/9.0-staging
Choose a base branch
from

Conversation

AndriySvyryd
Copy link
Member

@AndriySvyryd AndriySvyryd commented Dec 19, 2024

Fixes #34996
Port of #35020

Description

NonNullableConventionBase convention adds an annotation to the model containing a cached NullabilityInfoContext to be used during model building. Usually, it's removed before the model is finalized, but in certain cases another convention can request it during finalization after the cache is removed causing the annotation to be added back to the model.

Customer impact

An exception is thrown when adding a new migration or a compiled model for affected models (mostly with types containing a field that's a primitive collection). There is workaround via model configuration, but it's usually not practical because the exception doesn't provide any clues on what property caused it:

System.InvalidOperationException: Cannot scaffold C# literals of type 'System.Reflection.NullabilityInfoContext'. The provider should implement CoreTypeMapping.GenerateCodeLiteral to support using it at design time.

How found

Multiple customer reports on 8 and 9.

Regression

Yes, from 7, but started affecting even more models in 9.

Testing

Test added

Risk

Low.

This means it gets correctly filtered out when using the model for code generation, and hence we don't try to generate a literal for it.

Fixes #34996
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants