Вам не нужен SP, чтобы получить следующее значение из последовательности. Вы должны получить его непосредственно из самой последовательности. Вот почему вы получаете следующее сообщение:
Объект 'next_fis_number' не является объектом последовательности. "
Поскольку NEXT VALUE FOR
ожидает объект последовательности, а не объектSP.
Итак, удалите ваш SP и измените код C #, чтобы он использовал его:
SELECT NEXT VALUE FOR seq_fisnumarasi;
Для сообщения об ошибке приведения ваша последовательность по умолчанию возвращает BIGINT
, потому чтоявного типа данных не существует. BIGINT
требует 8 байтов и переводится как Int64
или long
в C #.
Вы приводите результат SQL к int
в C #, чтопо умолчанию используется 4-байтовый размер (Int32
). Поскольку потеря данных между 8-байтовым int и 4-байтовым int теряется, его нельзя преобразовать автоматически, поэтому возникает ошибка.
Чтобы исправить это,просто приведите к конкретному 8-байтовому целому числу в C #:
var rawQuery = Database.SqlQuery<long>("SELECT NEXT VALUE FOR seq_fisnumarasi;");
или измените SEQUENCE
, чтобы получить 4-байтовое целое число:
CREATE SEQUENCE seq_fisnumarasi
AS INT
START WITH 1
INCREMENT BY 1 ;
GO