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 ?
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>
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
SqlParameter
SqlDbType
. Structured
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>
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>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!