How to disable object model validation .NET 7

With the release of a new version of .NET, compatibility requirements may also change, and upgrading projects may not always be seamless.

After migration to .NET 7 my project's integration tests begin fail because of build-in model validation. The API Request class including not required properties such as string(?) and List<T>, were processed as mandatory and gave 400 error.

For years, I use my own validators for the requests model, its allows me more flexibility for response I return, http codes and etc.

More info for the topic can be found here

I didn't spend mush time on it but here are two solutions I found and tested:

  1. Create and register own dummy IObjectModelValidator
public class NullObjectModelValidator : IObjectModelValidator
{
    public void Validate(ActionContext actionContext,
        ValidationStateDictionary validationState, string prefix, object model)
    {

    }
}

and then add the following to Startup.cs

services.AddSingleton<IObjectModelValidator, NullObjectModelValidator>();
  1. Disable validation
 services.AddControllers(o => o.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true )

I'm not a big fan of dummy object in production code, rather in tests, second option was chosen.

Facing a similar decision?

Tell me what you're working on. We'll start from the problem, not a service package.

Discuss your challenge