我正在使用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; }
}
所以我希望以SELECT
类型
List<CountryName>
查询的结果
List<CountryName> countryList = null;
using (DbEntities dbContext = new DbEntities())
{
countryList = //my code to collect the result
}
好吧,我本可以直接在桌面上运行LINQ to SQL,但不幸的是我要求从存储过程中获取数据。那么,我该怎么做呢?
答案 0 :(得分:11)
Add -> Function Import
。GetCountryListSP
,从下拉列表中选择您的过程,然后选择过程的返回值从Entities
开始,从下拉列表中选择CountryName
。然后在代码中:
var result = db.GetCountryListSP();//Send parameters too
使用此方法可以防止返回存储过程的-1
。有关Entity Framework存储过程问题的详细信息,请查看this帖子。
答案 1 :(得分:4)
您无需导入即可完成此操作。这样的事情:
var countryList = dbContext.Database.SqlQuery<CountryName>("[GetCountryList]").ToList();
EntityFramework有时无法识别或导入SP)))因此,这就是我使用此代码段节省时间的原因。