2013-04-01 1 views
1

나는 실버 라이트 애플리케이션을 연구 중이다. 그것은 새로운 객체를 추가 할 수있는 뷰를 가지고 있습니다. 이 뷰에 바인딩 된 뷰 모델에는 해당 객체 유형의 컬렉션이 속성으로 있습니다. viewmodel의 생성자에는 WCF 서비스를 호출하고 가져온 목록을 해당 컬렉션에 추가하는 데이터베이스에서 데이터를 가져 오는 GetData() 함수가 있습니다.Silverlight 앱에서 데이터베이스로의 이동 횟수 감소

WCF 서비스를 통해 데이터베이스에 새 개체를 추가 한 후에 GetData 메서드를 다시 호출하여 컬렉션의 최신 데이터를 필요로하므로 컬렉션을 새로 고쳐야합니다.

이 프로세스는 테이블을 추가 할 때마다 조금씩 느려지므로 테이블의 전체 데이터를 다시 가져와야합니다. 데이터가 점점 더 커지면서 더 많은 시간이 걸릴 수 있으며 데이터를 가져 오기 위해 여러 개의 테이블 조인이 필요할 수 있습니다.

나는 서비스에 전달하는 객체를 추가하여 데이터베이스에 추가하고 viewmodel의 콜렉션에 직접 추가하려고 생각합니다. 분명히, 나는 그것이 호출 된 서비스가 DB에 성공적으로 추가되었는지 확인하기 위해 오류를 반환하지 않은 경우에만이 객체를 컬렉션에 추가 할 것입니다. 이렇게하면 데이터베이스에서 가져올 필요없이 컬렉션의 최신 데이터를 가질 수 있습니다.

이 접근법이나 실패 할 수있는 시나리오에서 단점을 지적 할 수 있습니까? 또한이 목표를 달성하는 다른 더 좋은 방법이 있는지 제안하십시오.

+0

WCF-Ria 서비스 만 사용하십시오. 그들은 변경 집합을 추적하므로 레코드를 업데이트하거나 삽입 할 필요가 없습니다. 변경 집합은 변경 내용을 알고 WCF 바이너리에 의한 네트워크 전송을 최소화합니다. –

+0

감사 데이빗. Linq2Sql을 사용하지만 내 응용 프로그램은 RIA 서비스를 사용하지 않으며 변경 세트도 사용할 수 있다고 생각합니다. 감사. – Raj

답변

0

나는 종종 내 save 메소드를 가져 와서 저장된 객체를 가져오고 돌려 보낸다. 그런 식으로 서비스/DB 계층에서 수정 한 경우 (날짜, ID 등 생성) 변경 사항이 적용됩니다. 또한 업데이트하려는 경우 "새로운"것으로 생각하지 않습니다.

관련 문제