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>
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>
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>
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>
Notes supplémentaires
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!