2010-07-04 4 views
3

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

сети 1 -> * Магазины

я использую entityframework (По умолчанию EntityObject генератор кода) с WinForms, я использовать DataBinding к сетке жвачку эти сущности, я есть:

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; 

все привязки работает хорошо и синхронизированы, я могу жвачку на обеих сетках по форме и перейти к _context.SaveChanges(), не пр oblem.

  • Первый сценарий

простой сценарий Нажатие кнопки «+» (добавить) на NetworkBindingNavigator и сразу после этого «X» (удалить) на этой пустой строке на сетке и, наконец, я иду до context.SaveChanges() Успешное решение без проблем.

  • Второй сценарий

, когда я нажимаю «+» (добавить) на ShopBindingNavigator, а затем сразу после этого я нажимаю «X» (удалить) на этой пустой строке на сетке и, наконец, я go to _context.SaveChanges() i get:

System.Data.UpdateException: Произошла ошибка при обновлении записей. Подробнее см. Внутреннее исключение. ---> System.Data.SqlClient.SqlException: Невозможно вставить значение NULL в столбец «Местоположение», таблицу «MyDB.dbo.Shops»; столбец не допускает обнуляет

мой вопрос, почему Didnt это произойдет в первом сценарии, а также (я не позволяют NULL в таблице сети, а)?

Спасибо.

+0

Если вы отправляете код или XML, ** пожалуйста ** выделите эти строки в текстовом редакторе и нажмите кнопку «код» (101 010) на панели инструментов редактора, чтобы красиво отформатировать и выделить синтаксис! –

+0

Почему вы устанавливаете ShopsBindingSource.datasource в NetworkBindingSource? Ваше окончательное исключение отметило «Магазины» как набор объектов ... однако NetworkBindingSource связан с набором сущностей сетей ... чего-то не хватает. – jrista

+0

в привязке данных, когда у вас есть родительско-дочерняя реальность между объектами, поддерживающими привязку данных, и вы хотите синхронизировать их между собой при ограничении на сетку, например: ParentBindingSource.datasource = ; ChildBindingSource.datasource = ParentBindingSource; и, конечно же, окончательное исключение отмечает «Магазины» именно в этом вопросе, почему он жалуется (исключает исключение) на таблицу для детей (магазинов), а не за то же самое за одно и то же исполнение ... – Robocide

ответ

-1

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

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

Смежные вопросы