簡體   English   中英

ObjectParameter沒有從存儲過程獲取輸出值

[英]ObjectParameter not getting the output value from a stored procedure

在我的應用程序(VS2015,C#,WebForm)中,我有以下代碼以前完全正常工作(本地和生產服務器上),但現在我收到錯誤:

插入項目的存儲過程:

CREATE PROCEDURE [dbo].[StoredProcedure_Item_Insert]
    @ItemText VARCHAR(250),
    @InsertedID INT OUTPUT

    INSERT INTO [dbo].[Item] ([ItemText])
    VALUES (@ItemText  -- ItemText - varchar(250)
           );

    SET @InsertedID = SCOPE_IDENTITY();

    SELECT @InsertedID AS InsertedID;

存儲庫代碼:

public int InsertItem(string itemText)
{
        ObjectParameter InsertedId = new ObjectParameter("InsertedID", -1);

        _db.StoredProcedure_Item_insert(feeText, InsertedId);

        return (int)InsertedId.Value;
}

.edmx文件中為此存儲過程導入函數

Returns a Collection Of Scalars: Int32

當我點擊Get Column Information button ,我明白了

Name: InsertedID
EDM Type: Int32
Db Type: int
Nullable: true

我能想到的唯一變化是我的機器升級到Windows 10所以我不得不重新安裝VS2015。

我嘗試/發現了什么:

  • InsertedId.Value始終為-1
  • 錯誤消息位於'InsertedId` - >'MappableType' - >'DeclaringMethod'
  • DeclaringMethod的錯誤說

    ((System.RuntimeType)InsertedId.MappableType).DeclaringMethod引發類型System.InvalidOperationException的異常System.Reflection.MethodBase {System.InvalidOperationException}

  • DeclaringMethod.Message

    只能在Type.IsGenericParameter為true的Type上調用方法。

  • 在存儲過程中嘗試OUTOUTPUT

  • 嘗試SELECT @InsertedIDRETURN @InsertedID
  • 為第二個參數嘗試了new ObjectParameter("InsertedID", typeof(Int32))而不是-1

我一直想弄清楚現在發生了多少小時但是我完全陷入困境......

我猜它是有道理的,它抱怨從存儲過程返回的結果是一個結果集,但我仍然不知道為什么它曾經工作...無論如何改變代碼如下訣竅。

改變自:

    public int InsertItem(string itemText)
        {
            ObjectParameter InsertedId = new ObjectParameter("InsertedID", -1);
            _db.usp_Fee_insert(itemText, InsertedId);
            return (int)InsertedId.Value;
        }

對此:

public int InsertItem(string itemText)
    {
        ObjectParameter InsertedId = new ObjectParameter("InsertedID", -1);
        var result = _db.usp_Fee_insert(itemText, InsertedId);
        return (int)InsertedId.Value;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM