WCF Data Services를 사용하는 Silverlight 응용 프로그램이 있습니다. 로깅 기능을 추가하려고합니다. 새 행이 생성되면이 새 행의 기본 키가 로깅 테이블에도 기록됩니다. 행 생성 및 로깅은 동일한 트랜잭션 내에서 발생해야합니다. 기본 키는 데이터베이스를 통해 생성됩니다 (IDENTITY 키워드 사용).Silverlight의 ADO.NET 데이터 서비스 : 동일한 트랜잭션 내에서 생성 된 키 사용
예를 들어 설명하는 것이 가장 적절할 수 있습니다. 여기서 새로운 고객 행을 만들고 같은 트랜잭션에서 고객의 기본 키를 AuditLog 행에 작성합니다.
using (var ts = new TransactionScope())
{
AuditTestEntities entities = new AuditTestEntities();
Customer c = new Customer();
c.CustomerName = "Acme Pty Ltd";
entities.AddToCustomer(c);
Debug.Assert(c.CustomerID == 0);
entities.SaveChanges();
// The EntityFramework automatically updated the customer object
// with the newly generated key
Debug.Assert(c.CustomerID != 0);
AuditLog al = new AuditLog();
al.EntryDateTime = DateTime.Now;
al.Description = string.Format("Created customer with customer id {0}", c.CustomerID);
entities.AddToAuditLog(al);
entities.SaveChanges();
ts.Complete();
}
엔티티 프레임 워크를 사용하여 두꺼운 클라이언트를 개발할 때 그것은 사소한 문제입니다 :이 예는 두꺼운 클라이언트와 엔티티 프레임 워크를 사용합니다.
그러나, 사용 실버 라이트와 ADO.NET 데이터 서비스 : 비동기
- SaveChanges를 만 호출 할 수 있습니다
- 나는 키를 생성하는 경우
- 는 잘 모르겠어요 TransactionScope에 사용할 수있는 확실하지 않다 클라이언트에 반영 될 수 있습니다. 편집 : Alex James에 따르면 실제로 클라이언트에 반영됩니다.
이렇게해도 될까요?