亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

EF4-所選的存儲過程不返回任何列

EF4-所選的存儲過程不返回任何列

海綿寶寶撒 2019-10-10 16:05:12
我在存儲過程中查詢,該存儲過程使用一些動態SQL調用了一些鏈接服務器。我知道EF不喜歡這樣,所以我專門列出了將要返回的所有列。但是,它仍然不喜歡那樣。我在這里做錯了什么?我只希望EF能夠檢測從存儲過程返回的列,以便創建所需的類。請查看以下代碼,這些代碼構成了存儲過程的最后幾行:SELECT    #TempMain.ID,    #TempMain.Class_Data,    #TempMain.Web_Store_Class1,    #TempMain.Web_Store_Class2,    #TempMain.Web_Store_Status,    #TempMain.Cur_1pc_Cat51_Price,    #TempMain.Cur_1pc_Cat52_Price,    #TempMain.Cur_1pc_Cat61_Price,    #TempMain.Cur_1pc_Cat62_Price,    #TempMain.Cur_1pc_Cat63_Price,    #TempMain.Flat_Length,    #TempMain.Flat_Width,    #TempMain.Item_Height,    #TempMain.Item_Weight,    #TempMain.Um,    #TempMain.Lead_Time_Code,    #TempMain.Wp_Image_Nme,    #TempMain.Wp_Mod_Dte,    #TempMain.Catalog_Price_Chg_Dt,    #TempMain.Description,    #TempMain.Supersede_Ctl,    #TempMain.Supersede_Pn,    TempDesc.Cust_Desc,    TempMfgr.Mfgr_Item_Nbr,    TempMfgr.Mfgr_Name,    TempMfgr.Vendor_IDFROM    #TempMain        LEFT JOIN TempDesc ON #TempMain.ID = TempDesc.ID        LEFT JOIN TempMfgr ON #TempMain.ID = TempMfgr.ID
查看完整描述

3 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

EF不支持導入存儲過程,這些存儲過程從以下位置構建結果集:


動態查詢

臨時表

原因是要導入過程EF必須執行它。這種操作可能很危險,因為它可能會觸發數據庫中的某些更改。因此,EF在執行存儲過程之前會使用特殊的SQL命令:


SET FMTONLY ON

通過執行此命令,存儲過程將僅返回有關其結果集中各列的“元數據”,并且將不執行其邏輯。但是因為未執行邏輯,所以沒有臨時表(或內置的動態查詢),因此元數據不包含任何內容。


您有兩種選擇(一種需要重寫存儲過程以不使用這些功能的選擇除外):


手動定義返回的復雜類型(我猜應該可以)

使用技巧,僅用于添加開始時放置的存儲過程SET FMTONLY OFF。這將允許您的SP的其余代碼以正常方式執行。只需確保您的SP不會修改任何數據,因為這些修改將在導入期間執行!成功導入后,刪除該hack。


查看完整回答
反對 回復 2019-10-10
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

或者,您可以創建一個用戶定義的表類型并將其返回。


CREATE TYPE T1 AS TABLE 

( ID bigint NOT NULL

  ,Field1 varchar(max) COLLATE Latin1_General_CI_AI NOT NULL

  ,Field2 bit NOT NULL

  ,Field3 varchar(500) NOT NULL

  );

GO

然后在過程中:


DECLARE @tempTable dbo.T1


INSERT @tempTable (ID, Field1, Field2, Field3)

SELECT .....


....


SELECT * FROM @tempTable

現在,EF應該能夠識別返回的列類型。


查看完整回答
反對 回復 2019-10-10
  • 3 回答
  • 0 關注
  • 578 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號