2009-04-15 2 views
2
는 다음의 간단한 코드가 작동하지 않습니다

RECORDTYPE의 객체 Linq2Sql에 기록하지만, 내가업데이트 (이 매개 변수에 검색된 객체 참조를 설정하기 때문에)

public bool updateEvent(clubEvent newEvent) 
    { 
     TNightCon tCon = new TNightCon(); 
     clubEvent cEv = (from cEvent in tCon.clubEvents 
         where cEvent.EventID == newEvent.EventID 
         select cEvent).First(); 

     // Won't work, but do I have to set all the fields manually? 
     cEv = newEvent; 
     tCon.SubmitChanges(); 
     return true; 
    } 

답변

2

당신이해야 할 일을하기 위해 현재 개체를 검색 할 필요가 없습니다. ID가 같으면 새로운 객체를 컨텍스트에 첨부하면됩니다. 이 트릭은 Linq2SQL이 객체를 "더러운"것으로 처리하게됩니다. Timothy Khouri는 a blog post에 대해 자세히 설명합니다.이 기술은 문맥에서 Refresh 메서드를 사용하는 유용한 기술입니다. 그것이 어떻게 생겼는지 보여줍니다.

public bool updateEvent(clubEvent newEvent) 
    { 
     tCon.clubEvents.Attach(newEvent); 
     tCon.Refresh(RefreshMode.KeepCurrentValues, settings) 
     tCon.SubmitChanges(); 
     return true; 
    } 
3

를 수행 할 작업을 보여줍니다 또는 번갈아 가며

tCon.ClubEvents.DeleteOnSubmit(cEv); 
    tCon.CLubEvents.InsertOnSubmit(newEvent); 
    tCon.SubmitChanges(); 
+0

얼마나 안전합니까? 레코드가 삭제되고 레코드가 발견 될 때까지 레코드를 찾지 만 존재하지 않을 가능성은 없습니까? 또는 SQL Server는 새로운 요청을 처리하기 전에 이러한 유형의 작업을 완료합니까? – Tarks

+1

삭제 및 삽입은 SubmitChanges() 함수에 의해 트랜잭션으로 처리되어야합니다. –

관련 문제