다음을 통해 공유


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

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

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

참고 항목

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

다음에 인용된 예제에서는 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를 사용하는 개발자는 개체 관계형 디자이너를 사용하여 이 목적을 위한 저장 프로시저를 개발할 수 있습니다.

참고 항목