我正在使用自定义存储过程从数据库中检索数据:
tbTextBox.Text = db.getSettingValue("PropertyName").First().Value;
(db是一个全局DataClasses
对象,在FormLoad
事件中初始化)
这部分工作得很好,并且在循环中重复(定时器间隔 30 秒)
如果用户更改文本框的值,则会触发以下代码:
private void tbTextBox_TextChanged(object sender, EventArgs e)
{
if (tbTextBox.Text != db.getSettingValue("PropertyName").First().Value)
{
db.Settings.Where(n => n.Name == "PropertyName").First().Value = tbTextBox.Text;
db.SubmitChanges();
}
}
如果我之前创建对象submitChanges
并更改其值-结果相同。我已经调试过它,它不像它永远不会通过我的 IF 语句;)
为什么它不起作用?没有例外...如果我使用 SQL Server Management Studio 查询设置表,数据库中没有任何更改。
编辑1:
db.Settings.Where(n => n.Name == "AvailablePeriods").First().Value = tbPeriods.Text;
var a = db.Settings.Where(n => n.Name == "AvailablePeriods");
var b = a.First();
var c = b.Value;
b.Value = tbPeriods.Text;
var d = db.GetChangeSet();
db.SubmitChanges();
为了正确调试,我将代码分成更小的步骤。一切正常,但是... Changeset 不返回任何更新。对于下一步,我将尝试按照建议使用“附加”。
EDIT2: 添加PK解决了这个问题。现在一切都像魅力一样。
经验教训 - 我不应该太相信自己:)