ホームページ >バックエンド開発 >C++ >Entity Framework のストアド プロシージャ テーブル値パラメーターを実装するにはどうすればよいですか?

Entity Framework のストアド プロシージャ テーブル値パラメーターを実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-12 21:57:44316ブラウズ

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

Entity Framework ストアド プロシージャのテーブル値パラメーター実装メソッド

Entity Framework はテーブル値パラメーターの受け渡しを直接サポートしていませんが、ObjectContext コマンドを使用して回避策を実装できます。 ExecuteStoreQuery

カスタマイズされた EF 倉庫管理方法

次の汎用 EF ウェアハウス メソッドを使用すると、テーブル値パラメーターを含むストアド プロシージャを実行できます。

<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>

カスタムのテーブル値パラメーター

問題の説明で述べたように、テーブル値パラメーターには特定の構成が必要です。

    パラメータは
  • 型である必要があります。 SqlParameter
  • SqlDbType に設定する必要があります。 Structured
  • はユーザー定義型の名前に設定する必要があります。 TypeName

テーブル値パラメータを使用してStoreQueryを実行する

次のコードは、

を使用してテーブル値パラメーターを渡す方法を示しています。 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>
ObjectContext のストアド プロシージャ実行拡張メソッド

または、

の拡張メソッドを作成できます:

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>
を直接使用して、テーブル値パラメーターを含むストアド プロシージャを実行できます。

ObjectContext

コードファーストの互換性

Entity Framework Code First を使用している場合は、

に変換することで DbContext メソッドにアクセスできます。ただし、EntityFrameworkExtras と呼ばれるライブラリは、Code First 環境でテーブル値パラメーターを処理するためのより便利な方法を提供します。 ObjectContext

以上がEntity Framework のストアド プロシージャ テーブル値パラメーターを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。