DataSetのMergeを使ってみました。 [.NET]
普段はデータクラスを作成してDataTableから自前でバインドしてるんですが、
DataSetを使った非接続型アクセスについて何も知らなかったので勉強してみました。
で調べてみたら、DataSet内容のマージとか色々出来るじゃないですか。
これは最新データへの置き換えとかに便利そうなのでちょっと試してみました。
まずはマージをして見ます。
CType(hoge.DataSource, DataSet).Merge(dataSet)
なんかデータが倍に増えてるんですが。。。
Unique Keyが無視されてます。
ありましたDataTableのPrimaryKeyプロパティが空みたいです。
スキーマ情報はDataTableにセットしてくれないのでしょうか?
しょうがないのでPrimaryKeyは自分でセットしました。
Dim dataColumn(1) As DataColumn
dataColumn(0) = dataSet.Tables(hogeTable).Columns(0)
dataColumn(1) = dataSet.Tables(hogeTable).Columns(1)
dataSet.Tables(hogeTable).PrimaryKey = dataColumn
こんどは一意制約違反が発生しました。
重複クエリでデータを調べてみましたが、重複は無いようです。。。
あれこれやって2時間経過〜
あ〜っ 小文字のキーがあるじゃんかよ。しかも一個だけ。
なんだよそれ orz
はいはい。大文字と小文字を区別すれば良い訳ですね。
dataSet.Tables(hogeTable).CaseSensitive = True
そんな訳で無駄な時間を使いましたがマージはうまく行きました。
残念なのがODP.NETだとTableAdapterって奴が使用出来ないみたいです。
(普段ODP.NETを使っているので)
コメント 0