Maison >développement back-end >C++ >Comment puis-je récupérer avec succès les données d'une procédure stockée à l'aide d'Entity Framework dans ASP.NET ?

Comment puis-je récupérer avec succès les données d'une procédure stockée à l'aide d'Entity Framework dans ASP.NET ?

DDD
DDDoriginal
2024-12-29 00:10:10491parcourir

How Can I Successfully Retrieve Data from a Stored Procedure Using Entity Framework in ASP.NET?

Utiliser Entity Framework pour récupérer des données à partir d'une procédure stockée

Dans le domaine du développement Web, il est souvent nécessaire de remplir des ensembles de données dans des applications à partir de sources de données. C'est là qu'Entity Framework entre en jeu, fournissant une interface orientée objet pour interagir avec les bases de données. Cependant, lorsqu'il s'agit de récupérer des données à partir de procédures stockées, certains défis peuvent être rencontrés.

Considérez la procédure stockée suivante dans SQL Server :

ALTER PROCEDURE dbo.SearchProducts
  @SearchTerm VARCHAR(max)
AS
BEGIN
  DECLARE @query VARCHAR(max)
  SET @query = 'SELECT * FROM dbo.Products WHERE Name LIKE ''%' + @SearchTerm + '%'''
  EXEC(@query)
END

Pour tenter de récupérer des données à partir de cette procédure procédure stockée à l'aide d'Entity Framework 6.1.1 et remplir un contrôle GridView, le code C# suivant peut être utilisé :

var db = new MyEntities();
var TEST_SEARCH_TERM = "product";
var result = db.SearchProducts(TEST_SEARCH_TERM);

MyGridView.DataSource = result;
MyGridView.DataBind();

Cependant, lors de lors de l'exécution du code dans une application ASP.NET, une exception se produit, la variable de résultat renvoyant -1 au lieu de l'ensemble de données IEnumerable souhaité. Pour résoudre ce problème et récupérer les données avec succès, les étapes suivantes doivent être suivies :

  1. Importer la procédure stockée en tant que fonction :

    • Cliquez avec le bouton droit sur la zone d'espace de travail de votre modèle d'entité et sélectionnez "Ajouter" -> "Importation de fonction."
  2. Configurez l'importation de fonction :

    • Dans la boîte de dialogue "Ajouter une importation de fonction", indiquez un nom pour la fonction, par exemple "Search_Products".
    • Sélectionnez la procédure stockée "SearchProducts" dans la liste déroulante list.
    • Définissez la valeur de retour de la procédure sur "Entités" et choisissez "Produits" dans la liste déroulante.
  3. Modifier le code derrière :

    • Modifiez le code dans l'extrait donné à :
var db = new MyEntities();
var TEST_SEARCH_TERM = "product";
var result = db.Search_Products(TEST_SEARCH_TERM); // Replace "SearchProducts" with your chosen function name

MyGridView.DataSource = result;
MyGridView.DataBind();

Cette méthode résout le problème en important la procédure stockée en tant que fonction dans le modèle Entity Framework, permettant d'y accéder et de l'exécuter avec la valeur de retour étant défini sur un ensemble de données IEnumerable.

Il est important de noter que même si Entity Framework fournit un mécanisme pratique pour interagir avec les bases de données, sa prise en charge des procédures stockées est limité et n'est pas capable de gérer nativement les valeurs de retour des procédures stockées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn