2011-08-17 1 views
1

지금까지 RIA 서비스와 관련하여 필요한 모든 작업은 매우 간단했으며 도메인 모델을 기반으로 생성 된 코드를 사용하여 수행 할 수있었습니다. 그러나 이제는 서버 측에서 사용자 정의 메서드를 사용하여 일부 논리를 수행하거나 데이터베이스에 저장된 proc를 호출해야합니다.RIA 서비스 사용자 정의 방법을 사용하여 검색 한 데이터 업데이트

public IQueryable<TIMESLOT> GetPermissableTimeslots(
    int roomID, 
    int semesterID, 
    Int16 year) 
{ 
    return this.ObjectContext.TIMESLOTs.Where<TIMESLOT>(
     ts => 
      ts.ROOM_ID == roomID && 
      ts.SEMESTER == semesterID && 
      ts.YEAR == year 
    ); 
} 

(주 을 : 나는 결국 저장된 프로 시저에 대한 호출로 LINQ 쿼리를 대체합니다 나는 일단 다음과 같이 내가 필요한 테이블에서 필터링 된 데이터를 얻을 수있는 사용자 지정 서버 측 방법을 쓸 수 있어요 내 현재의 문제

비주얼 스튜디오 내가 다음과 같이 데이터를로드하는 데 사용할 수 있어요 클라이언트에서 GetPermissableTimeslotsQuery를 생성) 파악 :

private void LoadPermissibleTimeSlots() 
{ 
     this.domainContext.Load(
      domainContext.GetPermissableTimeslotsQuery(
       this.CurrentRoom.ID, 
       this.CurrentSemester.ID, 
       this.CurrentYear), 
      (result) => 
      { 
       this.Timeslots = result.Entities; 
      } 
      , null); 
} 

문제를 지금 추가 및 타임 슬롯을 업데이트 한 것을 사용자 클라이언트의 변경. 내가 얻은 결과는 EntitySet이 아니며 TIMESLOTS 테이블과 직접 연관되어 있지 않기 때문에 결과 엔티티 집합에서이를 업데이트하고 변경 사항을 커밋 할 수는 없습니다. TIMESLOTS 테이블과 연관된 EntitySet에 변경된 엔티티를 연결하여 커밋 할 수 있습니까? 아니면 이것을 지원하기 위해 서버 측에 사용자 정의 추가 및 업데이트 메소드를 추가해야합니까?

답변

1

쿼리에서 반환 한 엔터티는 도메인 컨텍스트에 자동으로 첨부되어야합니다. 도메인 컨텍스트에서 SubmitChanges 메서드를 호출하여 변경 내용을 수정하고 해당 변경 내용을 서버로 다시 전파 할 수 있어야합니다.

새 엔티티를 추가하려면 도메인 엔티티의 Timeslots 속성에 추가 할 수 있습니다.

또는 새 엔티티와 다른 엔티티 사이의 관계 (타임 슬롯이 아니어도 됨)를 만들면 새 엔티티가 도메인 컨텍스트로 드래그되고 SubmitChanges에 대한 다음 호출에 포함됩니다.

+0

고마워요! 첨부 파일이 언제, 언제 어떻게 발생했는지에 대한 근본적인 오해가있는 것 같습니다. –