如果有人能向我解释这有什么问题,我会非常感激,因为它没有抛出异常所以我不明白为什么它没有更新记录。
很抱歉我应该说我正在尝试更新数据库中的现有记录,“CompName”被用作主键,这不是我的数据库设计或应用程序,或者我会使用int作为id和编码的东西差别很大。
using (CompanyAndContactDataContext dc = new CompanyAndContactDataContext())
{
try {
Company c = (from datavalue in dc.Companies
where datavalue.CompanyName == CompName
select datavalue).First();
c.CompanyName = txtEditCompanyName.Text;
c.CompanyEmailAddress = txtEditCompanyEmail.Text;
c.CompanyTelephoneNumber = txtEditCompanyTelephone.Text;
c.CompanyFaxNumber = txtEditCompanyFax.Text;
c.CompanyAddress1 = txtEditAddress1.Text;
c.CompanyAddress2 = txtEditAddress2.Text;
c.CompanyAddress3 = txtEditAddress3.Text;
c.CompanyAddress4 = txtEditAddress4.Text;
c.PostCode = txtEditPostcode.Text;
dc.SubmitChanges();
} catch (Exception exep) {
}
}
答案 0 :(得分:0)
首先猜测,它可能是抛出异常的First()调用。您可以将其设为FirstOrDefault,或尝试将Id传递给您的方法(让他们从下拉列表中选择一个值或自动完成,然后获取他们所选内容的ID)。这样,您可以确定此代码何时命中,您可以更新条目。 如果您将Id传递给方法,您甚至可以使用“Single”或“SingleOrDefault”
编辑:
假设您输入“MyCompany”作为CompName,这在Database表中不存在。如果你调用First()它会抛出一个异常。如果你调用FirstOrDefault(),它将返回“c”为null。
如果您使用点调用“c.CompanyName”或其他任何内容,则会返回异常。
在调用任何点方法之前,您需要检查c是否为null。