Привязка данных с ошибкой entityframework - PullRequest
3 голосов
/ 04 июля 2010

У меня есть приложение, которое состоит из простой схемы БД:

Сети 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)?

Спасибо.

1 Ответ

0 голосов
/ 03 августа 2010

Невозможно вставить значение NULL в столбец «Местоположение», таблица «MyDB.dbo.Shops»;столбец не допускает пустых значений означает, что ваша таблица не принимает пустых значений.

, поэтому вы можете проверить в таблице, является ли столбец обнуляемым или нет.Если это не обнуляемо, тогда, когда вы говорите, что это удалось в вашем первом сценарии, посмотрите на свою БД.Каким-то образом вы должны ввести некоторые значения по умолчанию в таблицы.

...