2010-04-13 24 views
5

Tôi mới bắt đầu làm việc với một nhóm nhỏ các lập trình viên .NET cách đây một tháng và gần đây đã thảo luận với nhóm của chúng tôi về việc tại sao chúng tôi không sử dụng databinding trong mã của chúng tôi. Mỗi khi chúng ta làm việc với một lưới dữ liệu, chúng ta lặp qua một bảng dữ liệu và điền vào hàng lưới theo hàng; mã thường trông giống như sau:Khi nào tôi nên thận trọng khi sử dụng liên kết dữ liệu trong .NET?

Dim dt as DataTable = FuncLib.GetData("spGetTheData ...") 
Dim i As Integer 

For i = 0 To dt.Rows.Length - 1 '(not sure why we do not use a for each here)' 
    gridRow = grid.Rows.Add() 
    gridRow(constantProductID).Value = dt("ProductID").Value 
    gridRow(constantProductDesc).Value = dt("ProductDescription").Value 
Next 

'(I am probably missing something in the code, but that is basically it)' 

đội dẫn chúng tôi được nói rằng ông đã bị đốt cháy sử dụng dữ liệu ràng buộc khi làm việc với các điều khiển Sheridan Lưới, VB6, và ADO recordset trở lại trong những năm chín mươi. Anh ta không chắc vấn đề chính xác là gì, nhưng anh ta nhớ rằng ràng buộc không hoạt động như mong đợi và gây ra cho anh ta một số vấn đề lớn. Kể từ đó, họ đã không tin tưởng ràng buộc dữ liệu và tải dữ liệu cho tất cả các điều khiển của họ bằng tay.

Lý do cuộc hội thoại thậm chí còn xuất hiện là vì tôi thấy dữ liệu ràng buộc rất đơn giản và thực sự thích tách dữ liệu trình bày (trong trường hợp này là lưới dữ liệu) từ nguồn dữ liệu trong bộ nhớ (trong trường hợp này, bảng dữ liệu). "Đang tải" hàng dữ liệu theo hàng vào lưới dường như phá vỡ sự khác biệt này. Tôi cũng quan sát thấy rằng với sự ra đời của XAML trong WPF và Silverlight, ràng buộc dữ liệu có vẻ giống như một-phải có để có thể làm sạch mã XAML của một nhà thiết kế với dữ liệu của bạn.

Khi nào tôi nên thận trọng khi sử dụng liên kết dữ liệu trong .NET?

+1

Gắn kết trong .Net là _completely_ khác với databinding trong VB6. – SLaks

+0

@SLaks Tôi tưởng tượng như vậy. Bạn có biết bất kỳ tài liệu tham khảo tốt mà tôi có thể đọc mà làm cho trường hợp đó rõ ràng? –

+3

đoạn mã này trông lỗi thời trong ít nhất 10 năm. – Andrey

Trả lời

3

Nếu tất cả những gì bạn đang làm là hiển thị dữ liệu, theo ý kiến ​​của tôi, không có lý do gì để KHÔNG sử dụng dữ liệu.

Tôi cũng đến từ thế giới VB6, nơi dữ liệu liên tục cắn chúng tôi một lần nữa và một lần nữa, vì vậy chúng tôi đã có các tiêu chuẩn và cách giải quyết để không sử dụng nó.

Nhập .NET, nơi dữ liệu được linh hoạt như bạn cần. Tôi đã đến để thực sự đánh giá cao sức mạnh mà ràng buộc có bây giờ.

Bạn đang viết nhiều mã không cần thiết bằng cách từ chối khả năng tích hợp sẵn.

Bạn thậm chí có thể ràng buộc các đối tượng trên màn hình như hộp văn bản vào các thuộc tính trong lớp học. Kiểm tra liên kết này để biết tổng quan về dữ liệu winforms. http://msdn.microsoft.com/en-us/library/ef2xyb33(v=VS.100).aspx

+0

@Jeremy cảm ơn bạn đã nhập và liên kết với MSDN. Tôi cho rằng đó phải là một điểm đến rõ ràng, nhưng tôi thậm chí không nghĩ về nó. Hóa ra có rất nhiều thông tin ở đó! –

7

Bạn nên thận trọng khi sử dụng mọi thứ bạn không hiểu đầy đủ.

Tôi sẽ thú nhận không hiểu rõ ràng về ràng buộc dữ liệu, nhưng tôi vẫn cho rằng vị trí của nhóm trưởng của bạn là một chút cực đoan và phản động.

Quy tắc chung của tôi sẽ là; không dựa vào một cái gì đó cho đến khi bạn hiểu nó. Một khi bạn hiểu nó, bạn không cần quy tắc của tôi (hoặc bất cứ ai elses) của ngón tay cái.

:)

Một số liên kết liên quan đến hãy cẩn thận sử dụng liên kết dữ liệu:

http://travisgosselin.com/blog/?p=46

Databinding in C# and .NET

+0

lời khuyên tuyệt vời :-) –

+0

Tôi hoàn toàn đồng ý. Đó là lý do tại sao tôi muốn hiểu rõ hơn những gì đang xảy ra với ràng buộc dữ liệu. Với tôi, tôi thà hiểu rõ hơn về databinding trong .NET và * rồi * chọn không sử dụng nó thay vì tránh nó hoàn toàn. –

+0

Tôi không biết rằng bạn cần phải hiểu đầy đủ một cấu trúc trước khi sử dụng nó (chèn tương tự xe/động cơ ở đây). Nhưng bạn nên hiểu khi nào và khi nào không sử dụng nó. – BenV

1

Như mọi thứ khác, bạn có thể sử dụng nó đúng cách, hoặc không đúng cách. DataBinding có thể rất mạnh mẽ ở lần, nhưng như đã đề cập trước đó, bạn phải biết cách sử dụng nó một cách chính xác.

Nói chung, có hai loại ràng buộc trong .NET (và các công cụ của nó): tự động và thủ công. Ràng buộc tự động là khi VS tạo mọi thứ cho bạn và bạn kéo và thả. Đừng làm thế. KHÔNG BAO GIỜ. Chỉ có ngoại lệ cho điều này sẽ là những bổ sung mới cho Silverlight 4 trong VS2010. Nó là ràng buộc tự động duy nhất được thực hiện đúng cách. Mặt khác, databinding thủ công bằng cách sử dụng DataSets như Unit of Works, CurrencyManagers và các công cụ khác, có thể cực kỳ hữu ích (nói về .NET 2.0 WinForms ở đây, phải không?).

+0

Vâng, chúng tôi đang sử dụng .NET 2.0 WinForms. Tôi tự hỏi nếu bạn có thể mở rộng về những gì bạn có nghĩa là bởi "hướng dẫn sử dụng databinding ... và các công cụ khác, có thể cực kỳ hữu ích." Bạn có thể đưa ra một ví dụ không? Việc đó thật sự hữu ích. –

+0

Vâng, theo databinding thủ công tôi có nghĩa là ràng buộc trực tiếp đến điều khiển trong mã, sử dụng DataSource và các tài sản khác. Kiểm tra điều này: http://www.akadia.com/services/dotnet_databinding.html –

+0

Chỉ cần thêm, bạn không ràng buộc với DataTables hoặc các đối tượng POCO tùy chỉnh, nếu bạn thích chúng. Ràng buộc hoạt động một trong hai cách. Tôi đã sử dụng nó nhiều lần để tạo các biểu mẫu thao tác dữ liệu khá thú vị. –

2

http://www.knowdotnet.com/articles/differences.html

mọi thứ đã thay đổi đáng kể cho tốt hơn trong.Net

Data Binding vs Manual Population

lập trình VB6 đã ở cách xa sự kiểm soát dữ liệu ADO và điều khiển ràng buộc vì một số lý do hiệu suất. Tôi đang làm cho việc chuyển sang VB.NET và có cảm giác rằng các điều khiển bị ràng buộc không quá xấu xa sau tất cả.

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