SqlParameter で ~char(max) の時の Size は -1

size は -1 を渡す。
公式ドキュメントが中々見つからないのが難点…。

大きい値 (max) データの変更 - ADO.NET | Microsoft Docs
から抜粋

CREATE PROCEDURE GetDocumentSummary
(  
    @DocumentID int,  
    @DocumentSummary nvarchar(MAX) OUTPUT  
)  
AS  
SET NOCOUNT ON  
SELECT  @DocumentSummary=Convert(nvarchar(MAX), DocumentSummary)  
FROM    Production.Document  
WHERE   DocumentID=@DocumentID  
SqlParameter paramSummary =
                new SqlParameter("@DocumentSummary",
                SqlDbType.NVarChar, -1);

つーわけで、nvarchar(MAX) の DocumentSummary の Size は -1 渡してます。