2014-01-27 7 views
1

Azure 모바일 서비스를 사용하기 위해 필자가 보았던 모든 샘플 애플리케이션과 코드는 단순화를 위해 MVVM 패턴을 따르지 않습니다.MVVM 및 Azure 모바일 서비스

Azure 모바일 서비스를 사용하여 클라우드의 데이터에 액세스 한 다음 Windows 전화 로컬 데이터베이스 (모델)에 데이터를 캐시하는 MVVM 응용 프로그램을 작성하는 방법은 무엇입니까?

[Table] 
public class ToDoItem 
{ 

    [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)] 
    public int ToDoItemId 
    { 
     ... 
    } 

    [Column] 
    public string ItemName 
    { 
     ... 
    } 

    [Column] 
    public bool IsComplete 
    { 
     ... 
    } 
} 

그리고 지금은 구름이 데이터로 작업 할 것인지, 샘플 내가 이렇게 내 수업을 구성 할 필요가 있음을 말해 - - 기존 모델 클래스는 다음과 같이했다

public class TodoItem 
{ 
    public string Id { get; set; } 

    [JsonProperty(PropertyName = "text")] 
    public string Text { get; set; } 

    [JsonProperty(PropertyName = "complete")] 
    public bool Complete { get; set; } 
} 

방법 MVVM 패턴에 맞습니까? 내 모델 수업은 어떻게 보이게해야합니까? 두 버전의 ToDoItem 클래스를 사용하여 로컬 데이터베이스에서 데이터를 가져 오거나 가져 오는 데 사용하고 다른 하나는 클라우드에서 데이터를 설정/가져오고 다른 하나를 변환하는 데 사용합니까? 누군가가 나를 가리킬 수있는 표본이 있습니까?

답변

0

우선, 당신은 모델과 데이터베이스를 혼동스럽게 보입니다. 데이터베이스는 단지 저장 수단입니다. 한편, 모델은 데이터 구조의 표현입니다. 그걸로 너의 문제를 해결하자.

동일한 데이터에 대해 두 가지 모델을 사용하면 안됩니다. 그것은 미래에 불일치로 이어질 수 있으며 일반적으로 나쁜 디자인입니다. 당신은 완전히 같은 다른 클래스 장식을 가질 수

다음
[Table] 
public class ToDoItem 
{ 
    private int _toDoItemId; 

    [JsonProperty(PropertyName = "id")] 
    [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)] 
    public int ToDoItemId 
    { 
     get 
     { 
      return _toDoItemId; 
     } 
     set { blah; blah; blah; } 
    } 
} 

, 나는 같은 멤버 ToDoItemId에 두 속성의 유형, Column뿐만 아니라 JsonProperty을 사용했다. 데이터베이스 저장을 위해 데이터를 직렬화하면 Column 속성이 고려되지만 Azure SDK는 편리하게 무시하고 JsonProperty을 대신 사용합니다.

Here으로 Windows Phone 로컬 데이터베이스와 WAMS 간의 동기화를 처리하는 라이브러리를 작성했습니다. 사용하지 않기로 결정한 경우에도 코드를 탐색하고 몇 가지 힌트를 얻을 수 있습니다. 희망이 도움이됩니다!

관련 문제