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 渡してます。