У меня есть процедура, которая возвращает идентификатор добавленной записи. Я использую Entity Framework для вызова процедуры и получения значения, но оно всегда равно 0.
Это код - вы можете понять, почему он не возвращает значение идентификатора?
C# Код домена Entity Framework:
var cNumber = new SqlParameter("CNumber", acctSl.cNumber);
var fId = new SqlParameter("FId", acctSl.FId);
var splAmt = new SqlParameter("SplAmt", acctSl.SplAmt);
var frDt = new SqlParameter("FrDt", acctSl.FrDate);
var toDt = new SqlParameter("ToDt", acctSl.ToDate);
var user = new SqlParameter("User", acctSl.User);
var id = new SqlParameter("Id", "")
{
Direction = ParameterDirection.Output,
SqlDbType = SqlDbType.VarChar
};
var sql = "EXECUTE [dbo].[InsertAcctSpl] @CNumber, @FID, @SplAmt, @FrDt, @ToDt, @User, @Id OUTPUT";
var result = DbContext.Database.ExecuteSqlRaw(sql, cNumber, fId, splAmt, frDt, toDt, user, id);
int rowsAffected;
var yourOutput = Convert.ToInt32(id.Value);
if (result > 0)
{
acctSl.AcctId = yourOutput;
}
else
{
acctSl.AcctId = 0;
}
SQL Серверная процедура:
ALTER PROCEDURE [dbo].[InsertAccountsSpend]
@CNumber varchar(15),
@FId bigint,
@SplAmt money,
@FrDt date,
@ToDt date,
@User bigint,
@Id bigint OUTPUT
AS
INSERT INTO AcctSpend (CNmbr, FID, SplAmt, FrDt, ToDt,
Cr8Dt, Cr8User_ID, UpdtDt, UpdtUser_ID)
VALUES (@CNumber, @FId, @splAmt, @FroDt,@ ToDt,
GETDATE(), @User, GETDATE(), @User)
SET @id = SCOPE_IDENTITY()
RETURN @id