У меня есть приложение ASP.NET, и мы используем библиотеку Dapper. Код, который производит ошибку выглядит следующим образом:Неверный запрос: неправильный синтаксис рядом с ')'
public bool CheckIfExists(IEnumerable<long> ticketGroups, long dateId, int userId)
{
bool bRetVal = false;
string sql = "if exists (select * from T_TicketGroupsToChangePrice where SubTypeId = @SubTypeId and DateId = @dateId and UserId = @userId)";
using (var conn = CreateSqlConnection())
try
{
int rows = conn.Execute(sql, ticketGroups.Select(g => new { SubTypeId = g, UserId = userId, dateId }));
if (rows > 0)
bRetVal = true;
}
catch (SqlException ex)
{
throw new Exception("Error", ex);
}
return bRetVal;
}
При запуске приложения оно бросает Exeption: Неправильный синтаксис около «)»
Как вы можете видеть, может быть больше билетов (IEnumerable типа) с той же датой и пользователем.
Я не уверен, что происходит.
Не ответ, но ваша логика выглядит немного странно. Кажется, вы запрашиваете db для логического ответа (если существует), но затем вы оцениваете результат против ожидаемого количества строк. – Matt
Да. Если число возвращаемых строк больше 0, это означает, что существует строка (строки), и метод возвращает true. В противном случае это ложь. Почему ты имеешь в виду, что это странно? – tesicg
Но запрос, который вы задаете в db, не «сколько строк есть?». Вы спрашиваете: «Есть ли какие-нибудь строки?». Разные вещи. Просто очень незначительное наблюдение. – Matt