次のスキーマを持つテーブルがあります。
CREATE TABLE account
(
id serial primary key,
login varchar(40) not null,
password varchar(40) not null,
data hstore
);
NpgsqlCommand
パラメータを持つオブジェクトを使用して、アプリケーションからアカウント データを取得および保存したいと考えています。にはどの DbType を使用する必要がありNpgsqlParameter
ますか? 列挙NpgsqlDbType
型に hstore の値がありません。オブジェクトの値としてDictionary
orを使用できますか?HashTable
NpgsqlParameter
JSON 列を使用すると、 type のパラメーターを作成し、NpgsqlDbType.Text
JSON.Net などのライブラリを使用してオブジェクトを JSON 文字列にシリアル化し、そのような SQL ステートメントを送信できます。
INSERT INTO account (login, password, data) VALUES (:login, :password, :data::json)
残念ながら、これは hstore 列では機能しません。これを行おうとすると、構文エラーが発生します。
INSERT INTO account (login, password, data) VALUES (:login, :password, :data::hstore)
データ パラメータに渡す文字列は次のようになります。
'key1 => "value1", key2 => "value2"'