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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

EF4-所選的存儲(chǔ)過程不返回任何列

EF4-所選的存儲(chǔ)過程不返回任何列

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

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


動(dòng)態(tài)查詢

臨時(shí)表

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


SET FMTONLY ON

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


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


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

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


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

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

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


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)該能夠識(shí)別返回的列類型。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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