0

2 つのテーブルの単純な結合を行い、いくつかの列を返す SQL Server ビューがあります。Management Studio でこのビューを実行しても問題は発生せず、期待されるデータ (2 行) が返されます。

このビューを Visual Studio の TableAdapter のデータ ソースとして使用すると、「制約を有効にできませんでした。1 つまたは複数の行に、null 以外、一意、または外部キーの制約に違反する値が含まれています。」という ConstraintException が発生します。

tableAdapter.Fill( dataSet.vwMyView ) を呼び出す前に EnforceConstraints = false を使用したので、この問題の原因に関する詳細情報を得ることができました。列「MyColumn」には一意でなければならないという制約がありますが、値 4 (ID) は既に存在するというメッセージが表示されました (はい、この ID を持つ行が 2 つあります)。

これは、ビューで結合する 2 つのテーブルの 1 つで一意 (および主キー) であることを理解していますが、DataGridView でエラーが発生する理由がわかりません。

  • データだけを表示したい
  • Management Studio のまったく同じビューで同じ選択を実行しても、エラーは発生しません。

何故ですか?ID値を表示する必要がありますが、実際にそのエラーが発生する理由もわかりません。

前もって感謝します &

よろしくお願いします

ゴルグセネッガー

4

1 に答える 1

0

値は基になるテーブルの主キーであるため、この制約が設定されているように見えます。

おそらく次のいずれかを行うことをお勧めします。

1) この情報を表示するだけの場合は、制約を再度有効にする必要はありません。これは逃走のように聞こえるかもしれませんが、実際には、情報が必要でなければ、それを持っている意味はありません。

2) さらに良いことに、データセット デザイナーで「誤って」生成されたキーを削除するだけです。つまり、最初からテーブルの制約を無効にする必要はありません。

お役に立てれば。

J ダブス。

于 2010-09-15T15:03:57.577 に答える