2011-02-07 41 views
9

Bộ dữ liệu được nhập mạnh là gì? Ai có thể giải thích với một ví dụ rõ ràng và ngắn gọn?Bộ dữ liệu được nhập mạnh so với tập dữ liệu yếu được nhập

Ngoài ra, sự khác nhau giữa tập dữ liệu được nhập mạnh mẽ và yếu kém là gì?

+0

Cá nhân, tôi không chắc chắn tôi khuyên bạn nên * hoặc * trong hầu hết các mã; trừ khi bạn là một: sử dụng SqlBulkCopy từ trong bộ nhớ, hoặc b: viết một công cụ truy vấn chung như SSMS ... –

+1

Bạn đã thử nhìn vào MSDN về điều này chưa? http://msdn.microsoft.com/en-us/library/esbykkzb(v=VS.100).aspx –

+0

Cả hai đều mô tả những điều bạn không nên sử dụng. Bạn nên sử dụng ORM thay vào đó :) – Stilgar

Trả lời

3

Tôi đoán rằng sự phân biệt đi như vậy:

datasets gõ mạnh là nơi tập dữ liệu biết loại kết hợp với mỗi cột tại hoặc trước khi dữ liệu được lấp đầy.

Bộ dữ liệu được nhập yếu buộc tập dữ liệu phải đoán loại có thể là gì. Trong trường hợp cột có thể là số không HOẶC một số, tập dữ liệu có thể đoán sai rằng loại dự định là một chuỗi và không phải là một giá trị rỗng.

+0

Một tập dữ liệu (đã nhập hoặc chưa nhập) sẽ không phải đoán kiểu dữ liệu. –

9

Tập dữ liệu được đánh máy mạnh được tạo dựa trên cơ sở của Lược đồ Db. Chúng bao gồm các lớp dẫn xuất từ ​​DataSet, DataTable và DataRow. Các cột Db trở thành các thuộc tính được gõ chính xác của lớp dẫn xuất TableRow.

An Tập dữ liệu chưa được nhập chỉ đơn giản là việc sử dụng trực tiếp Tập dữ liệu chứ không phải của hậu duệ. Tất cả truy cập cột phải là loại truyền.

Không có thứ gì như Bộ dữ liệu được đánh máy yếu.

7

Typed Versus untyped Datasets Một gõ dữ liệu là một tập dữ liệu đó là lần đầu tiên có nguồn gốc từ các lớp cơ sở DataSet và sau đó sử dụng thông tin từ các nhà thiết kế Dataset, được lưu trữ trong một. xsd tập tin, để tạo ra một lớp tập dữ liệu mạnh mẽ mới gõ. Thông tin từ lược đồ (bảng, cột, v.v.) được tạo và biên dịch thành lớp tập dữ liệu mới này như một tập các đối tượng và thuộc tính hạng nhất. Bởi vì một tập dữ liệu đã nhập kế thừa từ lớp DataSet cơ sở, lớp đã nhập thừa nhận tất cả các chức năng của lớp DataSet và có thể được sử dụng với các phương thức lấy một thể hiện của một lớp DataSet làm tham số

, không có lược đồ tích hợp tương ứng. Như trong tập dữ liệu đã nhập, một tập dữ liệu chưa được nhập có chứa các bảng, cột, v.v. - nhưng chúng chỉ được hiển thị dưới dạng bộ sưu tập. (Tuy nhiên, sau khi tạo thủ công các bảng và các phần tử dữ liệu khác trong tập dữ liệu chưa được nhập, bạn có thể xuất cấu trúc của tập dữ liệu làm lược đồ bằng phương thức WriteXmlSchema của tập dữ liệu.)

Truy cập dữ liệu tương phản trong Tập dữ liệu đã nhập và chưa được phân loại Lớp cho bộ dữ liệu đã nhập có một mô hình đối tượng trong đó các thuộc tính của nó lấy tên thực tế của các bảng và các cột.Ví dụ, nếu bạn đang làm việc với một tập dữ liệu đánh máy, bạn có thể tham khảo một cột sử dụng mã như sau:

C# VBCopy

// This accesses the CustomerID column in the first row of the Customers table. 
string customerIDValue = northwindDataSet.Customers[0].CustomerID; 

J # Sao chép

// This accesses the CustomerID column in the first row of the Customers table. 
String customerIDValue = 
    northwindDataSet.get_Customers().get_Item(0).get_CustomerID(); 

Ngược , nếu bạn đang làm việc với tập dữ liệu chưa được nhập, mã tương đương là:

C# VBCopy

string customerIDValue = (string) 
    dataset1.Tables["Customers"].Rows[0]["CustomerID"]; 

J # Sao chép

String customerIDValue = (String) 
    dataset1.get_Tables().get_Item("Customers").get_Rows().get_Item(0).get_Item("CustomerID"); 

truy cập Typed là không chỉ dễ dàng hơn để đọc, nhưng được hỗ trợ đầy đủ bởi IntelliSense trong Visual Studio Mã Editor. Ngoài việc làm việc dễ dàng hơn, cú pháp cho tập dữ liệu đã nhập cung cấp loại kiểm tra tại thời gian biên dịch, giảm đáng kể khả năng xảy ra lỗi khi chỉ định giá trị cho các thành viên của tập dữ liệu. Nếu bạn thay đổi tên của một cột trong DataSet của bạn và sau đó biên dịch ứng dụng của bạn, bạn nhận được một lỗi xây dựng. Bằng cách nhấp đúp vào lỗi xây dựng trong Danh sách nhiệm vụ, bạn có thể truy cập trực tiếp vào dòng hoặc các dòng mã tham chiếu đến tên cột cũ. Truy cập vào bảng và cột trong tập dữ liệu đã nhập cũng nhanh hơn một chút vào thời gian chạy vì truy cập được xác định tại thời gian biên dịch, không thông qua bộ sưu tập tại thời gian chạy.

Mặc dù tập dữ liệu đã nhập có nhiều lợi thế, nhưng có nhiều trường hợp khác nhau theo đó tập dữ liệu chưa được định dạng sẽ hữu ích. Kịch bản rõ ràng nhất là khi không có lược đồ nào có sẵn cho tập dữ liệu. Điều này có thể xảy ra, ví dụ, nếu ứng dụng của bạn đang tương tác với một thành phần trả về một tập dữ liệu, nhưng bạn không biết trước cấu trúc của nó là gì. Tương tự, có những lúc bạn đang làm việc với dữ liệu không có cấu trúc tĩnh, có thể dự đoán được; trong trường hợp đó, việc sử dụng tập dữ liệu đã nhập là không thực tế, vì bạn sẽ phải tạo lại nhóm tập dữ liệu đã nhập với mỗi thay đổi trong cấu trúc dữ liệu.

Nói chung, có nhiều lần bạn có thể tạo tập dữ liệu động mà không có sẵn lược đồ. Trong trường hợp đó, tập dữ liệu chỉ đơn giản là một cấu trúc thuận tiện mà bạn có thể giữ thông tin, miễn là dữ liệu có thể được biểu diễn theo một cách quan hệ. Đồng thời, bạn có thể tận dụng các khả năng của tập dữ liệu, chẳng hạn như khả năng tuần tự hóa thông tin để chuyển sang một quy trình khác hoặc để viết ra một tệp XML.

Các vấn đề liên quan