Я нашел решение для той же проблемы.
Вам необходимо проверить порядок соответствующих столбцов в вашем TVP и коде c #.
Например, у вас есть твп, как это:
CREATE TYPE [dbo].[tvp_FinDocContract] AS TABLE(
[column_1_Id] [uniqueidentifier] NOT NULL,
[column_2_Id] [uniqueidentifier] NULL,
[column_3_Id] [datetime] NULL
)
Тогда ваш код на c # для создания tvp должен быть таким:
DataTable tvp = new DataTable();
//the order is very important
tvp.Columns.Add(new DataColumn("column_1_Id", typeof (Guid)){AllowDBNull = false};
tvp.Columns.Add("column_2_Id", typeof (Guid));
tvp.Columns.Add("column_3_Id", typeof (DateTime));
foreach (var item in ...)
{
//just populating
}