EF コードファースト CTP5: ストアド プロシージャ パラメーターで DbContext.Database.SqlQuery を使用する
質問:
開発者は、ストアド プロシージャで DbContext.Database.SqlQuery メソッドを使用しようとすると、パラメーターを指定する際に課題に直面します。 SqlParameter オブジェクトを使用すると、パラメーターが期待どおりに提供されなかったことを示す SqlException がスローされます。
答え:
パラメーターを必要とするストアド プロシージャで DbContext.Database.SqlQuery メソッドを正常に使用するには、次のアプローチを使用する必要があります。
解決策:
SqlParameter オブジェクトをパラメーターとして直接渡す代わりに、SQL クエリ文字列を変更して、「@」記号で始まるパラメーター名を含めます。次に、必要なパラメーターごとに SqlParameter インスタンスを作成して割り当て、追加パラメーターとして提供します。
コード例:
次のコード スニペットは、正しい使用法を示しています:
<code class="language-c#">context.Database.SqlQuery<我的实体类型>( "mySpName @param1, @param2, @param3", new SqlParameter("param1", param1), new SqlParameter("param2", param2), new SqlParameter("param3", param3) );</code>
この更新された構文により、SqlException の問題が解決され、DbContext.Database.SqlQuery メソッドを使用してストアド プロシージャから目的の結果を取得できるようになります。
以上がストアド プロシージャ パラメーターで DbContext.Database.SqlQuery を正しく使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。