我有一个实体的一组文本框WinForms应用程序,让我们称之为实体Product
数据绑定文本框更新不会坚持到DB
我的一个文本框被隐藏,因为它拥有一个外键到另一个数据库对象Business Unit
。我使用查找父表上的值的组合框填充隐藏的文本框。当选择更改时,隐藏文本框中的值也会更改。
private void businessUnitComboBox_SelectionChangeCommitted(object sender, EventArgs e)
{
this.businessUnitIdTextBox.Text = this.businessUnitComboBox.SelectedValue.ToString();
this.businessUnitComboBox.Focus();
}
问题是在我的上下文中调用SaveChanges后,隐藏文本框上的此更改不会持久。奇怪的是,如果我更新任何其他Product
文本框,它们可以保存得很好。
通过从Visual Studio的GUI中进行标准拖放操作,将文本框添加到项目中,并在自动添加时创建绑定源。
我的实体使用fody-propertychanged实现INotifyPropertyChanged。
我很努力地在这里找到问题。创建新的记录工作正常,但更新一个外键值从来没有。
这是因为它是一个导航属性,需要以不同的方式处理,或者还有其他可能性,为什么这些更改没有被保留?任何帮助深表感谢。
我们可以看到您的产品模型类吗? – samiz
我能够解决直接分配给外键对象而不是外键ID的问题。 “Product”类是包含fody-INotifyPropertyChanged魔术的POCO。但我确实使用Presenter作为表单和上下文之间的中介。我现在将'BusinessUnitBindingSource.Current'传递给演示者并设置导航属性而不是Id。 – wesmantooth