ottengo questa eccezione quando si tenta di inserire un DBNull.Value in un annullabile varbinary (max) campo:conversione implicita da tipo di dati nvarchar al varbinary (max) non è consentito
Implicit conversion from data type nvarchar to varbinary(max) is not allowed. Use the CONVERT function to run this query.
Quello è il mio codice:
insertCMD.Parameters.AddWithValue("@ErrorScreenshot", SqlDbType.VarBinary).Value = DBNull.Value;
So che esistono domande duplicate su SO, ma NON uso alcuna stringa come fanno gli altri.
Cosa ho sbagliato?
UPDATE:
using (var insertCMD = new SqlCommand("INSERT INTO TestplanTeststep (TeststepId,TestplanId,CreatedAt,ErrorText,ErrorScreenshot,TestState) VALUES (@TeststepId, @TestplanId,@CreatedAt,@ErrorText,@ErrorScreenshot,@TestState)", con))
{
var p1 = insertCMD.Parameters.Add("@TeststepId", SqlDbType.Int);
var p2 = insertCMD.Parameters.Add("@CreatedAt", SqlDbType.DateTime);
insertCMD.Parameters.AddWithValue("@TestplanId", testplan.Id);
insertCMD.Parameters.AddWithValue("@ErrorText", (object) DBNull.Value);
insertCMD.Parameters.AddWithValue("@ErrorScreenshot", (object) DBNull.Value);
insertCMD.Parameters.AddWithValue("@TestState", (int)Teststep.TeststepTestState.Untested);
foreach (Teststep step in teststeps)
{
p1.Value = step.Id;
p2.Value = step.CreatedAt;
insertCMD.ExecuteNonQuery();
}
}
Non sembra la riga di codice corretta. UniqueIdentifier non è menzionato affatto. Forse fornire anche la definizione della procedura memorizzata? – Sean
Spiacente, ho copiato un'eccezione errata. Ora è corretto. – Pascal
Il secondo parametro di 'AddWithValue' è il valore. Non il tipo di dati. –