다음을 통해 공유


삽입, 업데이트 및 삭제 작업

개체 모델에서 개체를 추가, 변경 및 제거하여 LINQ to SQL에서 작업을 수행 InsertUpdateDelete 합니다. 기본적으로 LINQ to SQL은 작업을 SQL로 변환하고 변경 내용을 데이터베이스에 제출합니다.

LINQ to SQL은 개체에 대한 변경 내용을 조작하고 유지하는 데 최대한의 유연성을 제공합니다. 엔터티 개체를 사용할 수 있게 되는 즉시(쿼리를 통해 검색하거나 새로 생성하여) 애플리케이션에서 일반적인 개체로 변경할 수 있습니다. 즉, 해당 값을 변경하고 컬렉션에 추가할 수 있으며 컬렉션에서 제거할 수 있습니다. LINQ to SQL은 변경 내용을 추적하고 호출 SubmitChanges할 때 데이터베이스로 다시 전송할 준비가 된 것입니다.

비고

LINQ to SQL은 계단식 삭제 작업을 지원하거나 인식하지 않습니다. 이에 대한 제약 조건이 있는 테이블의 행을 삭제하려면 데이터베이스의 외래 키 제약 조건에서 규칙을 설정 ON DELETE CASCADE 하거나 사용자 고유의 코드를 사용하여 먼저 부모 개체가 삭제되지 않도록 하는 자식 개체를 삭제해야 합니다. 그렇지 않으면 예외가 발생합니다. 자세한 내용은 방법: 데이터베이스에서 행 삭제를 참조하세요.

다음 발췌문에서는 Northwind 샘플 데이터베이스의 CustomerOrder 클래스를 사용합니다. 클래스 정의는 간결하게 표시되지 않습니다.

Northwnd db = new Northwnd(@"c:\Northwnd.mdf");

// Query for a specific customer.
var cust =
    (from c in db.Customers
     where c.CustomerID == "ALFKI"
     select c).First();

// Change the name of the contact.
cust.ContactName = "New Contact";

// Create and add a new Order to the Orders collection.
Order ord = new Order { OrderDate = DateTime.Now };
cust.Orders.Add(ord);

// Delete an existing Order.
Order ord0 = cust.Orders[0];

// Removing it from the table also removes it from the Customer’s list.
db.Orders.DeleteOnSubmit(ord0);

// Ask the DataContext to save all the changes.
db.SubmitChanges();
Dim db As New Northwnd("…\Northwnd.mdf")

Dim cust As Customer = _
(From c In db.Customers _
 Where c.CustomerID = "ALFKI" _
 Select c) _
.First()

' Change the name of the contact.
cust.ContactName = "New Contact"

' Create and add a new Order to Orders collection.
Dim ord As New Order With {.OrderDate = DateTime.Now}
cust.Orders.Add(ord)

' Delete an existing Order.
Dim ord0 As Order = cust.Orders(0)

' Removing it from the table also removes it from 
' the Customer’s list.
db.Orders.DeleteOnSubmit(ord0)

' Ask the DataContext to save all the changes.
db.SubmitChanges()

호출 SubmitChanges할 때 LINQ to SQL은 변경 내용을 데이터베이스로 다시 전송해야 하는 SQL 명령을 자동으로 생성하고 실행합니다.

비고

일반적으로 저장 프로시저를 통해 고유한 사용자 지정 논리를 사용하여 이 동작을 재정의할 수 있습니다. 자세한 내용은 기본 동작을 재정의하는 개발자의 책임을 참조하세요.

Visual Studio를 사용하는 개발자는 개체 관계형 디자이너를 사용하여 이 목적을 위해 저장 프로시저를 개발할 수 있습니다.

참고하십시오