Những đặc điểm mới của ADO.NET 2.0
Để có thể làm giảm bớt những hạn chế về thể hiện của các phiên bản
ADO.NET trước đây và tăng tính mềm dẻo, Microsoft đã giới thiệu
những đặc điểm mới nhất trong ADO.NET 2.0 – Những đặc điểm mà có
những sự khác biệt rõ ràng so với phiên bản ADO.NET 1.1.
- Những thể hiện của DataSets với khối lượng dữ liệu lớn đã gây ra
những vấn đề về thể hiện trong những phiên bản trước của ADO.NET. Với phiên bản 2.0, bộ
máy chỉ mục của Datatable đã được viết lại hoàn toàn để làm cho dễ dàng hơn trong việc xử lý
dữ liệu. Và cũng có nhiều sự thay đổi trong các DataTable và DataSet.
Dưới đây, là những đặc điểm nổi bật nhất trong ADO.NET 2.0, chứ không phải chỉ có những
giới hạn như vậy.
+ Nâng cấp các lớp DataSet và DataTable.
+ Tối ưu các DataSet Serialization.
+ Chuyển đổi từ DataReader thành DataSet hoặc DataTable.
+ Phân trang.
+ Batch Updates – Giảm sự xoay vòng dữ liệu.
+ Truy cập dữ liệu bất đồng bộ.
+ Mô hình cung cấp chung.
+ Bulk Copy.
1. Nâng cấp các lớp DataSet và DataTable:
- Trong ADO.NET 2.0, DataTable hỗ trợ 2 phương thức Load and Save. Lưu ý lớp DataSet đã
hỗ trợ 2 phương thức này ngay từ bản đầu tiên của ADO.NET. Trong khi phương thức Load có
thể load dữ liệu từ XML và đưa vào các DataTable, thì phương thức Save lư
u dữ liệu tới một nơi
nhất định. Hơn nữa, không giống như ADO.NET 1.1, Các lớp DataTable cũng hỗ trợ Tuần tự
hóa. Trong ADO.NET 1.1 chỉ có lớp DataSet mới hỗ trợ Tuần tự hóa. Trong ADO.NET 2.0, lớp
DataTable có một phương thức gọi là CreateTableReader mà trả về một thể hiện của
fileStream.Close();
3. Chuyển đổi từ DataReader sang DataSet hoặc DataTable:
- ADO.NET 2.0 cho phép load đối tượng DataReader vào một DataSet hoặc DataTable. Cả 2 lớp
DataSet và DataTable đều có phương thức Load mà được sử dụng để load thể hiện DataReader
vào DataSet hoặc 1 DataTable.
- Ví Dụ:
string connectionString = ....; //Some connection string
SqlConnection sqlConnection = new SqlConnection(connectionString);
sqlConnection.Open();
SqlCommand sqlCommand = new SqlCommand("Select * from Employee", sqlConnection);
SqlDataReader sqlDataReader =
sqlCommand.ExecuteReader(CommandBehavior.CloseConnection);
DataTable dataTable = new DataTable("Employee");
dataTable.Load(sqlDataReader);
- Phương thức GetDataReader của 2 lớp DataSet và DataTable có thể được sử dụng để nhận một
thể hiện DataReader từ cả DataSet và DataTable.
4. phân trang:
- Đây là đặc điểm mạnh nhất trong ADO.NET. Chúng ta hãy nhớ lại rằng trong các phiên bản
trước của ADO.NET, chúng ta cần phải quen với sử dụng các stored procedures để kết hợp thành
thể sử dụng
Không gian tên System.Data.Common mà chứa tất cả các lớp Factory.
- Lớp DbProviderFactory gồm 2 phương thức là GetFactoryClasses và Getfactory. Trong khi
phiên bản cũ phải chịu trách nhiệm lấy tất cả các Provider hỗ trợ thì ngày phiên bản này được sử
dụng để lấy provider cụ thể.
- Ví Dụ:
DbProviderFactory dbProviderFactory =
DbProviderFactories.GetFactory("System.Data.SqlClient");
DbConnection dbConnection = dbProviderFactory.CreateConnection();
8. Đặc điểm Bulk Copy:
- Trước kia, việc sao chép một khối lượng lớn dữ liệu từ nơi lưu trữ dữ liệu tới một bảng trong
CSDL SQL có rất nhiều khó khăn bởi vì sự truy cập dữ liệu lặp lại liên tục được yêu cầu. Đặc
điểm SqlBulkCopy trong ADO.NET 2.0 có thể cho chúng ta sao chép 1 khối lượng lớn dữ liệu
nơi lưu trữ dữ liệu nguồn và bảng dữ liệu đích. Lớp này có thể được sử dụng để xác thực nguồn
và địa chỉ nguồn dữ liệu cho hành động sao chép.
- Ví Dụ:
SqlConnection connectionObjSource = new SqlConnection(Conn_str);
connectionObjSource.Open();
SqlConnection connectionObjTarget = new SqlConnection(Conn_str1);
connectionObjTarget.Open();
SqlCommand sqlCommand = new SqlCommand("Select * from Employee",
connectionObjSource);