簡體   English   中英

使用實體框架從存儲過程中檢索表數據

[英]Retrieve table data from stored procedure using entity framework

我正在使用Entity Framework v6。 我有一個存儲過程,如下所示

CREATE PROCEDURE [dbo].[GetCountryList] 
(
    @CustomerName VARCHAR(MAX), 
    @SearchCriteria VARCHAR(MAX)
)
AS
    BEGIN
    SET NOCOUNT ON

        SELECT CountryID, CountryName FROM dbo.Table1 
        WHERE CustomerName = @CustomerName AND CountryName = @SearchCriteria
    END

現在我有一個模型類

public class CountryName
{
    public int CountryId { get; set; }
    public string CountryName { get; set; }
}

所以我想在List<CountryName>類型中獲得SELECT查詢的結果

List<CountryName> countryList = null;

using (DbEntities dbContext = new DbEntities())
{
    countryList = //my code to collect the result
}

好吧,我可以直接在表上運行LINQ to SQL,但不幸的是我要求從存儲過程中獲取數據。 那么,我該怎么做呢?

  1. 您需要將存儲過程作為函數導入。 右鍵單擊Entity模型的工作區區域,然后選擇Add -> Function Import
  2. 在“添加函數導入”對話框中,輸入您希望在模型中引用存儲過程的名稱,例如GetCountryListSP ,從下拉列表中選擇您的過程,然后選擇過程的返回值為Entities並從中選擇CountryName下拉列表。
  3. 然后在代碼中:

     var result = db.GetCountryListSP();//Send parameters too 

    使用此方法可以防止返回存儲過程的-1 有關Entity Framework存儲過程問題的更多詳細信息,請查看帖子。

你可以在不導入的情況下完成。 像這樣的東西:

var countryList = dbContext.Database.SqlQuery<CountryName>("[GetCountryList]").ToList();

EntityFramework有時無法識別或導入SP)))所以,這就是我用這個片段節省我的時間的原因。

暫無
暫無

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

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