Sim, você precisa criar os tipos.
As alternativas são enviar um lote sql de string grande ou passar XML para sprocs.
A desvantagem dos grandes lotes de string sql é que ele pode explodir o cache do sql proc e pode fazer com que o sql recompile - especialmente se o lote for exclusivo devido aos dados de entrada serem parte dessa string grande. Por definição, cada lote seria único.
XML era a principal alternativa antes dos TVPs. A única desvantagem do XML, pelo menos por algum tempo, o sql azure não o suportava (isso pode mudar?) por isso limita suas opções.
TVPs parecem ser a maneira de fazer isso. Nosso projeto acabou de ser convertido em TVPs.
Espero que ajude.