Maison >développement back-end >C++ >Comment appeler des procédures stockées avec des paramètres dans Entity Framework 6 Code-First?

Comment appeler des procédures stockées avec des paramètres dans Entity Framework 6 Code-First?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-29 01:46:13720parcourir

How to Call Stored Procedures with Parameters in Entity Framework 6 Code-First?

Framework de l'entité 6 Code-First: appelant efficacement les procédures stockées avec paramètres

Dans l'approche de code de Code 6 de l'entité 6, la mise à jour des procédures stockées est essentielle pour les interactions complexes de la base de données. Un défi commun consiste à appeler efficacement les procédures stockées et à gérer le passage des paramètres.

illustrons une procédure stockée conçue pour insérer un département:

<code class="language-sql">ALTER PROCEDURE [dbo].[insert_department]
    @Name [varchar](100)
AS
BEGIN
    INSERT [dbo].[Departments]([Name])
    VALUES (@Name)

    DECLARE @DeptId int

    SELECT @DeptId = [DeptId]
    FROM [dbo].[Departments]
    WHERE @@ROWCOUNT > 0 AND [DeptId] = SCOPE_IDENTITY()

    SELECT t0.[DeptId]
    FROM [dbo].[Departments] AS t0
    WHERE @@ROWCOUNT > 0 AND t0.[DeptId] = @DeptId
END</code>

Pour intégrer cette procédure stockée dans le contexte de votre cadre d'entité, mappez-le dans votre modèle:

<code class="language-csharp">modelBuilder
    .Entity<department>()
    .MapToStoredProcedures(s =>
    {
        s.Update(u => u.HasName("modify_department")
                      .Parameter(b => b.Department, "department_id")
                      .Parameter(b => b.Name, "department_name"))
          .Delete(d => d.HasName("delete_department")
                      .Parameter(b => b.DepartmentId, "department_id"))
          .Insert(i => i.HasName("insert_department")
                      .Parameter(b => b.Name, "department_name"));
    });</code>

Ce mappage vous permet d'appeler la procédure stockée directement à partir de votre DBContext:

<code class="language-csharp">this.Database.SqlQuery<department>("insert_department", new SqlParameter("@Name", departmentName));</code>

Pour les procédures stockées renvoyant plusieurs ensembles de résultats (comme indiqué dans l'exemple), consultez la documentation de Microsoft sur "les procédures stockées avec plusieurs ensembles de résultats" pour les meilleures pratiques pour gérer les données renvoyées. Cela fournira des conseils sur le traitement efficace des ensembles de données multiples.

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