我的專案使用 .NET Core 3.1,并且我的存盤程序在我的存盤庫類中執行。我想插入并回傳范圍標識(剛剛插入的記錄的 id UserNumber),以便我可以將它用于同一方法中的另一個存盤程序。我在這里遇到的問題是 parameters[1].Value值回傳零。
這是我的存盤程序的縮寫:
ALTER PROCEDURE [dbo].[InsertUser]
@iUserNumber int OUTPUT,
As
INSERT dbo.tblUser (
CreatedBy
)
VALUES (@LoginUserId)
IF @@ERROR <> 0 GOTO ERRHANDLER
SET @UserNumber = SCOPE_IDENTITY() /** this is the primary Key **/
RETURN(@UserNumber)
這是我的存盤庫示例
public int InsertUsers(int LoginUserId, int UserNumber)
{
SqlParameter[] parameters = new List<SqlParameter>()
{
_dbContext.CreateSqlParameter(StoredProcedureConstants.LoginUserId,SqlDbType.Int,LoginUserId.ToSafeInt()),
_dbContext.CreateSqlParameter(StoredProcedureConstants.UserNumber,SqlDbType.Int,UserNumber.ToSafeInt())
}.ToArray();
var intResult = _dbContext.ExecuteNonQuery(StoredProcedureConstants.InsertUsers, parameters);
var result2 = parameters[1].Value; //This comes back as zero
如何將范圍標識分配給result2?
uj5u.com熱心網友回復:
應該是這樣的:
CREATE OR ALTER PROCEDURE [dbo].[InsertUser]
@LoginUserId int,
@iUserNumber int OUTPUT
As
INSERT dbo.tblUser (CreatedBy)
VALUES (@LoginUserId)
SET @iUserNumber = SCOPE_IDENTITY() /** this is the primary Key **/
和
SqlParameter[] parameters = new List<SqlParameter>()
{
_dbContext.CreateSqlParameter("@LoginuserId",SqlDbType.Int,LoginUserId),
_dbContext.CreateSqlParameter("@iUserNumber",SqlDbType.Int)
}.ToArray();
parameters[1].Direction = ParameterDirection.Output;
_dbContext.ExecuteNonQuery(StoredProcedureConstants.InsertUsers, parameters);
var result2 = parameters[1].Value;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/373999.html
標籤:sql asp.net核心 存储库模式 asp.net-core-3.1
