Đây là bài viết đầu tiên của tôi trên StackOverflow, vì vậy hãy nhẹ nhàng ...ADO.NET Thực tiễn tốt nhất cho kết nối và DataAdaptor Object Phạm vi
Tôi có một số câu hỏi liên quan đến phạm vi đối tượng cho ADO.NET.
Khi tôi kết nối với một cơ sở dữ liệu, tôi thường sử dụng mã như thế này:
OleDbConnection conn = new OleDbConnection("my_connection_string");
conn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * from Employees", conn);
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
DataTable dt = new DataTable();
adapter.Fill(dt);
conn.Close();
conn.Dispose();
Hãy nói rằng tôi ràng buộc DataTable dẫn đến một điều khiển lưới điện và cho phép người dùng của tôi để chỉnh sửa nội dung lưới. Bây giờ, khi người dùng của tôi nhấn một nút Save, tôi cần phải gọi mã này:
adapter.Update(dt);
Dưới đây là những câu hỏi của tôi:
1) Tôi có cần phải giữ lại các đối tượng bộ chuyển đổi mà tôi tạo ra khi tôi ban đầu được nạp datatable, hoặc tôi có thể tạo một đối tượng adapter trong sự kiện bấm nút Save để thực hiện cập nhật?
2) Nếu tôi cần giữ lại đối tượng bộ điều hợp ban đầu, tôi có cần giữ đối tượng kết nối có sẵn và mở không?
Tôi hiểu mô hình đã ngắt kết nối của ADO.NET - Tôi chỉ bị nhầm lẫn về phạm vi đối tượng khi đến lúc cập nhật cơ sở dữ liệu. Nếu ai đó có thể cho tôi một vài gợi ý về các phương pháp hay nhất cho kịch bản này, tôi sẽ đánh giá cao điều đó!
Cảm ơn trước ...
Bộ điều hợp dữ liệu có thể mở các kết nối ngầm, bây giờ tôi không chắc chắn về việc này bên trong một câu lệnh sử dụng, nhưng không thể bạn chỉ cần thả dòng conn.Open(), và để cho dataadaptor mở kết nối. – GordonB
Điểm tốt. Tôi thậm chí còn đề cập đến nó dưới 2). :-) Tôi sẽ cập nhật mã ví dụ –
Bộ điều hợp dữ liệu có thể là lựa chọn tốt trong trường hợp bán hàng triệu bản ghi (ví dụ: 2-3 triệu bản ghi mà tôi có trong dữ liệu của mình) vào cơ sở dữ liệu không ??? –