.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に表示されます。
次に、ContactPersonsテーブルから次の行を削除します。
DataRow row = m_SoldaCompaniesFileDataSet.ContactPersons.Rows.Find(this.m_CurrentContactPerson.ContactPersonID);
row.Delete();
そして、DataGridViewにデータを取り込むためのデータソースを作成するためにテーブルをクエリしようとすると、次のようになります。
var dataRows_ContactPersons = from row in this.m_SoldaCompaniesFileDataSet.ContactPersons
where row.CompanyID == companyID
select new
{
ContactPersonID = row.ContactPersonID,
CompanyID = row.CompanyID,
NameFirst = row.NameFirst,
NameLast = row.NameLast,
PhoneNumber = row.PhoneNumber,
EmailAddress = row.EmailAddress,
Position = row.Position
};
DeletedRowInaccessibleExceptionを受け取りました。私がここで間違っていることについて何か考えはありますか?
実際には、例外は、型指定されたDataSetの自動生成されたコードから発生します。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")]
public int CompanyID {
get {
try {
return ((int)(this[this.tableContactPersons.CompanyIDColumn])); // <<<--- DeletedRowInaccessibleException
}
catch (global::System.InvalidCastException e) {
throw new global::System.Data.StrongTypingException("The value for column \'CompanyID\' in table \'ContactPersons\' is DBNull.", e);
}
}