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를 만드나요?
더 좋은 예를 포함하도록 제 질문을 수정했습니다. 내가 알아야 할 것은 ResetFactor 메서드의 SaveChanges가 이전 호출에서 GetModifiedFactors()에 대한 변경 사항을 저장하는지 여부입니다. 이것은 기본적으로 ObjectContext 인스턴스가 다른 도메인 서비스 호출간에 유지되는지 여부를 묻는 것입니다. –
답은 여전히 "예"입니다. 클라이언트의 모든 메소드 호출은 실제로는 별도의 요청이며 각 요청은 새 ObjectContext와 함께 개별적으로 실행되므로 변경 사항이 데이터베이스에서 올바르게 반영됩니다. –