【发布时间】:2015-08-24 21:07:16
【问题描述】:
我有一个 winforms 应用程序,其中包含一组用于实体的文本框,我们将实体称为 Product
我的一个文本框被隐藏了,因为它拥有另一个数据库对象Business Unit 的外键。我使用在父表上查找值的组合框填充隐藏的文本框。 When the selection changes, so does the value in the hidden textbox.
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。
我很难在这里找到问题。创建新记录工作正常,但更新一个外键值永远不会。
这是因为它是一个导航属性,需要以不同的方式处理,还是有其他可能性来解释为什么不保留更改?非常感谢任何帮助。
【问题讨论】:
-
我们可以看看你的产品模型类吗?
-
我能够解决这个问题,直接分配给外键对象而不是外键 ID。
Product类是 POCO,包含 fody-INotifyPropertyChanged 魔法。但我确实使用 Presenter 作为形式和上下文之间的中介。我现在将BusinessUnitBindingSource.Current传递给演示者并设置导航属性而不是 Id。
标签: winforms entity-framework bindingsource fody-propertychanged