2

TransactionScope를 사용하여 Entity Framework에서 트랜잭션을 구성하는 방법을 배웠습니다. 그러나 그것은 아직도 나를 혼란스럽게합니다! RIA 서비스가 트랜잭션을 실행하는 방법과 트랜잭션 옵션을 어떻게 지정할 수 있습니까? 나는 우리가 이런 식으로 뭔가를 지정 실버 라이트 클라이언트에서 가정 의미 : -ria 서비스가 트랜잭션을 관리하는 방법

someContext.Add(someEntity1); 
someContext.Add(someEntity2); 
someContext.Add(someEntity3); 

지금 내가이 내 도메인 서비스 클래스에서 서버에 InsertSomeEntity()를 호출하는 것입니다 someContext.SubmitChanges()를 호출 할 때. 세 가지 레코드가 모두 데이터베이스에 삽입된다는 보장은 무엇입니까? 어떻게 이러한 옵션을 변경할 수 있습니까?

+1

희망이 도움이 될 것입니다. http://bit.ly/fbwR85 – Hukam

+0

또한 동시성 문제를 고려해야합니다. WCF RIA는 당신의 삶을 흥미롭게 만듭니다. 읽기 시작점은 http://sklementiev.blogspot.com/2010/03/wcf-ria-and-concurrency.html입니다. 코드는 조금 오래되었고 더 이상 작동하지 않지만 접근법을 읽는 좋은 곳입니다. – Rus

답변

5

찬드의 링크가 좋은 예입니다. WCF RIA는 3 개의 Add를 모두 포함하는 SubmitChanges에 대한 ChangeSet를 제출합니다. DomainService에서 PersistChanges 메서드를 재정 의하여 트랜잭션을 완료 할 수 있습니다.

public class SomeEntityDomainService : DomainService 
{ 
    SomeEFContext _someEFContext; 
    public SomeEntityDomainService() 
    { 
     _someEFContext = new SomeEFContext(); 
    } 

    public void InsertSomeEntity(SomeEntity someEntity) 
    { 
     // Called 3 times in your example 
     _someEFContext.SomeEntities.Add(someEntity); 
    } 

    protected override bool PersistChangeSet() 
    { 
     // Called exactly once per SubmitChanges() in Silverlight 
     _someEFContext.SaveChanges(); 
    } 
} 

이 모든 것은 클라이언트에서 서버로 한 요청에 3 건이 발생하는 것이 아닙니다.

관련 문제