У меня есть приложение, которое состоит из простой схемы БД:
Сети 1 -> * Магазины
я использую entityframework (генератор кода EntityObject по умолчанию) с winforms,
я использую DataBinding к сетке, чтобы CUD эти объекты,
у меня есть:
DbObjectModelContainer _context = new DbObjectModelContainer();
_context.ContextOptions.LazyLoadingEnabled = true;
NetworkBindingSource.DataSource = _context.Networks;
ShopsBindingSource.DataSource = NetworkBindingSource;
ShopsBindingSource.DataMember = "Shops";
NetworkBindingNavigator.BindingSource = NetworkBindingSource;
ShopBindingNavigator.BindingSource = ShopsBindingSource;
NetworkDataGridView.DataSource = NetworkBindingSource;
ShopDataGridView.DataSource = ShopsBindingSource;
все привязки данных работают хорошо и синхронизированы, я могу использовать CUD для обеих сеток в форме и перейти на _context.SaveChanges()
без проблем.
простой сценарий Нажатия «+» (добавить) на NetworkBindingNavigator
и сразу после «X» (удаление) на этой пустой строке в сетке, и, наконец, я иду к context.SaveChanges()
успешно без проблем.
когда я нажимаю «+» (добавить) на ShopBindingNavigator
, а затем сразу после этого я нажимаю «X» (удалить) на этой пустой строке сетки и, наконец, я иду к _context.SaveChanges()
, я получаю:
System.Data.UpdateException: при обновлении записей произошла ошибка. Смотрите внутреннее исключение для деталей. ---> System.Data.SqlClient.SqlException: Невозможно вставить значение NULL в столбец «Местоположение», таблица «MyDB.dbo.Shops»; столбец не допускает пустых значений
У меня вопрос, почему это не произошло и в первом сценарии (я также не разрешаю NULL в таблице Networks)?
Спасибо.