これは、.NET4.0およびSQLServer2008R2の切断および接続されたモデルについて学習するための小さなプロジェクトとして行っています。
私は3つのテーブルを持っています:
Companies (PK CompanyID)
Addresses (PK AddressID, FK CompanyID)
ContactPersons (PK ContactPersonID, FK CompanyID)
CompanyIDは、ユーザーによって手動で割り当てられます。他のIDは自動生成されます。企業はContactPersonと1対多の関係にあります。カスケードに変更を設定しました。
会社のすべてのレコードをDataGridViewに表示し、行をクリックすると、ContactPersonsの対応するレコードが2番目のDataGridViewに表示されます。
新しいレコードの更新と挿入は正常に実装されましたが、行を削除して変更をデータベースに保存しようとしても完全に失敗しました。
私は型付きデータセットを使用しています。
これを使用する場合:
DataRow[] contactPersonRows = m_SoldaCompaniesFileDataSet.ContactPersons.Select("ContactPersonID = "
+ this.m_CurrentContactPerson.ContactPersonID);
m_SoldaCompaniesFileDataSet.ContactPersons.Rows.Remove(contactPersonRows[0]);
レコードはDataGridViewに正しく表示されますが、後でデータベースに保存されることはありません。
これを使用する場合:
DataRow row = m_SoldaCompaniesFileDataSet.ContactPersons.Rows.Find(this.m_CurrentContactPerson.ContactPersonID);
row.Delete();
レコードは設定されていますが、DataGridViewを更新しようとすると、DeletedRowInaccessibleExceptionという例外が発生します。自動生成されたdataset.designファイルに例外がポップアップ表示されます。
私は昨日からこの時点でかなり立ち往生しています。自分の問題にリモートで似ているものはどこにも見つかりません。そして、私は実際に何が起こっているのか理解できません。