У меня есть приложение WinForms с группой текстовых полей для объекта, давайте называть Entity Product
DataBound обновления TextBox не сохраняются в БД
Один из моих текстовых скрыт, потому что он имеет внешний ключ в другую базу данных объект 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.
Я изо всех сил пытаюсь найти проблему здесь. Создание новых записей отлично работает, но обновление этого значения для внешнего ключа никогда не выполняется.
Это потому, что это свойство навигации и нужно обрабатывать по-разному, или есть другие возможности, почему изменения не сохраняются? Буду признателен за любую оказанную помощь.
Можем ли мы увидеть ваш класс модели продукта? – samiz
Я смог решить эту проблему, назначая непосредственно внешнему ключевому объекту вместо идентификатора внешнего ключа. Класс 'Product' - POCO с включенной магией fody-INotifyPropertyChanged. Но я использую Presenter как посредник между формой и контекстом. Теперь я передаю «BusinessUnitBindingSource.Current» в презентаторе и устанавливаю свойство навигации вместо Id. – wesmantooth