2010-06-17 4 views
1

MVVM 및 EF 사용 ... ObservableCollection을 사용하여 View Model에 바인딩하는 DataGrid가 있습니다. 뷰 모델에는 단순히 데이터 컨텍스트의 SaveChanges 명령을 호출하는 저장 명령이 있습니다. 그러나 사용자가 DataGrid에 새 행을 추가하면 새 엔터티가 분리됩니다. 생성 될 때 자동으로 첨부 할 수있는 쉬운 방법이 있습니까? 현재, 내보기 모델의 저장 명령에서이 작업을 수행하는 데 그리고 투박한 비트 같다 : 새로운 추가에 대한 귀하의 ObservableCollection에를 "관찰"과 연결하는 솔루션이 있어야한다이 경우DataGrid에서 EF로 행을 연결하는 가장 좋은 방법

 foreach (var dataItem in _DataList) // where _DataList is the ObservableCollection 
     { 
      if (dataItem.EntityState == EntityState.Detached) 
      { 
       _DataContext.AddToTestTables(dataItem); 
      } 
     } 
     _DataContext.SaveChanges(); 
+0

ViewModel 대신 모델에이 코드가 저장되지 않는 이유는 무엇입니까? –

답변

0

을 새 항목은 컬렉션에 추가되면

Matt Casto 맞아요. 데이터 액세스 레이어에 사용하는 패턴에 따라 Model 또는 ModelRepository에있는 ViewModel에 Save 메서드가 없어야합니다.

+0

"관찰하다"는 것이 무슨 뜻인지 확실치 않습니까? – AKoran

+0

CollectionChanged 이벤트에 등록하십시오. 컬렉션의 항목 수가 변경 될 때마다 발생합니다. – decyclone

관련 문제