2014-10-22 2 views
0

WPF/MVVM을 사용하여 엔티티 프레임 워크를 탐색하고 있는데 이것은 기본적으로 얻을 수있는 기본 작업이지만 작동시키지는 못합니다. OUTAGE_DETAILS와 OUTAGE_TYPE_LOOKUP이라는 두 엔티티가 포함 된 edmx 다이어그램이 있습니다. 간단히 엔티티 중 하나에 대해 linq을 수행하고 DataGrid에 바인딩 할 수있는 ObservableCollection을 반환하기 만하면됩니다. 결국 DataGrid에서 레코드를 추가/수정합니다. 내가 잘못하고있는 것은 무엇이며 편집 및 레코드 추가의 최종 결과를 위해 취할 수있는 최선의 방법입니까?엔티티 프레임 워크와 ObservableCollections

private Data_Entities oeContenxt = new Data_Entities(); 

private ObservableCollection<OUTAGE_DETAILS> _outagecollection; 
public ObservableCollection<OUTAGE_DETAILS> OutageCollection 
{ 
    get { return _outagecollection; } 
    set 
    { 
     if (value == _outagecollection) return; 
     _outagecollection = value; 
    } 
} 

private void ShowOutages() 
{ 
    var query = (from o in oeContenxt.OUTAGE_DETAILS 
       select o.OUTAGE_SEQ_ID).ToList(); 

    OutageCollection = new ObservableCollection<OUTAGE_DETAILS>(query.ToList()); // <- Error Here 
} 

// constructor 
public MainWindowViewModel() 
{ 
    this.ShowOutages(); 
} 

과 오류는 다음과 같습니다 :

이 내가 가진 무엇 The best overloaded method match for 'System.Collections.ObjectModel.ObservableCollection<WpfApplication1.OUTAGE_DETAILS>.ObservableCollection(System.Collections.Generic.IEnumerable<WpfApplication1.OUTAGE_DETAILS>)' has some invalid arguments

I는이 시나리오에 대한 일반적인 오류입니다하지만 난 그것에 대한 해결책을 발견하지 않았습니다 믿습니다. 또한 내 컬렉션의 선언에 엔티티 이름 OUTAGE_DETAILS을 올바르게 사용하고 있습니까?

정말 기본적인 질문에 대해 유감이지만이 자료를 배우려고합니다. 도와 주셔서 감사합니다.

public ObservableCollection<OUTAGE_DETAILS> LoadOutageDetails() 
    { 
     // Charge les données (Load data) 
     oeContenxt.OUTAGE_DETAILS.Load(); 
     return oeContenxt.OUTAGE_DETAILS.Local; 
    } 

이보기의 뒤에 코드에서 사용

EF 데이터를 취득하기위한
+0

이 오류를보고하는 코드 줄을 제공 할 수 있습니까? 이 코드 스 니펫이 유효 해 보였으므로 더 자세한 정보가 필요합니다. – Crypt32

+0

감사합니다. @CryptoGuy, 나머지 코드를 포함 시켰습니다. – mack

+2

(from oeContenxt.OUTAGE_DETAILS에서 o.OUTAGE_SEQ_ID를 선택하십시오.) .ToList()는 OUTAGE_DETAILS가 아닌 Id 목록을 리턴합니다. "o"를 선택하십시오. – jhenninger

답변

0

:

dtgrid.ItemsSource = LoadOutageDetails(); 

또는 MVVM와

, 당신의보기의 데이터 컨텍스트에 VM을 결합

this.DataContext = new MyViewModel(); 

보기의 XAML에서 :

<DataGrid ItemsSource="{Binding AllOutageDetails}"></DataGrid> 

그리고 당신의 VM :

class MyViewModel{ 
    private ObservableCollection<OUTAGE_DETAILS> _allOutageDetails; 

     /// <summary> 
     /// ObservableCollection de tous les outage details 
     /// </summary> 
     public ObservableCollection<OUTAGE_DETAILS> AllOutageDetails 
     { 
      get 
      { 
       return _allOutageDetails; 
      } 
      set 
      { 
       _allOutageDetails= value; 
      } 
     } 

     public MyViewModel() 
     { 
      _allOutageDetails = LoadOutageDetails(); 
     } 
} 

자신을 즐기십시오!

관련 문제