gpt4 book ai didi

.net - 如何从类型化数据集中删除一行并将其保存到数据库中?

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:13 25 4
gpt4 key购买 nike

我将此作为一个小项目来了解 .NET 4.0 和 SQL Server 2008 R2 中的断开连接和连接模型。

我有三个表:

Companies (PK CompanyID) 
Addresses (PK AddressID, FK CompanyID)
ContactPersons (PK ContactPersonID, FK CompanyID)

CompanyID 由用户手动分配。其他 ID 是自动生成的。 Companies 与 ContactPerson 是一对多的关系。我已将任何更改设置为级联。

我在 DataGridView 中显示 Companies 中的所有记录,当单击一行时,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();

记录已设置,但我收到异常:DeletedRowInaccessibleException,当我尝试刷新 DataGridView 时。在自动生成的 dataset.design 文件中弹出异常。

从昨天开始,我就一直停留在这一点上。我在任何地方都找不到任何与我的问题相似的东西。我无法真正理解发生了什么。

最佳答案

我一直在像这样进行 Linq 到数据集查询:

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
};

我花了很长时间才弄清楚我需要通过执行以下检查从 Linq 查询中排除已删除的行:

row.RowState != DataRowState.Deleted

所以上面的代码是固定的:

var dataRows_ContactPersons = from row in this.m_SoldaCompaniesFileDataSet.ContactPersons
where row.RowState != DataRowState.Deleted && 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 :) 请注意,必须在代码中的任何地方执行检查行是否处于已删除状态。

关于.net - 如何从类型化数据集中删除一行并将其保存到数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com