我这样做是作为一个小项目来了解 .NET 4.0 和 SQL Server 2008 R2 中的断开连接和连接模型。
我有三张桌子:
Companies (PK CompanyID)
Addresses (PK AddressID, FK CompanyID)
ContactPersons (PK ContactPersonID, FK CompanyID)
CompanyID 由用户手动分配。其他 ID 是自动生成的。公司与 ContactPerson 具有一对多的关系。我已将任何更改设置为级联。
我在 DataGridView 中显示公司中的所有记录,当单击一行时,ContactPersons 中的相应记录显示在第二个 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 文件中弹出异常。
从昨天开始,我几乎被困在这一点上。我在任何地方都找不到任何与我的问题相似的地方。我无法理解到底发生了什么。