Datentabelle mit einem Byte [] -Feld als Parameter für eine gespeicherte Prozedur

Ich habe diese Methode wiederverwendet, um eine DataTable als Parameter für eine gespeicherte Prozedur zu verwenden, und sie hat hervorragend funktioniert. Dies ist der vereinfachte Arbeitscode:

using (dbEntities dbe = new dbEntities())
{
    var dt = new dataTable();
    dt.Columns.Add("ID");
    dt.Columns.Add("Message");
    dt.Columns.Add("CreatedOn", typeof(DateTime));

    foreach (var row in randomDataSource)
    {
        dt.Rows.Add(
            row.id,
            row.message,
            DateTime.Now
            );
    }

    var tableType = new SqlParameter("tableType", SqlDbType.Structured);
    tableType.Value = dt;
    tableType.TypeName = "[dbo].[RandomTableType]";

    dbe.ExecuteStoreCommand(
        "EXEC [dbo].[SaveTable] @tableType",
        new object[] { tableType }
        );
}

Das Problem tritt auf, wenn das Feld, das ich hinzufügen möchte, ein binärer Typ ist. d. h .:

dt.Columns.Add("BinaryMessage", typeof(byte[]));

Die entsprechende Spalte in der Datenbank lautetvarbinary(MAX) Apropos. Wenn ich versuche, dies auszuführen, erhalte ich folgende Fehlermeldung:

Eine implizite Konvertierung von Datentyp nvarchar (max) nach varbinary (max) ist nicht zulässig. Verwenden Sie die CONVERT-Funktion, um diese Abfrage auszuführen.

Wie ändere ich, was ich tun muss, damit dies funktioniert?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage