2011-02-01 2 views
1

linq 2 sql 저장 프로 시저로 데이터를 업데이트하는 것에 대해 약간 혼란스러워합니다. 제 질문은 : 저장 프로 시저를 사용하여 데이터베이스의 일부 데이터를 업데이트 할 때 (그러나 저장된 프로 시저가 특정 엔터티에 매핑되지 않음) 이후에 SubmitChanges를 호출하는 것입니다. 또한 루프에서 이러한 많은 프로 시저를 호출 할 때 트랜잭션에 대해서는 어떻게해야합니까? 명시 적으로 Connection.BeginTransaction() 메서드를 통해 트랜잭션을 만들거나 모델에서 수행해야합니까?Linq-to-SQL 업데이트 레코드에 대한 사용자 지정 저장 프로 시저를 실행

다시 말하지만, 모델에서 일부 엔티티와 연결된 저장 프로 시저가 어떻게 작동하는지 알지만, 지금은 테이블의 수를 업데이트하는 맞춤 저장 프로 시저를 사용하지 않을 것입니다.

감사합니다.

+0

Linq-to-SQL은 저장 프로 시저와 잘 호환되지 않습니다. sprocs 사용에 대해 진지하게 생각하고 있다면 .NET 4의 Entity Framework로 "업그레이드"하는 것이 좋습니다. ** 많은 ** 저장된 저장 지원 향상 거기에 procs! –

+0

@ marc_s, Linq-to-SQL과 스토어드 프로 시저 간의 인터페이스가 어떤 방식으로 이루어 집니까? –

+0

@Kirk Woll : 두 가지 주요 사항 : 우선, 모델의 엔터티와 정확히 일치하지 않는 저장 프로 시저에서 결과 집합을 반환 할 수 없습니다. EF는 특정 "복합 형식"을 정의하는 기능으로이를 지원합니다. 두 번째로는 L2S에서 저장된 procs 만 실행할 수있는 반면 EF4에서는 INSERT, UPDATE, DELETE 작업에 대해 각 엔티티 유형에 대해 저장 프로 시저를 할당 할 수 있습니다 (예 : DELETE에 하나의 저장된 proc를 할당하고 leave 할 수 있음) SQL 코드 스테이 션을 생성하여 다른 작업을 처리하는 EF4) –

답변

3

저장 프로 시저 및 LINQ to SQL을 통해 비 엔터티 데이터를 업데이트하는 것은 매우 간단합니다. 그냥 DBML 디자이너 빈 공간에 서버 탐색기에서 저장 프로 시저를 드래그 (그래서 엔티티 객체를 반환하지 않습니다)와 같은 코드에서 관련 생성 메소드를 호출

myDataContext.MyStoredProcedureMethod(); 

액션 즉시 수행되므로 SubmitChanges()를 호출 할 필요가 없습니다.

LINQ to SQL 트랜잭션에서이 호출 (또는 반복문 등)을 래핑하려면 LINQ to SQL 트랜잭션 사용 방법은 instructions and examples here을 참조하십시오.

관련 문제