【发布时间】:2013-07-31 13:48:39
【问题描述】:
我有一个需要更新记录的数据库表。添加新记录的代码可以正常工作,但是当我去更新现有记录时,并非所有字段都使用表单中的新信息进行更新。
代码如下:
private void updateExistingDSN()
{
//Update existing DSN
try
{
using (PathFinderDataContext pfdcContext = new PathFinderDataContext())
{
DSN oldDSN = pfdcContext.DSNs.Single(dsn => dsn.DSNID == int.Parse(Request["dsn"]));
oldDSN.Auth_AuthorizationID = int.Parse(Request["auth"]);
oldDSN.ServiceProvided_ServiceProvidedID = int.Parse(Request["sp"]);
oldDSN.EvidenceBPMU = short.Parse(ddlEvidenceBPMU.SelectedValue);
oldDSN.LocationOfVisit = txtLocationOfVisit.Text;
oldDSN.ChildrenPresent = txtNamesOfChildrenPresent.Text;
oldDSN.ParentPresent = txtNamesOfParentsPresent.Text;
oldDSN.OthersPresent = txtNamesOfOthersPresent.Text;
oldDSN.DescribeGoals = txtDescribeGoals.Text;
oldDSN.DescribeStrategy = txtDescribeStrategies.Text;
oldDSN.DescibeParentingSkills = txtDescribeParentingSkills.Text;
oldDSN.DescribeSafetyConcerns = txtDescribeSafetyConcerns.Text;
oldDSN.OtherInfo = txtOtherInfo.Text;
oldDSN.Schedule_Monday = float.Parse(txtMonday.Text);
oldDSN.Schedule_Tuesday = float.Parse(txtTuesday.Text);
oldDSN.Schedule_Wednesday = float.Parse(txtWednesday.Text);
oldDSN.Schedule_Thursday = float.Parse(txtThursday.Text);
oldDSN.Schedule_Friday = float.Parse(txtFriday.Text);
oldDSN.Schedule_Saturday = float.Parse(txtSaturday.Text);
oldDSN.Schedule_Sunday = float.Parse(txtSunday.Text);
oldDSN.DateSaved = DateTime.Now;
oldDSN.SavedBy_UserID = currentEmployee.EmployeeID;
pfdcContext.SubmitChanges();
}
Response.Redirect("~/pages/updateTimesheet.aspx?action=update&ProvidedServiceId=" + int.Parse(Request["sp"]));
}
catch (Exception ex)
{
errorMessage.Text = "<b>Error updating an existing DSN record!</b><br /><br />" + ex.ToString();
warnings.Visible = true;
}
}
唯一更新的字段是 oldDSN.DateSaved,其他一切都保持不变。没有错误或异常抛出或任何东西。像它一样工作,但没有。此外,当我硬编码要更新的值时,记录更新得很好。有什么想法吗?
【问题讨论】:
-
调试你的代码并检查是否有你想要更新的值。
-
如果您使用的是Visual Studio,请尝试在方法顶部设置断点并右键单击-> watch oldDSN。检查所有值是否正确更新。我无法无礼地这么说:因为唯一要更新的值是您的代码未生成的值(DateTime.Now),我觉得很可能是您的代码生成了不正确的值。
-
我现在正在单步执行代码。只需一分钟,我会更新并让您知道发生了什么。
-
好的,发生的事情是:代码看起来工作得很好,但是当它从 HTML 元素(文本框等)中获取文本时,它不会获取新输入的信息,它抓取 page_load 运行时放入文本框中的内容,当然,这是旧值,因此看起来好像没有更新它们......我很困惑为什么它不会抓取不过,只是输入了它们。
标签: c# asp.net sql-server linq-to-sql