簡體   English   中英

從SqlQuery數據讀取器問題執行存儲過程

[英]execute stored procedure from SqlQuery data reader issue

所以我試圖按照以下方式執行存儲過程

            String sql =
        "SET NOCOUNT ON; " +
        "DECLARE @id INT, @itemnumber nvarchar(20); " +
        "SELECT @id= '" + car.ID + "'" +
        "EXEC [file].[usp_iudCar] " +
        "@p_ID=@id OUTPUT," +
        "@p_Location= '" + location + "', " +
        "@p_ItemNumber=@itemnumber OUTPUT, " +
        "@p_DoerTicket= '" + userToken + "' " +
        "SELECT @id AS id, @itemnumber AS itemNumber; ";

            QueryParamCollection queryParams = new QueryParamCollection();
            queryParams.AddInt32Param(QueryParamName.CarID, (object)car.ID);
            queryParams.AddStringParam(QueryParamName.Location, (object)location);
            queryParams.AddStringParam(QueryParamName.DoerTicket, (object)userToken);

            var update = context.Database.SqlQuery<Int32>(sql).FirstOrDefault<Int32>();

            return update;

類似於我從服務器上的查詢中進行操作時

   DECLARE @return_value int,
            @p_ID int,
            @p_ItemNumber nvarchar(20)

    SELECT  @p_ID = 1783999

    EXEC    @return_value = [file].[usp_iudCar]
            @p_ID = @p_ID OUTPUT,
            @p_ItemNumber = @p_ItemNumber OUTPUT,
            @p_Location = N'test',
            @p_DoerTicket = N'0x0100000057065fc3a91f34c3f1f9cad41e2f5889bac6a68d3eab408dddc1cd54e57ce240565294f481f4f248bca4fb772d38fd737a6448dcbbfd9d58'

    SELECT  @p_ID as N'@p_ID',
            @p_ItemNumber as N'@p_ItemNumber'

    SELECT  'Return Value' = @return_value

    GO

結果集 在此處輸入圖片說明

但我得到了執行

“ ExceptionMessage”:“數據讀取器具有多個字段。多個字段對於EDM基本類型或枚舉類型無效。

那么我該如何解決呢?或者正確的方法是什么呢?

這個錯誤:

“ ExceptionMessage”:“數據讀取器具有多個字段。多個字段對於EDM基本類型或枚舉類型無效。

意味着您的存儲過程返回的不止一個字段。 這就是您要告訴EF:

var update = context.Database.SqlQuery<Int32>(sql).FirstOrDefault<Int32>();

該查詢返回單個字段,但顯然不是這樣,否則您將不會得到該錯誤。

同樣,這也不是使用EF數據庫優先方法調用存儲過程的方法。 請參考問題和已接受的答案,以了解如何正確地做自己想做的事情。

暫無
暫無

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

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