저는 ORMs를 처음 접했고 현재 Telerik OpenAccess ORM을 시도하고 있습니다. 그러나 질문은 실제로 해당 ORM에만 한정되지는 않습니다. 그리고 나는 아직 ORM에 대해 아직 완전히 정착하지 못했습니다.ORM, DataGridView에 대한 데이터 바인딩 : 데이터베이스에 저장되지 않은 새 행을 삽입/삭제했습니다.
내가 얻으려고하는 것은 DataGridView를 바인딩하여 고객 테이블의 모든 고객을 보여주는 Customers 개체 컬렉션을 표시하는 것입니다.
BindingSource에 바인딩하고 BindingSource를 DataGridView 컨트롤에 바인딩했습니다.
기존 항목을 성공적으로 수정할 수 있습니다 (OpenAccess ORM의 SaveChanges 메서드 사용). 저장하면 내용이 예상대로 데이터베이스에 다시 저장됩니다.
그러나 DataGridView에서 행을 삭제하거나 새 행을 추가하면 오류 메시지 나 예외없이 데이터베이스에 저장되지 않습니다.
이상적으로, 내가 좋아하는 바인딩 외모를 수행 ... 나는 전형적인 DataTable을 사용하여이 작업을 수행 할 수있을 것입니다 단지처럼 ORM 가능한 모든 CRUD 작업을 수행 할 수 있도록
코드를 싶습니다 이 :
List<Customer> ukCustomers = (from c in diagrams.Customer
where c.Country == "UK"
select c).ToList();
customersBindingSource.DataSource = ukCustomers;
customersBindingSource.AllowNew = true;
나의 현재 추측은 DataGridView에에 사용자가 추가 된 새로운 행이 목록 만 "자유로운 서"고객 인스턴스의 일부가 아닌 것입니다? 나는 그들이 목록에 자동으로 추가 될 것이라고 생각했을 것이다. 삭제 된 행에 대해 동일한 작업이 수행됩니다. 목록에서 자동으로 제거되고 ORM의 SaveChanges 메서드가 해당 작업을 선택할 수 있습니까?
바인딩 이외의 다른 작업을 수행해야합니까? 누구나이 작업을 성공적으로 수행 했습니까? 일반적으로 WinForms와의 데이터 바인딩 경험은 ORM (Telerik이 아닌)을 통해 얼마나 성공적 이었습니까?
감사합니다.
이 작동하지 않습니다. 이러한 경우 ObservableCollection이 지속적으로 DataError Exception을 발생시킵니다. – sentenza