0

새로운 WPF 응용 프로그램, MVVM 및 ADO 엔터티 데이터 모델에서 생성 된 POCO 부분 클래스 사용 방법 ...?

다음은 시나리오의 ... 나는 전에이 요청했습니다,하지만 난 여전히 실제로 도움이 필요 :

내가 새로운 WPF 응용 프로그램을 시작하고, MVVM을 사용하고자하고있다. 우리의 DBA는 CRUD 연산을 수행 할 테이블이있는 데이터베이스를 생성했기 때문에 Database First 접근법 (ADO.NET Entity Data Model 기능)을 사용하고 나를 위해 만든 .edmx, .tt, dbcontext 부분 클래스 등을 갖게되었습니다. .

이제 MVVM 접근 방식과 관련하여 여기서 어떻게해야합니까? 프레임 워크를 사용하고 싶지 않고 외부 도구를 사용하기 전에 MVVM의 기본 기능을 먼저 사용하려고합니다. 어디서나 시작할 수있는 자습서가 있습니까?

다시 한 번 말씀해 주셔서 죄송합니다. 그러나 실제로 도움을 얻을 수 없으며 DBA가 작성한 자료를 사용해야합니다.

+0

나는 여기에서 배우고있다 : http://www.codeproject.com/Articles/29054/WPF-Data-Binding-Part-1 – Naresh

+0

당신의 제안에 감사드립니다. 그러나 이것은 기존 데이터베이스에서 생성 된 클래스를 사용하는 것에 대해서는 아무 것도 표시하지 않습니다. 나는 시간이 조금 부족하다. – user2317150

답변

0

귀하의 질문은 매우 광범위하지만, ViewModel이 데이터를 가져 와서 EF 클래스를 통해 업데이트를 제출하는 방법을 결정함으로써 시작할 수 있습니다.

EF 유형을 직접보기에 바인딩 할 수 있지만 더 나은 방법은 ViewModel을 가능한 많이 ORM 모델 유형과 분리하는 것입니다. EF 유형을 제외하고 동작 (ICommand) 및 데이터 (ViewModel 소품 또는 하위 ViewModel 소품 또는 ObservableObjects) 측면에서보기의 요구를 모델링합니다.

그런 다음 데이터 모델과 직접 상호 작용하고 ViewModel을 데이터 모델로 변환하거나 그 반대로 변환 할 ViewModel에서 주입하거나 인스턴스화 할 수있는 서비스 유형을 작성하십시오. LINQ/Lambdas를 사용하여 수동으로 작업하거나 AutoMapper와 같은 것을 사용하여 ViewModel과 데이터 모델 (EF 유형) 간의 관계를 정의 할 수 있습니다. 이는 데이터 스키마와 ViewModel 사이의 명확한 경계를 유지하며, 이런 식으로 앱에 파급 효과가 적은 데이터 모델의 변경 사항을 발견 할 것입니다.

내가 '서비스 유형'이라고 부르는 중간 계층은 저장소가 crud 작업보다 비즈니스 운영에 더 중점을두고 있지만 내부적으로 모든 저장소 또는 EF 호출을 만드는 것보다 높은 수준의 인터페이스를 제공하는 유형 일 수 있습니다 뷰 모델을 대신하여

프레임 워크를 사용하지 않으려면 MVVM Light 코어 라이브러리를 다운로드하고 포함 된 항목을 확인해야합니다. 그것의 꽤 의지와 MVVM을 지원하는 기본 견과류와 볼트를 제공합니다. 원하는 경우 롤업을 선택할 수 있지만 그만한 가치는 없을 수도 있습니다.

EDIT : 시간이 부족하다고 말씀 하셨기 때문에 ... 권장하지는 않지만보다 편리하지만 덜 강력한 솔루션은 ViewModels의 속성으로 뷰를 직접 EF 유형에 바인딩하는 것일 수 있습니다 . 당신의 그런 ViewModelBase {

public EditCustomerViewModel(){ 
    _currentCustomerCommand = new RelayCommand(SaveCustomer); 
} 
private Customer _currentCustomer; 

private void SaveCustomer(){ 
    using(var ctx = new EfDataContext()){ 
     // Save operation here 
    } 
} 
public Customer CurrentCustomer{ 
    get { return _currentCustomer; } 
    set { Set(()=>CurrentCustomer, ref _currentCustomer, value); } 
} 

public ICommand SaveCustomerCommand{ get { return _saveCustomerCommand;}} 

}

:

는 ViewModelBase() 메소드 당신에게

공용 클래스 EditCustomerViewModel를 특별한 설정을 제공 MVVM 빛 //에 포함 된 사용 // 컨트롤을 바인딩 할 수 있는지, 무엇이든지 CurrentCustomer 속성에있을 수 있습니다. EF 저장은 MVVM Light RelayCommand 구현으로 표시된 명령을 통해 수행 할 수 있습니다.따라서 빠르고 더러운 접근 방식이 효과적 일 수 있지만 뷰의 요구에 부응하기 위해 명시 적으로 제작 된 유형으로 데이터를 표시함으로써 ViewModels에서 데이터 모델을 추상화하려고 할 수 있다면 가능합니다.