0

У меня есть метод действий в WebAPI, который выполняет SQL:Могу ли я использовать? Синтаксис решить, что мой метод возвращает

var sql = @"UPDATE UserTestQuestion 
      SET AnswerGridResponses = @AnswerGridResponses, 
        Answered = 1 
      WHERE UserTestQuestionId = @UserTestQuestionId 
      AND UserId = @UserId;"; 
var parameters = new SqlParameter[] 
{ 
    new SqlParameter("@CreatedBy", createdBy), 
    new SqlParameter("@AnswerGridResponses", answerGridResponses), 
    new SqlParameter("@TestQuestionId", testQuestionId) 
}; 

var rc = await db.Database.ExecuteSqlCommandAsync(sql, parameters); 
if (rc > 0) 
{ 
    return Ok(rc); 
} 
else 
{ 
    return BadRequest(); 
} 

Это мое понимание того, что ExecuteSqlCommandAsync возвратит число в указать, как были изменены многие строки. Поэтому я добавил чек на rc > 0.

Есть ли способ, которым я мог бы это сделать без необходимости для всех {}. Я был , думая об использовании ?: операторов, но я думаю, что они работают только для установки значения, а не для возвратов, как я использую.

+2

Нет, идите прямо вперед и используйте его. – dursk

+1

Вы должны убедиться, что они одного типа, а не только возвращающие объекты – DevEstacion

+0

, это называется тернарным оператором. в SQL это похоже на инструкцию 'case when then end'. – RadioSpace

ответ

3

Вы можете делать именно то, что хотите.

return (rc > 0) ? Ok(rc) : BadRequest(); 

Хотя некоторые могут спорить, используя if/else, является более чистым. Вам не нужны фигурные скобки, вы можете просто сделать:

if (rc > 0) 
    return Ok(rc); 
else 
    return BadRequest(); 
0

Как уже сказал, что вы можете определенно вернуть результат троичного оператора. Единственное, на что нужно обратить внимание, это преобразование типов, так как нужно оценить один тип возврата. Это действительно происходит только в том случае, если вы пытаетесь вернуть значение null при некотором определенном условии, но в этом случае вы можете просто перевести null в правильный тип.

Это хорошо, просто назначить результат переменной и затем вернуть переменную. Это немного чище, чтобы читать и, что более важно, легче отлаживать. (По сути, каждый раз, когда я отлаживаю одну из этих функций, я в конечном итоге меняю ее на переменное назначение, поэтому я могу увидеть значение, прежде чем покинуть функцию в любом случае.)

Смежные вопросы