2011-04-22 4 views
1

Silverlight RIA Services를 사용하는 응용 프로그램을 사용하고 있습니다. 나는이 기술에 익숙하지 않다. 현재 사용자의 콘텐츠를로드했습니다. 사용자에게는 주소가있을 수도 있고 없을 수도 있습니다. Address는 사용자가 주소를 제공하지 않은 경우 null 일 수있는 CLR 객체입니다. 보유하고있는 경우 주소에 거리, 도시 및 주 관련 정보가 포함됩니다. 이 주소는 내보기 모델에서 속성으로 설정됩니다. 내 UI는 내보기 모델에서 Address 속성의 속성에 양방향 바인딩을 수행합니다.Silverlight RIA Services - 변경 내용 제출/업데이트

사용자가 내 페이지에서 "저장"을 클릭하면이 주소를 데이터베이스에 삽입하거나 업데이트하려고합니다. 이 작업을 수행하기위한 노력의 일환으로, 내가 가진 : 아무것도 SQL 프로파일 러를 사용하여 데이터베이스로 전송되지지고 있음을 나는 발견했습니다

this.DomainContext.SubmitChanges(); // DomainContext is initialized in the constructor of my view model. 

. RIA 서비스를 사용하여 데이터베이스를 어떻게 변경합니까?

감사합니다. 내가 모델을 가정하고

+0

당신이 사용자와 주소 클래스의 정의를 공유 할 수 있습니까? –

+0

설정에 대한 추가 컨텍스트를 제공해야합니다. 정의, 데이터로드 방법 등 – AbdouMoumen

답변

1

에드의 예는 확실히 당신의 요구를 충족 할 수있는 좋은 방법입니다,하지만 난 당신이 RIA 서비스를 사용하여 콜백을 포함하는 실버 라이트에서의 조작에 접근하는 것이 좋습니다

// Save 
      SubmitOperation so = dataContext.SubmitChanges(); 

      // Callback 
      so.Completed += (s, args) => 
           { 
            // Error? 
            if (so.HasError) 
            { 
             // Message 
             MessageBox.Show(string.Format("The following error has occurred:\n\n{0}", so.Error.Message)); 

             // Set 
             so.MarkErrorAsHandled(); 
            } 
           }; 
0

public class User 
{ 
    [Key] 
    public int? UserID { get; set; } 

    /* Other properties */ 

    [Association("User_1-1_Address", "UserID", UserID", IsForeignKey = false)] 
    [Include] 
    public Address Address { get; set; } 
} 

public class Address 
{ 
    [Key] 
    public int? UserID { get; set; } 

    /* Other properties */ 


    [Association("User_1-1_Address", "UserID", UserID", IsForeignKey = true)] 
    [Include] 
    public User User{ get; set; } 
} 

같은 것을 같은 서버에 정의되어 있고 DomainService는 주소 갱신/삽입 할 수 있습니다. 새 Address을 추가 할 때 클라이언트에서

public void InsertAddress(Address address) { ... } 
public void UpdateAddress(Address address) { ... } 

, 당신의 ViewModel은 사용자에 그것을 설정합니다. 다음 도메인 서비스에 UpdateAddress 방법

this.User.Address.City = "Oz"; 

결과라는 Address이 이미 존재하는 경우이

this.DomainContext.SubmitChanges(); 

에라는 도메인 서비스에 InsertAddress 방법 결과

this.User.Address = new Address(); 

, on

this.DomainContext.SubmitChanges(); 

더 많은 코드를 공유 할 수 있다면 예제를 정리하여 문제에 직접 적용 할 수 있습니다.

관련 문제