방법: 저장 프로시저를 할당하여 업데이트, 삽입 및 삭제 수행(O/R 디자이너)
저장 프로시저를 O/R 디자이너에 추가하여 일반적인 DataContext 메서드로 실행할 수 있습니다.또한 엔터티 클래스의 변경 내용을 데이터베이스에 저장한 경우(예: SubmitChanges 메서드를 호출한 경우) 저장 프로시저를 사용하여 삽입, 업데이트 및 삭제를 수행하는 기본 LINQ to SQL 런타임 동작을 재정의할 수 있습니다.
[!참고]
클라이언트로 다시 보내야 하는 값(예: 저장 프로시저에서 계산된 값)을 저장 프로시저에서 반환하는 경우 저장 프로시저에 출력 매개 변수를 만듭니다.출력 매개 변수를 사용할 수 없는 경우 O/R 디자이너에서 생성된 재정의를 사용하지 말고 부분 메서드(Partial Method) 구현을 작성합니다.데이터베이스에서 생성된 값에 매핑되는 멤버는 INSERT 또는 UPDATE 작업이 성공적으로 완료된 후 적절한 값으로 설정되어야 합니다.자세한 내용은 기본 동작을 재정의할 때의 요구 사항을 참조하십시오.
[!참고]
LINQ to SQL은 identity(자동 증분), rowguidcol(데이터베이스에서 생성된 GUID) 및 timestamp 열에 대해 데이터베이스에서 생성된 값을 자동으로 처리합니다.데이터베이스에서 생성된 값이 다른 형식의 열에 있으면 null 값이라는 예기치 않은 결과가 발생합니다.데이터베이스에서 생성된 값을 반환하려면 수동으로 IsDbGenerated를 true로 설정하고 AutoSync를 Always, OnInsert 또는 OnUpdate 중 하나로 설정해야 합니다.
엔터티 클래스의 업데이트 동작 구성
기본적으로 삽입, 업데이트 및 삭제와 같은 데이터베이스를 LINQ to SQL 엔터티 클래스의 데이터에 대한 변경 내용으로 업데이트하는 논리가 LINQ to SQL 런타임에서 제공됩니다.런타임에서는 열 및 기본 키 정보와 같은 테이블 스키마를 기반으로 기본 삽입, 업데이트 및 삭제 명령을 만듭니다.기본 동작을 사용하지 않으려면 테이블의 데이터를 조작하는 데 필요한 삽입, 업데이트 및 삭제 작업을 수행하기 위한 특정 저장 프로시저를 할당하여 업데이트 동작을 구성할 수 있습니다. 엔터티 클래스가 뷰에 매핑되는 경우 등과 같이 기본 동작이 수행되지 않을 때도 이렇게 할 수 있습니다.또한 저장 프로시저를 통해 데이터베이스의 테이블에 액세스해야 하는 경우에 기본 업데이트 동작을 재정의할 수 있습니다.
저장 프로시저를 지정하여 엔터티 클래스의 기본 동작을 재정의하려면
디자이너에서 LINQ to SQL 파일을 엽니다.솔루션 탐색기에서 .dbml 파일을 두 번 클릭합니다.
서버 탐색기/데이터베이스 탐색기에서 저장 프로시저를 확장하여 엔터티 클래스의 삽입, 업데이트 및/또는 삭제 명령에 사용할 저장 프로시저를 찾습니다.
저장 프로시저를 O/R 디자이너로 끌어 놓습니다.
저장 프로시저는 메서드 창에 DataContext 메서드로 추가됩니다.자세한 내용은 DataContext 메서드(O/R 디자이너)를 참조하십시오.
업데이트 수행을 위해 저장 프로시저를 사용하려는 엔터티 클래스를 선택합니다.
속성 창에서 재정의할 삽입, 업데이트 또는 삭제 명령을 선택합니다.
런타임 사용 옆의 줄임표(...)를 클릭하여 동작 구성 대화 상자를 엽니다.
사용자 지정을 선택합니다
사용자 지정 목록에서 원하는 저장 프로시저를 선택합니다.
메서드 인수 및 클래스 속성 목록을 살펴보고 메서드 인수가 적절한 클래스 속성에 매핑되어 있는지 확인합니다.업데이트 및 삭제 명령을 위해 원래 메서드 인수(Original_ArgumentName)를 원래 속성(PropertyName (Original))에 매핑합니다.
[!참고]
기본적으로 메서드 인수는 이름이 일치하는 경우 클래스 속성에 매핑됩니다.속성 이름이 변경되어서 더 이상 테이블과 엔터티 클래스 간에 일치하지 않으면 디자이너에서 올바른 매핑을 결정할 수 없는 경우 매핑할 해당 클래스 속성을 선택해야 합니다.
확인 또는 적용을 클릭합니다.
[!참고]
계속해서 클래스/동작 조합을 변경한 후 적용을 클릭하여 해당하는 각 조합에 대한 동작을 구성할 수 있습니다.적용을 클릭하기 전에 클래스 또는 동작을 변경하면 변경 내용을 적용할지 묻는 경고 대화 상자가 나타납니다.
업데이트의 기본 런타임 논리 사용으로 되돌아가려면 속성 창에서 삽입, 업데이트 또는 삭제 명령 옆의 줄임표를 클릭한 다음 동작 구성 대화 상자에서 런타임 사용을 선택합니다.
참고 항목
태스크
연습: LINQ to SQL 클래스 만들기(O/R 디자이너)
연습: Northwind Customers 테이블의 업데이트 저장 프로시저 만들기