Maison > développement back-end > C++ > Comment puis-je transmettre des paramètres table aux procédures stockées dans Entity Framework ?

Comment puis-je transmettre des paramètres table aux procédures stockées dans Entity Framework ?

Susan Sarandon
Libérer: 2025-01-12 22:01:43
original
379 Les gens l'ont consulté

How Can I Pass Table-Valued Parameters to Stored Procedures in Entity Framework?

Passer des paramètres table aux procédures stockées dans Entity Framework

Entity Framework lui-même ne prend pas en charge de manière native la transmission de paramètres table directement aux procédures stockées. Cependant, cela peut être réalisé en utilisant la commande ObjectContext avec ExecuteStoreQuery.

Créer une méthode d'entreposage universelle

Tout d'abord, définissez une méthode générale d'entreposage :

<code class="language-csharp">public IEnumerable<T> ExecuteStoredProcedure<T>(string procedureName, params object[] parameters)
{
    // 构建命令字符串
    StringBuilder command = new StringBuilder();
    command.Append("EXEC ");
    command.Append(procedureName);
    command.Append(" ");

    // 添加参数占位符
    for (int i = 0; i < parameters.Length; i++)
    {
        if (i > 0)
            command.Append(",");

        command.Append("{" + i + "}");
    }

    // 执行查询
    return this.context.ExecuteStoreQuery<T>(command.ToString(), parameters);
}</code>
Copier après la connexion

Utilisez ExecuteStoreQuery avec des paramètres table

Lors de l'utilisation de ExecuteStoreQuery avec des paramètres table, définissez l'attribut SqlParameter de SqlDbType sur Structured et l'attribut TypeName sur le nom du type défini par l'utilisateur :

<code class="language-csharp">var warnings = new SqlParameter("warnings", SqlDbType.Structured);
warnings.Value = dt;
warnings.TypeName = "dbo.udt_Warnings";</code>
Copier après la connexion

Passer les paramètres à la procédure stockée

Dans la méthode ExecuteStoredProcedure, assurez-vous que les paramètres sont passés dans le bon ordre :

<code class="language-csharp">entities.ExecuteStoredProcedure("usp_RaiseWarnings_rs", userId, warnings, caseId);</code>
Copier après la connexion

DbContext et ObjectContext

Pour Entity Framework Code First, DbContext doit être converti en ObjectContext pour utiliser la méthode ExecuteStoreQuery :

<code class="language-csharp">var entities = (ObjectContext)context;
entities.ExecuteStoredProcedure("usp_RaiseWarnings_rs", userId, warnings, caseId);</code>
Copier après la connexion

Notes supplémentaires

  • Chaque colonne du tableau défini par l'utilisateur doit être transmise, même si elle a des valeurs par défaut.
  • Les paramètres passés à ExecuteStoreCommand doivent être dans le même ordre que dans la procédure stockée.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal