Visual Studio2008の.NET3.5のC#でプログラムを作成しています。2つのDataTable、AとBを持つDataSetがあります。テーブルAにはDataColumn Y、テーブルBには列Z、さらに両方のテーブルにさらに列があります。列YとZの両方が、一意の自動インクリメント列に設定されています。
YとZも2つの間でユニークにしたいと思います。のように、テーブルAのY列に3が含まれる行が既にあり、テーブルBに新しい行を作成していて、その新しい行のZ列に3を配置したい場合は、代わりに3をスキップします。そして4を入れます。
私はそれがうまくいくように見える何かを試しました:
myDataSet.Tables["A"].Constraints.Add(new UniqueConstraint(new DataColumn[] { myDataSet.Tables["A"].Columns["Y"], myDataSet.Tables["B"].Columns["Z"] }));
myDataSet.Tables["B"].Constraints.Add(new UniqueConstraint(new DataColumn[] { myDataSet.Tables["A"].Columns["Y"], myDataSet.Tables["B"].Columns["Z"] }));
しかし、アプリケーションを実行してそのコードに到達すると、最初の行に次のエラーが表示されます。
System.Data.InvalidConstraintExceptionは未処理でした
Message="異なるテーブルに属する列からキーを作成できません。"
Source = "System.Data"
両方のテーブルに同じUniqueConstraintを追加する理由は、それをアクティブにするために他にどこに配置するかがよくわからないためです。Y列とZ列を除いて、テーブルは互いにほとんど関係がないため、テーブルを1つにまとめたくありません。
誰かがこれを行う方法を知っていますか?MSDNのドキュメントには複数のテーブルについては記載されておらず、他の誰もこれを試したことがないようです。
私は問題を終えました。私のプログラムでは、処理しているテーブルを追跡するために、すでにいくつかの外部キーチェックを使用していました。これからは別の方法で進めるほうが簡単かもしれないと思っていましたが、現在の手法を維持することにしました(プログラムの他のコンポーネントに詳細なID情報を入れるなど、必要に応じて少し拡張します)。うまくいくことがわかった。
私がやったことは、私がここに投稿した私の質問を本当に解決しません。ここで回答を得ることを望んでいるGoogle社員に謝罪します。