Fatti:
A.
A.a. A._ SA è una società anonima avente come scopo statutario la compera, la vendita, la costruzione, la locazione e la gestione di beni mobiliari e immobiliari; la prestazione di servizi per l'edilizia, ed in particolare la gestione, consulenza, direzione lavori, coordinamento e controllo economico-finanziario di progetti immobiliari; la partecipazione a imprese commerciali, industriali, immobiliari; lo svolgimento di operazioni finanziarie (con esclusione di pubblica raccolta di depositi di capitale); l'assunzione di incarichi fiduciari. B._ è l'unico membro del Consiglio di amministrazione della società. Con decisioni su opposizione del 6, rispettivamente 23 febbraio 2017, la Cassa di compensazione AVS/AI/IPG del Cantone Ticino (di seguito Cassa) ha fissato a fr. 935'000.- la retribuzione di B._ soggetta ai contributi sociali per l'attività svolta per A._ SA in qualità di dipendente per il periodo 2012 - 2015. Con giudizio del 22 giugno 2017 il Tribunale delle assicurazioni del Cantone Ticino ha respinto il ricorso inoltrato da A._ SA e B._, i quali asserivano che il lavoro prestato da B._ fosse di natura indipendente. Con sentenza del 12 aprile 2018 (9C_538/2017) il Tribunale federale ha tuttavia annullato questo giudizio e rinviato la causa ai giudici cantonali affinché completassero l'istruttoria e rendessero una nuova decisione. In sostanza, il Tribunale federale ha ritenuto che per stabilire se l'attività svolta da B._ per A._ SA dal 2013 al 2015 fosse di carattere dipendente o indipendente si dovevano dapprima accertare i rapporti giuridici tra i due soggetti. In particolare era necessario riesaminare se vi era un rapporto di subordinazione tra B._ e la società, quale era il rischio economico assunto dalle parti, quale era l'organizzazione del lavoro fornito da B._, la natura dei debiti contratti per finanziare il progetto immobiliare e quella degli investimenti assunti dalle parti.
A.b. Dando seguito alla sentenza del Tribunale federale, su richiesta del Tribunale cantonale, gli interessati hanno prodotto il 22 giugno 2018 una presa di posizione con allegata la relativa documentazione. Dopo avere dato alla Cassa la possibilità di pronunciarsi, con giudizio del 23 luglio 2018, il Tribunale cantonale ha accolto parzialmente i ricorsi e riformato le decisioni di tassazione nel senso che il reddito da attività dipendente di B._ per A._ SA era di fr. 885'000.-, pari a fr. 205'000.- nel 2013, fr. 340'000.- nel 2014 e fr. 340'000.- nel 2015. L'attività dipendente era circoscritta al lavoro svolto da B._ per A._ SA per il progetto "X._" dal 2013 al 2015. Il Tribunale cantonale ha quindi rinviato la causa alla Cassa per nuovo calcolo dei contributi sociali.
A.c. Adito su ricorso da B._ e A._ SA, il Tribunale federale lo ha dichiarato inammissibile con sentenza del 12 ottobre 2018 (9C_584/2018), dopo avere appurato che il giudizio del 23 luglio 2018 costituiva una decisione incidentale e che i presupposti per impugnarlo immediatamente non erano adempiuti.
A.d.
Con due distinte decisioni su opposizione del 7 gennaio 2019 la Cassa ha respinto l'opposizione di A._ SA e di B._ concernente le decisioni che fissavano i contributi sociali dovuti dal datore di lavoro.
B.
B._ e A._ SA hanno inoltrato un nuovo ricorso presso il Tribunale cantonale chiedendo l'annullamento delle decisioni di tassazione. Con giudizio del 21 marzo 2019 il Tribunale cantonale ha respinto il ricorso.
C.
Il 24 aprile 2019 B._ e A._ SA presentano un ricorso in materia di diritto pubblico al Tribunale federale postulando l'annullamento dei giudizi del 23 luglio 2018 e 21 marzo 2019, nonché delle decisioni su opposizione del 7 gennaio 2019.
La Cassa postula la reiezione del gravame e l'Ufficio federale delle assicurazioni sociali rinuncia a determinarsi.

Diritto:
1.
Il ricorso in materia di diritto pubblico può essere presentato per violazione del diritto, così come stabilito dagli art. 95 e 96 LTF. Il Tribunale federale esamina d'ufficio l'applicazione del diritto federale (<ref-law>), non essendo vincolato né dagli argomenti sollevati nel ricorso né dai motivi addotti dall'autorità precedente. Quanto ai fatti, in linea di principio il Tribunale federale fonda il suo ragionamento giuridico sugli accertamenti fattuali operati dall'autorità inferiore (<ref-law>) e vi si può scostare solo se è stato effettuato in modo manifestamente inesatto (<ref-ruling> consid. 2.1 pag. 18 con riferimenti, rispettivamente 137 I 58 consid. 4.1.2 pag. 62 seg.) o in violazione del diritto ai sensi dell'<ref-law> (<ref-law>), e a condizione che l'eliminazione dell'asserito vizio possa influire in maniera determinante sull'esito della causa (<ref-law>).
2.
Sono litigiosi nella fattispecie la fissazione dei contributi sociali per il periodo dal 1° gennaio 2013 al 31 dicembre 2015 a carico del datore di lavoro A._ SA per l'attività svolta da B._ per il progetto "X._". I redditi percepiti durante quel periodo per questa attività ammontano a fr. 885'000.-. Per dirimere la vertenza è necessario verificare se questa attività è di carattere indipendente o dipendente.
3.
Il Tribunale cantonale nei precedenti giudizi del 22 giugno 2017 e del 21 marzo 2019 e il Tribunale federale nella precedente sentenza del 12 aprile 2018 hanno già dettagliatamente esposto le norme legali che regolano la nozione di attività dipendente, rispettivamente indipendente, e la giurisprudenza relativa. A questa trattazione si può fare riferimento.
4.
Come richiesto dal Tribunale federale con la sentenza del 12 aprile 2018, i giudici cantonali, per stabilire se l'attività di B._ era di natura dipendente o indipendente hanno acquisito agli atti alcuni documenti relativi ai rapporti tra quest'ultimo e A._ SA. Si tratta del contratto sottoscritto il 16 e 22 novembre 2010 tra B._ e lo studio di architettura C._ e del contratto di mandato concluso il 3 dicembre 2011 da B._ e A._ SA. I giudici cantonali hanno anche versato agli atti la documentazione riguardante il finanziamento del progetto "X._", in particolare il contratto di credito ipotecario concluso da B._ con un istituto bancario. Sono stati inoltre trasmessi alcuni conti annuali di A._ SA e i documenti relativi agli onorari fatturati da B._ a A._ SA per le sue prestazioni.
Alla luce di questa documentazione, il Tribunale cantonale ha ritenuto che A._ SA era dotata di personale, di cui B._ faceva parte, che quest'ultimo si era impegnato per conto di A._ SA ad assumere diversi compiti di promozione immobiliare per il progetto "X._". La maggior parte dei redditi di B._ proveniva dalla sua attività per A._ SA. L'identità economica tra B._ e A._ SA non era determinante per dirimere la vertenza. Ciò che contava era in sostanza il fatto che B._ svolgeva un'attività in favore di A._ SA, che egli doveva assumere i compiti amministrativi che non potevano essere svolti dallo studio di architettura contraente, che il rischio d'incasso era a carico di A._ SA, nella misura in cui B._ si faceva rimborsare le sue spese. La regolarità dei versamenti relativi agli onorari fatturati da B._ a A._ SA era inoltre un elemento a favore dell'esistenza di un salario e, pertanto, di un'attività dipendente.
5.
Nel loro ricorso, i ricorrenti fanno valere che i documenti prodotti dimostrano che non vi è alcun rapporto di subordinazione tra B._ e A._ SA, che in realtà si è in presenza di un'identità economica tra questi due soggetti. B._ è completamente indipendente nello svolgimento e nell'organizzazione del suo lavoro per "X._". Tutti i rischi inerenti al progetto immobiliare sono a suo carico come lo dimostrano i documenti ipotecari agli atti. A._ SA è interamente finanziata da B._. I documenti bancari prodotti rivelano in proposito come anche il pagamento dei suoi onorari sia in fondo finanziato da lui stesso.
6.
6.1. Per risolvere la vertenza va dapprima osservato che, per quanto riguarda l'identità economica tra B._ e A._ SA, fintantoché non si registra un abuso di diritto, va rispettata l'assenza di identità giuridica tra società anonima e suo azionista unico (<ref-ruling> consid. 2.4 pag. 333, v. anche 9C_782/2014 consid. 6.3.2 del 25 agosto 2015). Ora, tra i due soggetti vi è un'identità economica assoluta. B._ è unico membro del Consiglio di amministrazione, di cui dispone la firma individuale ed è azionista di riferimento. Non vi è pertanto un rapporto di subordinazione tra questi due soggetti. L'assenza di un rapporto di subordinazione trova conferma nel fatto che B._ è completamente libero di organizzare il suo lavoro. Dalla documentazione acquisita agli atti in seguito alla sentenza del 12 aprile 2018 non emerge alcun vincolo per B._ nell'esecuzione del suo lavoro. In proposito, basti citare che il contratto con lo studio di architettura C._ è stato siglato da B._ e non vi è traccia in questo documento di un riferimento esplicito a A._ SA. L'esame del contratto di mandato concluso tra B._ e A._ SA non permette di giungere a una conclusione diversa. Con questo accordo, B._ affida a A._ SA la direzione dei lavori per il progetto "Archi di Luce" (punto e dell'accordo) e si impegna a versargli un onorario di fr. 7'000'000.- (punto 4.1). Anche il finanziamento è a carico di B._ che si impegna a versare a A._ SA regolarmente degli acconti in funzione dell'avanzamento del progetto (punto 4.4). Il rischio del progetto è peraltro assunto da B._, che non solo è proprietario delle parcelle sulle quali sorgerà il complesso immobiliare, ma ha anche personalmente sottoscritto i crediti ipotecari destinati a finanziarlo.
6.2. Certo, come ricordato anche dal Tribunale cantonale, nel caso di diverse attività svolte contemporaneamente per conto di una società, è possibile considerare talune attività come attività dipendenti e altre come attività indipendenti (v. anche UELI KIESER, Rechtsprechung zur AHV, 3a ed., art. 5 n. 14). Tuttavia, nella fattispecie, non si vede quali attività B._ avrebbe svolto come dipendente per conto di A._ SA per il progetto "X._". Il fatto, come osservato dal Tribunale cantonale, che egli potrebbe dedicarsi solo alle attività amministrative che non fossero già assunte dallo studio di architettura contraente, da cui ne deriverebbe un rapporto di subordinazione, non trova riscontro negli atti. Come dimostrato dai ricorrenti, dalla lettura dei contratti del 6 e 22 novembre 2010 e del 3 dicembre 2011, si evince al contrario che B._ è responsabile di tutte le operazioni in relazione con il progetto "X._". Neppure la regolarità dei versamenti (fr. 85'000.- ogni trimestre) per gli onorari versati a B._ da A._ SA è determinante per ritenere un indizio a favore di un'attività dipendente. Già la giurisprudenza stessa ha negato la prevalenza di un tale criterio (sentenza H 82/05 del 30 gennaio 2007 consid. 4.3). Poi non spetta all'autorità giudiziaria sindacare gli importi dei versamenti o la loro regolarità, oppure sulle ragioni per cui questi versamenti sono stati effettuati da A._ SA, previo finanziamento da parte di B._ stesso (in proposito v. <ref-ruling> sopracitato), come lo hanno dimostrato i ricorrenti fondandosi sulle fatture emesse dallo stesso B._. Infine il riferimento dei giudici cantonali alla sentenza H 178/05 del 24 gennaio 2007, volta a dimostrare che, anche in presenza di un'identità economica, può essere ammessa l'esistenza di un'attività dipendente, non è pertinente. Infatti, in quel caso, contrariamente alla presente fattispecie, l'assicurato aveva prima svolto la sua attività come dipendente, prima di continuarla trasferendo il suo domicilio all'estero. In quel caso, il Tribunale federale è giunto alla conclusione che non era possibile distinguere l'ultima attività dalle precedenti, da cui risultava il carattere dipendente anche per l'ultima attività (sentenza H 178/05 del 24 gennaio 2007 consid. 10.2.2). Non si può pertanto operare un parallelismo con la fattispecie.
6.3. Visto quanto precede si deve ritenere che l'attività svolta da B._ per il periodo dal 1° gennaio 2013 al 31 dicembre 2015 per conto di A._ SA era di carattere indipendente. I giudizi del Tribunale cantonale del 23 luglio 2018 e del 21 marzo 2019 e le decisioni su opposizione del 7 gennaio 2019 della Cassa devono essere annullate. A titolo abbondanziale, come segnalato dai giudici cantonali, va ricordato che l'attività svolta da B._ è comunque soggetta ai contributi sociali in applicazione degli art. 8 e 9 LAVS a titolo di attività indipendente.
7.
Le spese giudiziarie, che seguono la soccombenza, devono essere poste a carico dell'opponente (<ref-law>). I ricorrenti hanno diritto alle spese ripetibili (<ref-law>).

Per questi motivi, il Tribunale federale pronuncia:
1.
Il ricorso è accolto. I giudizi del Tribunale delle assicurazioni del Cantone Ticino del 23 luglio 2018 e 21 marzo 2019 e le decisioni su opposizione della Cassa cantonale di compensazione Ufficio dei contributi del 7 gennaio 2019 sono annullati.
2.
Le spese giudiziarie di fr. 4500.- sono poste a carico dell'opponente.
3.
L'opponente verserà ai ricorrenti la somma di fr. 2800.- a titolo di ripetibili per la procedura innanzi al Tribunale federale.
4.
La causa viene rinviata al Tribunale delle assicurazioni del Cantone Ticino per nuova decisione sulle ripetibili nella procedura precedente.
5.
Comunicazione alle parti, al Tribunale delle assicurazioni del Cantone Ticino e all'Ufficio federale delle assicurazioni sociali.