У меня есть приложение winforms с группой текстовых полей для объекта, давайте назовем объект Product
Одно из моих текстовых полей скрыто, потому что оно содержит внешний ключ к другому объекту базы данных Business Unit
. Я заполняю скрытое текстовое поле с помощью поля со списком, которое ищет значения в родительской таблице. Когда выбор изменяется, меняется и значение в скрытом текстовом поле.
private void businessUnitComboBox_SelectionChangeCommitted(object sender, EventArgs e)
{
this.businessUnitIdTextBox.Text = this.businessUnitComboBox.SelectedValue.ToString();
this.businessUnitComboBox.Focus();
}
Проблема в том, что после вызова SaveChanges в моем контексте это изменение в скрытом текстовом поле не сохраняется. Как ни странно, если я обновлю любое из других текстовых полей Product
, они сохранятся просто отлично.
Текстовые поля были добавлены в проект с помощью стандартного перетаскивания из графического интерфейса Visual Studio, а источник привязки был создан при автоматическом добавлении.
Мои сущности реализуют INotifyPropertyChanged, используя fody-propertychanged.
Я изо всех сил пытаюсь найти проблему здесь. Создание новых записей работает нормально, но обновление этого значения внешнего ключа никогда не происходит.
Это потому, что это свойство навигации и его нужно обрабатывать по-другому, или есть другие возможности, почему изменения не сохраняются? Любая помощь горячо приветствуется.
Product
— это POCO с включенной магией fody-INotifyPropertyChanged. Но я использую Presenter как посредника между формой и контекстом. Теперь я передаюBusinessUnitBindingSource.Current
в презентатор и устанавливаю свойство навигации вместо Id. - person wesmantooth   schedule 25.08.2015