Sto usando Entity Framework v6. Ho una procedura memorizzata come mostrato di seguito
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
Ora ho una classe modello
public class CountryName
{
public int CountryId { get; set; }
public string CountryName { get; set; }
}
Quindi voglio ottenere il risultato della query SELECT
in un tipo List<CountryName>
List<CountryName> countryList = null;
using (DbEntities dbContext = new DbEntities())
{
countryList = //my code to collect the result
}
Beh, avrei potuto eseguire un LINQ su SQL direttamente sul tavolo ma sfortunatamente il mio requisito per ottenere i dati dalla stored procedure. Quindi, come posso farlo?
Add -> Function Import
. GetCountryListSP
, scegliere la procedura dall'elenco a discesa e scegliere il valore restituito dalla procedura per essere Entities
e scegliere CountryName
da l'elenco a discesa. Quindi nel codice:
var result = db.GetCountryListSP();//Send parameters too
Con questo approccio si impedisce di restituire -1
della stored procedure. Si prega di controllare questo post per ulteriori dettagli sul problema della stored procedure con Entity Framework.
Puoi farlo senza importare. Qualcosa del genere:
var countryList = dbContext.Database.SqlQuery<CountryName>("[GetCountryList]").ToList();
EntityFramework a volte non riconosce o importa SP))) Quindi, è per questo che sto risparmiando le mie ore con questo frammento di codice.