LINQ là một ngôn ngữ truy vấn, vì vậy nó không làm cập nhật hoặc chèn. Tuy nhiên, mô hình đối tượng thực thể LINQ to SQL có các phương thức để xử lý CUD:
using(MyDataContext dc = new MyDataContext())
{
//select the source entities from Table2
var Table2Entities = (from e in dc.Table2 where e.Field1 == "value" select e);
//for each result, create a new Table1 entity and attach to Table1
Table2Entities.ForEach(t2e => dc.Table1.InsertOnSubmit(
new Table1Entity {
Field1 = t2e.Field1,
Field2 = t2e.Field2,
Field3 = t2e.Field3
});
//submit the changes
dc.SubmitChanges();
}
Sự khác biệt thực sự ở đây là yêu cầu hai giao dịch SQL riêng biệt để chọn một và một để chèn.
Nguồn
2009-09-13 04:39:36
Bạn có tài liệu nào không ation để sao lưu khẳng định rằng tất cả các insertions diễn ra trong một chuyến đi vòng? –
@Adam nope. Chỉ là trí nhớ của tôi, thường bị lỗi. Tôi sẽ loại bỏ bit đó 'cho đến khi nó bị xóa một cách này hay cách khác. Cảm ơn! –
@Adam, công cụ SQL Profiler sẽ làm sáng tỏ cách LINQ-to-SQL giao tiếp với máy chủ cơ sở dữ liệu và là cách tốt để đo lường hiệu suất và LINQ đang xây dựng các truy vấn và lô của nó tốt như thế nào. –