#asp.net #asp.net-web-api #orm #dapper
#asp.net #asp.net-web-api #orm #dapper
Вопрос:
я собираюсь использовать dapper в качестве своего ORM в проекте asp .net. Итак, проблема в том, что я собираюсь выполнить свою процедуру, чтобы вернуть данные get по идентификатору. Если идентификатор не существует, ошибка отображается следующим образом
Последовательность не содержит элементов
есть ли какое-либо решение для предотвращения ошибки с помощью dapper? потому что другое решение использует entity framework.
вот мой код
var SP_Name = "SP_GetSupplierById";
parameters.Add("@Id", Id);
var getSupplierById = connection.QuerySingle<Supplier>(SP_Name,parameters,commandType:CommandType.StoredProcedure);
return getSupplierById;
и вот моя процедура
CREATE PROCEDURE SP_GetSupplierById
@Id int
AS
SELECT * from TB_M_Supplier where id = @Id;
RETURN 0
Спасибо за вашу помощь
Ответ №1:
QuerySingle
утверждает, что возвращается ровно одна строка; не ноль, не кратно. Если допустимо значение нуля, то вы можете использовать QuerySingleOrDefault
— и проверить значение по умолчанию, которое будет null
в случае ссылочных типов (классов). QuerySingleOrDefault
только утверждает, что нет нескольких строк; ноль в порядке.
Итак
var getSupplierById = connection.QuerySingleOrDefault<Supplier>(SP_Name,parameters,commandType:CommandType.StoredProcedure);
return getSupplierById; // todo: consider null