Error doing UPDATE when I set varbinary variable to 'null'

4

Follow the code below:

var file = Request.Files;
var list = new List<byte[]>();

for (int i = 0; i < 4; i++)
{
    if (file.Count > i)
    {
        list.Add(ConvertTo.Bytes(file[i]));
        continue;
    }
    list.Add(null);
}

int count = ctx.Database.ExecuteSqlCommand(
    $"UPDATE dbo.Table " +
    $"SET Imagem1 = @imagem1, Imagem2 = @imagem2, Imagem3 = @imagem3, Imagem4 = @imagem4 " +
    $"WHERE id = {Id}",
    new SqlParameter("imagem1", list[0] ?? null),
    new SqlParameter("imagem2", list[1] ?? null),
    new SqlParameter("imagem3", list[2] ?? null),
    new SqlParameter("imagem4", list[3] ?? null));

Error:

  

Parameterized query '(@ image1 varbinary (max), @ image2   nvarchar (4000), @ image3 nvarc 'expects the parameter' @ image2 ', which does not   was provided.

This error happens when the user chooses only one image.

Any solution?

    
asked by anonymous 13.11.2017 / 21:21

1 answer

7

Matheus you need to change null to SqlBinary.Null , many people had this problem with null and varbinary values in the database!

int count = ctx.Database.ExecuteSqlCommand(
    $"UPDATE dbo.Table " +
    $"SET Imagem1 = @imagem1, Imagem2 = @imagem2, Imagem3 = @imagem3, Imagem4 = @imagem4 " +
    $"WHERE id = {Id}",
    new SqlParameter("imagem1", list[0] ?? SqlBinary.Null),
    new SqlParameter("imagem2", list[1] ?? SqlBinary.Null),
    new SqlParameter("imagem3", list[2] ?? SqlBinary.Null),
    new SqlParameter("imagem4", list[3] ?? SqlBinary.Null));
    
13.11.2017 / 22:34