2011-11-23 4 views
3

Silverlight 응용 프로그램에서 EF4/RIA 콤보를 사용하고 있습니다.모든 RIA 쿼리가 다른 EF 개체 컨텍스트를 생성합니까?

DomainService에는 여러 가지 서비스 방법이 있습니다. 방법의

하나는 데이터베이스로부터 일부 데이터를 인출 한 후 객체의 값을 수정 :

IEnumerable<Factor> GetModifiedFactors(double threshold) 
{ 
    List<Factor> factors = ObjectContext.Where(f => f.Id == selectedId).ToList(); 

    for(int i = 1; i < factors.Count; i++) 
    { 
     Factor current = factors[i]; 
     Factor previous = factors[i - 1]; 

     // Note that here the value of the entity object has been changed 
     current.Value = 2 * current.Value - 3 * previous.Value; 
    } 

    return factors.Where(f => f.Value > threshold); 
} 

이들 계산 된 값은 다음 SL 응용 프로그램으로 리턴된다.

이 예제에서 엔티티 개체의 값이 변경되었음을 유의하십시오.

나는 일부 데이터를 변경 한 후 .SaveChanges()를 호출하는 다른 서비스 방법이있다.

[Invoke] 
public void ResetFactor(int factorId, double defaultValue) 
{ 
    Factor factor = ObjectContext.Factors.FirstOrDefault(f => f.Id == factorId); 

    if(factor == null) 
     return; 

    factor.Value = defaultValue; 

    ObjectContext.SaveChanges(); 
} 

질문 :

내가 알고 싶은 것은 제 2 서비스 방법 SaveChanges이 호출이 첫 번째 서비스 메서드 호출의 변경에 영향을 미칠 것입니다 여부?

또는 모든 RIA 쿼리/서비스 호출이 새 EF ObjectContext를 만드나요?

답변

0

기본적으로 모든 RIA 도메인 서비스가 생성되고 초기화 된 다음 요청을 실행합니다.

그래서 새 ObjectContext는 데이터베이스에서 직접 객체를 가져 오므로 다른 서비스가 변경 한 내용을 포함하게됩니다.

+0

더 좋은 예를 포함하도록 제 질문을 수정했습니다. 내가 알아야 할 것은 ResetFactor 메서드의 SaveChanges가 이전 호출에서 GetModifiedFactors()에 대한 변경 사항을 저장하는지 여부입니다. 이것은 기본적으로 ObjectContext 인스턴스가 다른 도메인 서비스 호출간에 유지되는지 여부를 묻는 것입니다. –

+0

답은 여전히 ​​"예"입니다. 클라이언트의 모든 메소드 호출은 실제로는 별도의 요청이며 각 요청은 새 ObjectContext와 함께 개별적으로 실행되므로 변경 사항이 데이터베이스에서 올바르게 반영됩니다. –