2010-12-27 3 views
0

DomainService를 상속하는 클래스를 만들고 System.ServiceModel.DomainServices.Client를 사용하여 DomainContext를 가져 오는 Silverlight 응용 프로그램을 만들었습니다. 또한 DomainServices의 쿼리, 업데이트, 삽입 및 삭제 메서드에 사용되는 POCO DataContracts를 만들었습니다. 모든 LoadOperations를 실행하는 ViewModel도 있습니다. 이제는 생성 된 EntitySets에 새 엔티티를 추가하고 싶지만 한 사용자가 새 사용자를 만들고 Key 값을 설정할 때 어떤 일이 발생할지 확신 할 수없는 앱의 일부입니다. 다른 사용자는 동일한 키 값을 사용하여 유사한 엔티티를 만듭니다.사용자 지정 DomainService와의 동시성

설명서에서 ObjectContext가 사용되었지만 제 상황에서 EntityFramework 모델 생성기를 사용할 수 없었습니다. 그래서 손으로 데이터 수집을 만들어야했습니다.

그래서 내 질문에, 다른 실버 라이트 애플 리케이션을 데이터베이스 변경 사항을 업데이트 할 수있는 방법이 있습니까?

+0

EDIT : 더 쉬운 질문 ... 위에서 말한 것처럼 DomainService에서 상속받은 사용자 지정 DomainService가 있습니다. DomainContext를 "새로 고침"할 수있는 방법이 있습니까? – jhorton

답변

0

로드 동작에 따라 DomainContext에 저장 작업을 수행하면 자동으로 새로 고침됩니다.

TicketContext.Load(TicketContext.GetTicketByIdQuery(ticketId), 
             LoadBehavior.RefreshCurrent, 
             x => 
             { 
              Ticket = x.Entities.First(); 
              Ticket.Load(); 
              ((IChangeTracking) TicketContext.EntityContainer).AcceptChanges(); 
             }, null); 

여기서는 LoadBehavior를 RefreshCurrent로 설정했습니다. 저장을하면 RIA는 엔티티를 클라이언트로 전송하고 변경 사항을 클라이언트 측 컨텍스트에 이미 캐시 된 엔티티와 병합합니다. 그 질문에 대한 답이 맞는지는 모르겠지만.

+0

정상적인 상황에서는 Entity Data Model Generator를 사용할 수 없었습니다. 그래서 LinqToEntity와 함께 사용할 ObjectContext가 없기 때문에, 누락 된 기능을 많이 만들어야합니다. 그러나 그 대답은 질문에 답하는 것처럼 보이기 때문에 나는 그것을 표시 할 것입니다. Chris 도움에 감사드립니다. – jhorton

+0

@jhorton 여기 ObjectContext를 사용하지 않습니다 :-) Thi는 EF가 아닙니다. 이것은 RIA가 Entity Framework와 독립적으로 작동하는 방식입니다. 서버 측 또는 EF에서 ADO.NET 및 POCO를 사용하든 상관 없습니다. 동작은 동일합니다. RIA는 클라이언트에 변경 사항을 다시 보내고 병합 할 것을 기대합니다 (RefreshCurrent를 설정 한 경우). 당신이 알아 낸 것처럼, EF를 사용하지 않는다면 당신은 스스로 많은 일을해야합니다 :-) 저는 서버 측에서 POCO와 ADO.NET을 사용하여 몇 가지 프로젝트를 수행했습니다. RIA가 데이터를 통해 무엇을 기대하는지 파악한 후에도 그렇게 나쁘지 않습니다. –