나는 DB의 간단한 스키마를 구성하는 응용 프로그램이 있습니다데이터 바인딩
네트워크 (1) -> 윈폼으로 * 상점
내가 entityframework (기본 EntityObject 코드 생성기)를 사용 내가 사용하는 데이터 바인딩을 그리드에 이들 엔티티를 되새김질하는, 내가 가진 모든 데이터 바인딩이 잘 작동하고
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()
에 갈 수 oblem.
- 첫 번째 시나리오는
는 "+"를 NetworkBindingNavigator
에 (추가)과 오른쪽 이후에 "X"가 (삭제) 그리드에이 빈 줄에 마지막으로 내가 누르면 간단한 시나리오를 이동 ~ context.SaveChanges()
문제없이 성공합니다.
- 두 번째 시나리오
내가 눌러 "+"그리드에 빈 줄에 (삭제) ShopBindingNavigator
에 (추가) 및 다음 마우스 오른쪽 나중에 내가 "X"를 눌러 마지막으로 내가 _context.SaveChanges()
로 이동하십시오.
System.Data.UpdateException : 항목을 업데이트하는 중 오류가 발생했습니다. 자세한 내용은 내부 예외를 참조하십시오. ---> System.Data.SqlClient.SqlException : 열 '위치'테이블에 NULL 값을 삽입 할 수 없습니다, 'MyDB.dbo.Shops'테이블; 열이 null을 허용하지 않습니다
제 질문은 왜 첫 번째 시나리오에서 발생하지 않았습니까 (네트워크 테이블에서도 NULL을 허용하지 않습니다)?
감사합니다.
코드 또는 XML을 게시하는 경우 ** 텍스트 편집기에서 해당 행을 강조 표시하고 편집기 툴바에서 "코드"버튼 (101 010)을 클릭하여 멋지게 형식을 지정하고 구문을 강조 표시하십시오! –
ShopsBindingSource.datasource를 NetworkBindingSource로 설정하는 이유는 무엇입니까? 마지막 예외로 엔티티 세트로 "Shops"가 표시되지만 NetworkBindingSource는 Networks 엔터티 세트와 관련되어 있습니다 ... 뭔가 빠졌습니다. – jrista
데이터 바인딩에서 데이터 바인딩을 지원하는 객체 사이에 부모 - 자식 관계가 있고 예를 들어 그리드에 묶여있을 때 동기화하려는 경우 다음을 수행해야합니다. ParentBindingSource.datasource =; ChildBindingSource.datasource = ParentBindingSource; 마지막 예외는 "상점"이 정확하게 질문 한 것입니다. 왜 자녀 (상점) 테이블에 불만 (예외 발생)이 발생하고 동일한 실행에 대해서는 더 이상 ... –
Robocide