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

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

Đang tải... (xem toàn văn)

Thông tin tài liệu

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.0Nhữ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   . 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. 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

Ngày đăng: 22/12/2013, 22:16

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan