FirstOrDefault()
в LINQ эквивалентно LIMIT 1
в MySQL, поэтому функцию LINQ можно преобразовать в команды SQL с помощью IF
или CASE WHEN
следующим образом (предполагается, что команды выполняются внутри хранимой процедуры):
DELIMITER //
-- 'Events' is a DbSet name by common convention,
-- therefore table name should be 'Event'
CREATE PROCEDURE procedure_name (IN eventID INT)
BEGIN
DECLARE v INT;
SET v = SELECT EventID FROM Event WHERE EventID = eventID LIMIT 1;
CASE WHEN v IS NOT NULL
THEN DELETE FROM Event WHERE EventID = v
ELSE -- do something else
END
-- alternative:
-- IF(v IS NOT NULL, DELETE FROM Event WHERE eventID = v, 0)
-- other stuff here
END//
DELIMITER ;
Примечание: Если EventID
является столбцом первичного ключа, вы можете удалить LIMIT 1
, поскольку результат запроса возвращает только одно значение.
Затем используйте CALL procedure_name(eventID)
или включите procedure_name
в MySqlCommand
, чтобы выполнить его.