2011-01-19 3 views
1

이미지 업로드 처리기 (.ASHX)가 있습니다. 데이터베이스에 이미지 메타 데이터를 저장하고 해당 항목의 ID에서 이미지를 데이터베이스로 명명하고 있습니다. SubmitChanges를 호출 한 후 LINQ를 사용하고 ID를 다시 가져옵니다. 그런 다음 그 id를 사용하여 이미지를 저장합니다. 필자는 분명히 File.SaveAs가 실패 할 경우 삽입을 롤백하려고합니다. 아래 코드가 정확합니까?LINQ 및 롤백 처리

using (UserDataContext userDataContext = new UserDataContext()) 
{ 
    GalleryImage galleryImage = new GalleryImage(); 
    galleryImage.metaName = "some meta stuff"; 
    userDataContext.GalleryImages.InsertOnSubmit(galleryImage); 
    System.Data.Common.DbTransaction transaction = userClassContext.Transaction; 
    userDataContext.SubmitChanges(); 
    try 
    { 
     string targetPath = "somepath/" + galleryImage.Id; 
     file.SaveAs(targetFilePath); 
    } 
    catch 
    { 
     transaction.Rollback(); 
    } 
} 

감사

그것은 부분적 올

답변

0

.

그러나 SubmitChanges()을 호출하기 전에 명시 적으로 트랜잭션을 생성해야합니다.

+0

이제 수정했습니다. 맞습니까? 감사합니다 – Peuge

+0

@Peuge : IIRC, 당신은 datacontext의 연결에서'BeginTransaction()'을 호출해야합니다. 시도해보십시오. 잘못했을 경우 실패 할 것입니다. – leppie