삽입, 업데이트 및 삭제 작업
개체 모델에서 개체를 추가, 변경 및 제거하여 LINQ to SQL에서 Insert
, Update
및 Delete
작업을 수행합니다. 기본적으로 LINQ to SQL은 작업을 SQL로 변환하고 변경 내용을 데이터베이스에 제출합니다.
LINQ to SQL은 개체에 대한 변경 내용을 조작하고 유지하는 데 있어 최대한의 유연성을 제공합니다. 엔터티 개체를 쿼리를 통해 검색하거나 새로 생성하여 사용할 수 있으면 애플리케이션에서 해당 개체를 일반적인 개체로 변경할 수 있습니다. 즉, 해당 값을 변경하고 컬렉션에서 추가 및 제거할 수 있습니다. LINQ to SQL은 변경 내용을 추적하고 사용자가 SubmitChanges를 호출할 때 변경 내용을 데이터베이스로 다시 전송할 준비가 되어 있습니다.
참고 항목
LINQ to SQL은 계단식 삭제 작업을 지원하거나 인식하지 않습니다. 제약 조건이 있는 테이블의 행을 삭제하려면 데이터베이스의 외래 키 제약 조건에 ON DELETE CASCADE
규칙을 설정하거나 부모 개체를 삭제할 수 없게 하는 자식 개체를 고유한 코드로 먼저 삭제해야 합니다. 그러지 않으면 예외가 throw됩니다. 자세한 내용은 방법: 데이터베이스에서 행 삭제를 참조하세요.
다음에 인용된 예제에서는 Northwind 샘플 데이터베이스의 Customer
와 Order
클래스를 사용합니다. 간결하게 나타내기 위해 클래스 정의는 표시하지 않았습니다.
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를 사용하는 개발자는 개체 관계형 디자이너를 사용하여 이 목적을 위한 저장 프로시저를 개발할 수 있습니다.