Đang tải dữ liệu...
ParkOur Việt

 Bản tin | Bài viết | Thư viện | Diễn đàn | Giới thiệu | Liên hệ | Tìm kiếm 
Trưng cầu ý kiến
Khi xây dựng ứng dụng trên .NET, bạn thích và hay thường sử dụng ngôn ngữ lập trình nào?
 
Tìm kiếm
Tìm kiếm nâng cao
Thống kê
Số người truy cập: 4.342.848
Số người trực tuyến: 64
Trong đó có 6 thành viên: tonydang78, lvtuan, nguyen thanh tai, tran van phong, phan_hen, NGUYEN VAN HUY
Trang chủ .NET Việt Nam  >  Bài viết  >  Theo chủ đề  >  CSDL & ADO.NET

Những đặc điểm mới của ADO.NET 2.0

Dương Nguyễn
.NET Việt Nam
   
12:04' AM - Thứ năm, 03/04/2008
- 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.

Zensoft Website - New Features in ADO.NET 2.0

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. 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.

5. 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ộ.

6. 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à GetFactoryClassesGetfactory. 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();

7. Đặ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..

Số lượt đọc:  959  -  Cập nhật lần cuối:  03/04/2008 12:04:13 AM
Bài mới:  
Sql select a random record
14/07/2008 12:04' AM
Import text data to Sql Server
09/05/2008 12:29' AM
Bài đã đăng:
Using ADO.NET
06/03/2007
 Trang chủ | Giới thiệu | Liên hệ BQT | Tìm kiếm