第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

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

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

海綿寶寶撒 2019-10-10 16:05:12
我在存儲過程中查詢,該存儲過程使用一些動態(tài)SQL調(diào)用了一些鏈接服務(wù)器。我知道EF不喜歡這樣,所以我專門列出了將要返回的所有列。但是,它仍然不喜歡那樣。我在這里做錯了什么?我只希望EF能夠檢測從存儲過程返回的列,以便創(chuàng)建所需的類。請查看以下代碼,這些代碼構(gòu)成了存儲過程的最后幾行: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貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個贊

EF不支持導(dǎo)入存儲過程,這些存儲過程從以下位置構(gòu)建結(jié)果集:


動態(tài)查詢

臨時表

原因是要導(dǎo)入過程EF必須執(zhí)行它。這種操作可能很危險(xiǎn),因?yàn)樗赡軙|發(fā)數(shù)據(jù)庫中的某些更改。因此,EF在執(zhí)行存儲過程之前會使用特殊的SQL命令:


SET FMTONLY ON

通過執(zhí)行此命令,存儲過程將僅返回有關(guān)其結(jié)果集中各列的“元數(shù)據(jù)”,并且將不執(zhí)行其邏輯。但是因?yàn)槲磮?zhí)行邏輯,所以沒有臨時表(或內(nèi)置的動態(tài)查詢),因此元數(shù)據(jù)不包含任何內(nèi)容。


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


手動定義返回的復(fù)雜類型(我猜應(yīng)該可以)

使用技巧,僅用于添加開始時放置的存儲過程SET FMTONLY OFF。這將允許您的SP的其余代碼以正常方式執(zhí)行。只需確保您的SP不會修改任何數(shù)據(jù),因?yàn)檫@些修改將在導(dǎo)入期間執(zhí)行!成功導(dǎo)入后,刪除該hack。


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

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個贊

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


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

現(xiàn)在,EF應(yīng)該能夠識別返回的列類型。


查看完整回答
反對 回復(fù) 2019-10-10
  • 3 回答
  • 0 關(guān)注
  • 575 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號