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

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à 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();
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.. Theo
.NET Việt Nam Số lượt đọc:
959
-
Cập nhật lần cuối:
03/04/2008 12:04:13 AM | Sql select a random record 14/07/2008 12:04' AM Thỉnh thoảng chúng ta muốn lấy một mẫu tin ngẫu nhiên bất kỳ trong 1 table thì làm thế nào. Google 1 fát dc mấy cái, share cho anh em :D
Hướng dẫn cài đặt Sql server 2005 06/06/2008 04:32' PM Hướng dẫn cài đặt bằng hình ảnh, version dành cho developer
Import text data to Sql Server 09/05/2008 12:29' AM Một cách rát hay để bạn có thể Import data vào 1 table trong DB của SQL Server từ một file text với định dạng giá trị theo field terminator: ‘,’,'\t’,'\n’,… Thông thường bạn hay dùng Code programing language như C#, VB, … để giải quyết nhưng với lượng dữ liệu lớn và cấu hình máy không phải mạnh bạn sẽ nhìn thấy rõ impact của việc dùng nó đến performance thế nào ngay. Vì vậy tốt nhất bạn sẽ dùng cách import data bằng ngay t-sql sẽ có performance cao hơn và dễ dàng customize hơn.
Những điểm mới trong SQL 200808/05/2008 11:49' PMSQL
Server 2008 sẽ được phát hành vào khoảng tháng 2 năm 2008, cùng với
phiên bản mới của Visual Studio và Windows. CTP (Community Technology
Preview) của SQL 2008 hiện đã được cung cấp trên internet và bạn có thể
download được từ URL của Microsoft. Trong bài này chúng tôi sẽ nhấn mạnh một số tính năng mới và các lợi ích mang lại của SQL Server 2008. Configuring SQL Server Express 2005 05/05/2008 02:55' PM Are you getting errors connecting to SQL Server Express 2005 via remote client software and yet
have no problem connecting to it on the local machine? Bài đã đăng: Giới thiệu cơ bản về SQL 02/04/2008 12:36' AM SQL
là gì? SQL Server 2000 là một hệ thống quản lý cơ sở dữ liệu
(Relational Database Management System (RDBMS) ) sử dụng Transact-SQL
để trao đổi dữ liệu giữa Client computer và SQL Server computer. Một
RDBMS bao gồm databases, database engine và các ứng dụng dùng để quản
lý dữ liệu và các bộ phận khác nhau trong RDBMS.
Các hàm Ranking mới trong SQL Server 2005 02/04/2008 12:13' AM Cùng
với SQL Server 2005, Microsoft đã giới thiệu một số tính năng mới và
những tính năng này sẽ giúp cho chuyên viên về DBA hay SQL Server dễ
dàng hơn trong việc viết mã và duy trì cơ sở dữ liệu SQL Server. Bài
này sẽ thảo luận về các hàm ranking mới được cung cấp trong SQL Server
2005.
Using ADO.NET06/03/2007 03:51' PM Một bài viết khá hay dành cho các bạn mới làm quen với .NET Tấn công kiểu SQL Injection và các phòng chống trong ASP.NET 07/05/2005 07:46' PM SQL Injection là một trong những kiểu hack web đang dần trở nên phổ biến hiện nay. Bằng cách inject các mã SQL query/command vào input trước khi chuyển cho ứng dụng web xử lí, bạn có thể login mà không cần username và password, remote execution, dump data và lấy root của SQL server. Công cụ dùng để tấn công là một trình duyệt web bất kì, chẳng hạn như Internet Explorer, Netscape, Lynx, ... Vậy khi lập trình web với ASP.NET, chúng ta cần phòng chống như thế nào?
|
|
|
|