C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

postgresのデータ取得時のマッピング /粗品 (22/04/22(Fri) 10:55) #99530
Re[1]: postgresのデータ取得時のマッピング /Hongliang (22/04/22(Fri) 12:28) #99531
  └ Re[2]: postgresのデータ取得時のマッピング /粗品 (22/04/22(Fri) 13:02) #99532 解決済み


親記事 / ▼[ 99531 ]
■99530 / 親階層)  postgresのデータ取得時のマッピング
□投稿者/ 粗品 (1回)-(2022/04/22(Fri) 10:55:28)

分類:[VB.NET/VB2005 以降] 

環境
VisualStudio2017
vb.net(WinForms) .netframework 4.6.2
DB:postgresql4 + Npgsql 4.1.10 + EnterpriseLibrary.Data 5.0.414

DBに接続してデータを取得する際、Microsoft.Practices.EnterpriseLibrary.DataのIRowMapperで指定しているのですが
DBのテーブルhogeにcolumn1があり
class hogeにcolumn1とcolumn1xがあるとして、column1xは比較用に使うので当初はcolumn1の内容を入れたい場合

SQL="SELECT column1 FROM hoge"

Dim rowMapper As IRowMapper(Of hoge)

rowMapper = MapBuilder(Of hoge).MapAllProperties.
    Map(Function(x) x.column1x).ToColumn("column1").
    Build()

と個別指定していても
'The column column1x was not found on the IDataRecord being evaluated. This might indicate that the accessor was created with the wrong mappings.'
としてcolumn1xが無い。とエラーを出します。

今までは同様の構文でSQL Serverでは出来ていたので行けると思っていたのですが、
postgresqlでは不可なのでしょうか
もちろん
  "SELECT column1, column1 AS column1x"
とすれば通るのですが

何か対策をご存知の方がいらっしゃいましたら
よろしくお願いします

[ □ Tree ] 返信 編集キー/

▲[ 99530 ] / ▼[ 99532 ]
■99531 / 1階層)  Re[1]: postgresのデータ取得時のマッピング
□投稿者/ Hongliang (1228回)-(2022/04/22(Fri) 12:28:34)
2022/04/22(Fri) 12:29:57 編集(投稿者)

基本的に、
MapAllProperties(全部のプロパティをマップする)→個別に不要なプロパティをDoNotMap()でマップから外す
MapNoProperties(プロパティをマップしない)→個別に必要なプロパティをMap().ToColumn()でマップに加える
といういずれかの手法をとるものではないでしょうか。</pre></pre>
[ 親 99530 / □ Tree ] 返信 編集キー/

▲[ 99531 ] / 返信無し
■99532 / 2階層)  Re[2]: postgresのデータ取得時のマッピング
□投稿者/ 粗品 (2回)-(2022/04/22(Fri) 13:02:41)
No99531 (Hongliang さん) に返信
> 2022/04/22(Fri) 12:29:57 編集(投稿者)
>
> 基本的に、
> MapAllProperties(全部のプロパティをマップする)→個別に不要なプロパティをDoNotMap()でマップから外す
> MapNoProperties(プロパティをマップしない)→個別に必要なプロパティをMap().ToColumn()でマップに加える
> といういずれかの手法をとるものではないでしょうか。</pre></pre>

MapNoProperties+Mapで期待通りの動作をしました。
ありがとうございました。
解決済み
[ 親 99530 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -