Невозможно связать параметр в Insight.Database

Я пытаюсь привязать параметр к запросу SQL в моем хранилище, но у меня ошибка

public IList<Movie> FindMovieById(int movieId)
{
   return Database.Connection().QuerySql<Movie>("select * from myDB.movies where ID=?", new { movieId });
}

Я получаю исключение OleDb.

SQL0313: недопустимое количество переменных хоста. Причина,,,,: Количество переменных или записей хоста в области SQLDA или дескриптора, указанных в операторе EXECUTE или OPEN, не совпадает с количеством маркеров параметров, указанных в подготовленном операторе SQL S000001. Если имя оператора *N, число переменных хоста или записей в области SQLDA или дескриптора было указано в операторе OPEN и не совпадает с количеством переменных хоста, указанных в операторе DECLARE CURSOR для курсора C000001. Восстановление,,: Измените число переменных хоста, указанное в предложении USING, или количество записей в области SQLDA или дескриптора, чтобы оно равнялось количеству маркеров параметров в подготовленном операторе SQL или количеству переменных хоста в операторе DECLARE CURSOR. Снова скомпилируйте программу.

Я использовал? для привязки параметров, поскольку OleDb имеет позиционные параметры, которые обозначаются '?' скорее '@parameterName',

Любая помощь приветствуется.

2 ответа

Используя Insight.Database, вы можете попробовать это?

return Database.Connection().QuerySql<Movie>(
  "select * from myDB.movies where ID=@movieId", 
  new { movieId = movieId });

Чтобы Insight отображал запросы на объекты, он привязывает параметры по имени, а не по позиции.

Ваш объект параметра может быть анонимного типа. Если вы укажете:

new { movieId }

Я считаю, что компилятор сгенерирует свойство с именем "MovieID"

В этом случае ваш параметр должен называться @movieId.

Если ваша база данных не поддерживает именованные параметры, пожалуйста, откройте проблему на github, и я могу взглянуть на нее.

https://github.com/jonwagner/Insight.Database/issues

Другие вопросы по тегам