Tải bản đầy đủ (.pdf) (4 trang)

Tài liệu Những đặc điểm mới của ADO.NET 2.0 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (173.6 KB, 4 trang )

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


CreateTableReader, có thể được sử dụng không chỉ để đọc dữ liệu mà còn có thể thực hiện một
số hành động ở trạng thái Disconnect.

2. Tối ưu Tuần tự hóa DataSet:
- Đối tượng DataSet trong ADO.NET là một biểu thị trong bộ nhớ của một tập hợp dữ liệu rời và
cung cấp mô hình lập trình quan hệ nhất quán mà không cần quan tâm đến nguồn dữ liệu. Khi
chúng ta yêu cầu gửi một thể hiện lớp DataSet qua ranh giới của tiến trình, DataSet cần được
theo tuần tự. Nhưng Tuần tự hóa là gì? Tuần tự hóa là một tiến trình chuyển đổi một đối tượng
trong bộ nhớ thành Dòng Byte tuần tự. Tuần tự hóa hầu hết được sử dụng để gọi đối tượng hoặc
giữ trạng thái của đối tượng tới một file hoặc CSDL.
- Thật không may, lớp DataSet trong các phiên bản trước của ADO.NET được sử dụng để truyền
dữ liệu tuần tự như XML, thậm chí nếu bộ tuần tự nhị phân được xác thực. Tuy nhiên trong
ADO.NET 2.0, Tuần tự hóa DataSet đã cải tiến được quy mô lớn và bạn có thể sử dụng thuộc
tính RemotingFormat của lớp DataSet để xác thực dữ liệu được lưu trữ trực tiếp theo định dạng
nhị phân. Vì thế, lớp DataSet trong ADO.NET 2.0 hỗ trợ cả XML và Định dạng tuần tự hóa nhị
phân. Ví dụ sau sẽ chứng mình điều này:

BinaryFormatter binaryFormatter = new BinaryFormatter();

FileStream fileStream = new FileStream("c:\\emp.dat", FileMode.CreateNew);

DataSet empDataSet = GetEmployeeDataSet(); //This is a custom method that creates, populates
and then returns a DataSet instance.

empDataSet.RemotingFormat = SerializationFormat.Binary;

//Serialize the employee Data Set instance as binary. In order to serialize the
//same instance as XML, specify SerializationFormat.XML

binaryFormatter.Serialize(fileStream,empDataSet);


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

chức năng phân trang trong ứng dụng của chúng ta. Bây giờ, với ADO.NET 2.0, sẽ đơn giản hơn
với phương thức ExecutePageReader trong lớp SqlDataReader. Đoạn mã sau sẽ minh họa đặc
điểm này hoạt động như thế nào.

string connectionString = ....; //some connection string

SqlConnection sqlConnection = new SqlConnection(connectionString);

sqlConnection.Open();

SqlCommand sqlCommand = new SqlCommand("Select * from Employee", sqlConnection);

SqlDataReader sqlDataReader =
sqlCommand.ExecutePageReader(CommandBehavior.CloseConnection, 1, 25);

5. Batch Update:
- Batch Update: Cung cấp một cải tiến lớn trong phương thức thể hiện bằng cách tạo một vòng
khứ hồi tới server cho nhiều Batch Updates, thay vì 1 số vòng nếu server CSDL hỗ trợ đặc điểm
batch Updates. Thuộc tính UpdateBatchSize cung cấp số lượng hàng được update trong một lớp.
Giá trị này có thể được thiết lập cho giới hạn của phần thập phân.
6. Truy cập dữ liệu bất đồng bộ:
- Trong phiên bản trước của ADO.NET, các phương thức ExecuteReader, ExecuteScalar và
ExecuteNonQuery thường khóa các luồng đang thực thi hiện tại. Tuy nhiên, ADO.NET 2.0 hỗ
trợ chế độ truy cập dữ liệu bất đồng bộ, những phương thức này cùng với phương thức Begin và
End hỗ trợ sự thực thi bất đồng bộ.
7. Mô hình cung cấp chung:
- trong những phiên bản ADO.NET cũ, nếu bạn muốn thực thi 1 layer truy cập dữ liệu độc lập,
bạn phải thực thi Mô hình thiết kế Factory nơi mà 1 lớp sẽ chịu trách nhiệm trả về các đối tượng
cụ thể: Data Reader, DataAdapter hoặc Connection. Trong DOTNET 2.0, chúng ta có thể tạo các
đoạn mã truy cập dữ liệu độc lập thậm chí không cần tham chiếu đến các lớp cụ

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);


SqlDataReader sqlDataReader =
sqlCommand.ExecuteReader(CommandBehavior.CloseConnection);

DataTable dt = new DataTable("Employee");

SqlBulkCopy sqlBulkcopy = new SqlBulkCopy(connectionObjTarget);

bulkcopy.DestinationTableName = "Employees";

bulkcopy.WriteToServer(sqlDataReader);

Trên đây là m
ột số những đặc điểm mới nổi bật nhất trong ADO.NET 2.0. Những đặc điểm này
sẽ cải thiện được phần thể hiện và giảm số lượng mã tương đối nhiều..
 

×