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

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

使用Entity Framework從存儲過程中獲取數據

使用Entity Framework從存儲過程中獲取數據

C#
犯罪嫌疑人X 2019-08-13 16:37:02
使用Entity Framework從存儲過程中獲取數據我試圖獲取內容一個表,其中包含從數據庫上下文對象調用的動態(tài)SQL存儲過程(使用Entity Framework 6.1.1),以便填充GridView控件。我無法檢索數據。這是存儲過程。這是一個學生演示存儲過程中的SQL注入,所以我知道這是可注入的,它沒關系。ALTER PROCEDURE dbo.SearchProducts   @SearchTerm VARCHAR(max)ASBEGIN   DECLARE @query VARCHAR(max)   SET @query = 'SELECT * FROM dbo.Products WHERE Name LIKE ''%' + @SearchTerm + '%'''   EXEC(@query)END然后我用來執(zhí)行存儲過程的C#代碼是:var db = new MyEntities();var TEST_SEARCH_TERM = "product";var result = db.SearchProducts(TEST_SEARCH_TERM);MyGridView.DataSource = result;MyGridView.DataBind();執(zhí)行時,在Visual Studio的數據庫資源管理器中,存儲過程正常工作。但是當在運行的ASP.NET應用程序中執(zhí)行時,我在DataBind()方法中得到一個異常,因為result返回-1而不是IEnumerable DataSet包含由存儲過程的SELECT產生的對象。如何檢索數據并填充我的數據GridView?
查看完整描述

3 回答

?
慕標5832272

TA貢獻1966條經驗 獲得超4個贊

使用以下步驟解決此問題:

  1. 您需要將存儲過程作為函數導入。右鍵單擊實體模型的工作區(qū)區(qū)域,然后選擇Add -> Function Import。

  2. 在“添加功能導入”對話框中,輸入您希望在模型中引用存儲過程的名稱,例如Search_Products,從下拉列表中選擇您的過程,然后選擇要返回的過程值,并從下拉列表中進行Entities選擇Products。名單。

  3. 然后在代碼背后:

    var db = new MyEntities();var TEST_SEARCH_TERM = "product";var result = db.Search_Products(TEST_SEARCH_TERM);//Search_Products is the name that you specified in Function Import dialog
  4. MyGridView.DataSource = result;MyGridView.DataBind();

您獲得-1結果的原因是實體框架不能支持開箱即用的存儲過程返回值。我認為對存儲過程返回值的支持取決于Entity框架的版本。實體框架也沒有豐富的存儲過程支持,因為它是一個ORM,而不是SQL替代品。


查看完整回答
反對 回復 2019-08-13
  • 3 回答
  • 0 關注
  • 463 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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