2

Npgsql を使用して、キーと値のペアの配列を引数として PostgreSQL 関数に渡したいです。次のタイプが定義されています。

drop type if exists key_value_pair
create type key_value_pair as (
    k varchar(250),
    v text
    );

私は次のような関数を書きたいです:

create or replace function persist_profile(
    _user_id integer,
    _key_value_pairs key_value_pair[]
    ) returns boolean as $$
begin;

...

return true;
end;
$$ language plpgsql;

IDictionary<string, string>Npgsql を使用してオブジェクトからストアド プロシージャにデータを渡すにはどうすればよいですか? これはサポートされていますか? オンラインで参照が見つかりません。

ありがとう!

4

4 に答える 4

5

ジェレミー!

残念ながら、Npgsql はまだカスタム データ型をサポートしていません。そのためのサポートを追加するつもりです。

これは、Npgsql を使用して型コンバーターの「登録」の型を追加することを意味します。このようにして、アプリケーションはカスタム型のコンバーターを登録し、Npgsql はそれを使用してデータをやり取りします。

詳細については、cvs.npgsql.org の Npgsql/src/NpgsqlTypes/NpgsqlTypeConverters.cs を参照してください。

私たちのプロジェクト サイト project.npgsql.org に、それに関する機能リクエストを追加してください。

前もって感謝します。

于 2012-01-12T17:11:41.183 に答える
1

IDictionaryを2次元配列に変換し、この配列をNpgsqlを介してストアドプロシージャに渡します。Npgsqlは配列をパラメーターとしてサポートしているため、正常に機能します。このように変換します:

                string[][] columnsArray = new string[2][];
                Dictionary<string, string> fields = ...
                columnsArray[0] = fields.Keys.ToArray();
                columnsArray[1] = fields.Values.ToArray();
于 2012-06-28T16:12:06.447 に答える
0

ユーザー定義のオブジェクト タイプはまだサポートされていないようです。別の方法は、オブジェクトを XML にシリアル化し、パラメーターとして渡し、ストアド プロシージャで解析して実行することです。

ユーザー定義オブジェクトのサポート状況に変更はありますか?

于 2014-01-15T12:37:02.873 に答える