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