Maison > développement back-end > C++ > Comment implémenter les paramètres de valeur de la table de procédure stockée d'Entity Framework ?

Comment implémenter les paramètres de valeur de la table de procédure stockée d'Entity Framework ?

Mary-Kate Olsen
Libérer: 2025-01-12 21:57:44
original
316 Les gens l'ont consulté

How to Implement Entity Framework's Stored Procedure Table Value Parameters?

Méthode d'implémentation des paramètres table de procédure stockée d'Entity Framework

Bien qu'Entity Framework ne prenne pas directement en charge la transmission de paramètres table, une solution de contournement peut être implémentée à l'aide de la commande ObjectContext. ExecuteStoreQuery

Méthode d'entreposage EF personnalisée

Les méthodes d'entreposage EF génériques suivantes vous permettent d'exécuter des procédures stockées qui incluent des paramètres table :

<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

Paramètres table personnalisés

Comme mentionné dans la description du problème, les paramètres table nécessitent une configuration spécifique :

Le paramètre
    doit être de type
  • . SqlParameter
  • doit être réglé sur SqlDbType. Structured
  • doit être défini sur le nom du type défini par l'utilisateur. TypeName

ExécuterStoreQuery à l'aide de paramètres table

Le code suivant montre comment utiliser

pour transmettre des paramètres table : ExecuteStoreQuery

<code class="language-csharp">dt.Rows.Add("EO01", 9, 4, 0);
dt.Rows.Add("EO00", 9, 4, 0);
dt.Rows.Add("EO02", 9, 4, 0);

var warnings = new SqlParameter("warnings", SqlDbType.Structured);
warnings.Value = dt;
warnings.TypeName = "dbo.udt_Warnings";

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

Méthode d'extension d'exécution de procédure stockée d'ObjectContext

Vous pouvez également créer une méthode d'extension pour

 : ObjectContext

<code class="language-csharp">public static void ExecuteStoredProcedure(this ObjectContext context, string storedProcName, params object[] parameters)
{
    string command = "EXEC " + storedProcName + " @caseid, @userid, @warnings";

    context.ExecuteStoreCommand(command, parameters);
}</code>
Copier après la connexion
Cette méthode vous permet d'utiliser directement

pour exécuter une procédure stockée contenant des paramètres table. ObjectContext

Compatibilité Code First

Si vous utilisez Entity Framework Code First, vous pouvez accéder à la méthode

en convertissant DbContext en ObjectContext. Toutefois, une bibliothèque appelée EntityFrameworkExtras offre un moyen plus pratique de gérer les paramètres table dans un environnement Code First. ExecuteStoreQuery

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