2012-06-17 3 views
0

MVVM 패턴을 따르려고하지만,이 문제에 대해 많은 시간을 보냈고 많은 검색을하고 stackoverflow도 확인했습니다 ... 지금까지 발견 된 작업 예제가 없습니다.MVVM과 DBContext - 어떻게 조합할까요?

기본적으로 간단한 응용 프로그램을 사용하여 SQL Server에 데이터를 검색하고 쓰고 싶습니다. 여기에 내 코드입니다 :

// 모델

public class Visitor 
{ 
    public string ID { get; set; } 


    public string FirstName { get; set; } 

    public string LastName { get; set; } 
} 

// 뷰 모델

public class VisitorViewModel : ViewModelBase 
{ 
    public ObservableCollection<Visitor> _visitorDataCollection = new ObservableCollection<Visitor>(); 

    public ObservableCollection<Visitor> VisitorDataCollection 
    { 
     get { return _visitorDataCollection; } 
     set { _visitorDataCollection = value; } 
    } 

    private string _firstName = ""; 
    private string _lastName = ""; 



    public string FirstName 
    { 
     get { return _firstName; } 
     set 
     { 
      if (value != _firstName) 
      { 
       _firstName = value; 
       OnPropertyChanged("FirstName"); 
      } 
     } 
    } 

    public string LastName 
    { 
     get { return _lastName; } 
     set 
     { 
      if (value != _lastName) 
      { 
       _lastName = value; 
       OnPropertyChanged("LastName"); 
      } 
     } 
    } 

    public VisitorViewModel() 
    { 

    } 
} 

}

데이터베이스 컨텍스트

public partial class VisitorContext : DbContext 
{ 
    public VisitorContext() 
     : base() 
    { 
    } 

    public DbSet<VISITOR> Visitors { get; set; } 

} 
을 나타냅니다

// VisitorContext 클래스}

정말 환상적입니다. 그러나, 나는 그것을 "함께"놓을 수 없다. 모든 방문자를 검색하고 새 방문자를 추가하는 방법을 완료하려면 어떻게해야합니까?

누군가 나를 올바른 방향으로 안내 할 수 있습니까?

+0

좋아, 내가 옳았는지 : 데이터베이스 관련 항목, 방문자 viewmodel, "전체"viewmodel 및 일부보기를 처리하는 dbContext를 원한다. –

+0

방문객 및 방문객의 일부가 약간 혼재 된 것처럼 보입니다. 그것들을 방문객으로 분리하고 방문객 컬렉션 모델을보십시오. 그렇다면, 당신은 단지 당신의 맥락을 인스턴스화해야하고 모든 것은 내가 믿는 것입니다. –

답변

1

간단한 예제를 통해 모든 것을 현실화합니다.

는 VM에 몇 가지 명령을 추가

public ICommand Add {get; private set;} 

생성자에서 :

그것 뿐이다
public VisitorViewModel() 
{ 
    using(var context = new VisitorContext()) 
    { 
     //fill collection with initial data from DbContext 
     context.Visitors.ToList().ForEach(_visitorDataCollection.Add); 
    } 
    //setup add command, here I'm using MVVM Light like you 
    Add = new RelayCommand(()=> { 
      using(var context = new VisitorContext()) 
      { 
      _visitorDataCollection.Add(context.Visitors.Add(new Visitor { 
       FirstName = this.FirstName, 
       LastName = this.LastName //read values from model properties 
      }); 
      } 
     }); 
} 

은, 당신이해야 할 모든보기를 적절한이 뷰 모델을 결합한다.