Why is this frequent SQL not in the SQL Server procedure cache?
There's nothing in the Core .Net SqlClient Data Provider (AKA System.Data.SqlClient) that would explicitly prevent plans from being cached.  

It would be helpful to know exactly what queries you're running to check the plan cache.  

For instance, depending on whether the developers are parameterizing their queries, you could see entries in sys.dm_exec_cached_plans with different objtype values:


"Prepared" - the query had parameters added using the SqlParameter classes
"Adhoc" - the query did not have any parameters, or the parameters were embedded directly into the query text


But I expect that would be true of other data providers as well.

Since you're on SQL Server 2017, another option available to you is to enable Query Store for this database, and then see if the expected SQL text is being captured there.  This will include even queries that use OPTION (RECOMPILE) (see Erin Stellato's blog post Queries with OPTION (RECOMPILE) and Query Store for details).  This could help confirm whether or not developers are using that hint.

Finally, you could use Extended Events to temporarily capture executing queries while the application is running.  A very simple way to do this is with Erik Darling's sp_HumanEvents.  Here's an example usage from the site, which runs for 20 seconds, capture all queries against the "YourDatabaseName" database that ran for at least 1 second:

EXEC dbo.sp_HumanEvents 
    @event_type = 'query', 
    @query_duration_ms = 1000, 
    @seconds_sample = 20, 
    @database_name = 'YourDatabaseName';