Вы можете создать объект последовательности в вашей базе данных, используя код SQL, подобный следующему:
CREATE SEQUENCE Test.CountBy1TestSequence
START WITH 1
INCREMENT BY 1 ;
GO
Это можно затем вызвать с помощью SQL:
SELECT NEXT VALUE FOR Test.CountBy1TestSequence;
Или вызывается через dapper с помощью:
using (var conn = new SqlConnection(ConnectionString))
{
String sql = @"SELECT NEXT VALUE FOR Test.CountBy1TestSequence";
var result = conn.ExecuteScalar<Int>(sql);
// Do whatever with the result
}
Используя значение последовательности, вы можете затем передать его хранимой процедуре в вашей базе данных, используя dapper с кодом, подобным следующему:
var p = new DynamicParameters();
p.Add("@inputInvoiceNumber", $"INV{DateTime.Now.Year}-{DateTime.Now.Month}-{result}, DbType.String, ParameterDirection.Input);
p.Add("@retVal", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue); // If there is any return
cnn.Execute("spTestProc", p, commandType: CommandType.StoredProcedure);
Где @inputInvoiceNumber
и @retVal
- параметры вашей хранимой процедуры.