что означает ошибка «Должен объявить скалярную переменную @» в .NET Core - PullRequest
0 голосов
/ 13 октября 2018

Я новичок в .NET Core;Я попытался сохранить изображение в папке wwwroot и сохранил имя файла и путь к базе данных SQL Server, используя Dapper

public async Task<string> WriteFile(IFormFile file)
{
        String fileName;

        try
        {
            var extension = "." + file.FileName.Split('.')[file.FileName.Split('.').Length - 1];
            fileName = Guid.NewGuid().ToString() + extension; 
            var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\s", fileName);

            using (var bits = new FileStream(path, FileMode.Create))
            {
                await file.CopyToAsync(bits);
            }

            Image image = new Image(fileName,path);

            toDb(image);
        }
        catch (Exception e)
        {
            return e.Message;
        }

        return fileName;
}

public void toDb(Image image)
{
        string fileName = image.fileName;
        string path = image.path;

        using (IDbConnection dbConnection = Connection)
        {
            string sQuery = "INSERT INTO images(title, dir)" + "VALUES(@fileName, @path)";

            dbConnection.Open();
            dbConnection.Execute(sQuery,image);
        }
    }
}

Это неправильный способ или как я могу исправить эту ошибку с помощью dapper?

1 Ответ

0 голосов
/ 13 октября 2018

Вы неправильно вызываете команду dapper.

Ошибка возникает из-за того, что выполненная команда не может найти @fileName,@path параметры

Вы должны передать имена параметров с помощью анонимных классов

Как

dbConnection.Execute(sQuery, new { fileName = filename, path = path });

Или

dbConnection.Execute(sQuery, new { fileName = image.fileName, path = image.path});

Ссылка Dapper: Параметризованные запросы

...