一意制約違反?

コメントを削除したりしてソースの整理をしてたら、型付きのDataSetにFillするところで「制約を有効にできませんでした。1 つ以上の行に、Null か、一意でないか、または外部キー制約違反の値が含まれています。」のエラーが再び現れるようになった。
MinOccurs="0"をDataSetの行に追加指定すれば回避できるって言ったの誰だア。


単一テーブルからの取得だから外部キー制約違反はありえない。実行時の取得結果はかならず重複のないようになるはずなので一意でないということはないはずだし。Null値も入れとらん。
同じSQL文の実行はSQL*Plusでもできるし、エラーメッセージの意味的に考えればDataSetに実行結果を入れようとする時点でDataSetに指定してあるプライマリキーの設定と違っている、という風に取れるのだが、そもそも型付DataSetにプリマリキーなど指定していない。
ていうか指定する気がないんだが。指定しないと動かないということもこれまでなかったのに。。。


<追記>
DataSetのEnforceConstraintプロパティをFalseにしたら発生は回避できた。(DataSet.EnforceConstraints プロパティ
しかし、根本的な原因の認識はできてないのはまずいなあ。
やっぱりDataSetの設定で制約が行われていたんだろうが、XMLを見ただけではそれっぽいのがどこにもなかった。
自動生成されるVBファイルは膨大すぎて全部読む気になれないが、どこかにそれが書いてあるんだろうか。