Когда я должен быть осторожен при использовании привязки данных в .NET? - PullRequest
5 голосов
/ 14 апреля 2010

Я только начал работать над небольшой командой программистов .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)'

Руководитель нашей команды говорил, что он сгорел, используя привязку данных при работе с элементами управления Sheridan Grid, VB6 и ADO еще в девяностых годах. Он не уверен, в чем именно заключалась проблема, но он помнит, что связывание не сработало, как ожидалось, и вызвало у него некоторые серьезные проблемы. С тех пор они не доверяют привязке данных и загружают данные для всех своих элементов управления вручную.

Причина, по которой разговор даже начался, заключалась в том, что привязка данных была очень простой, и мне действительно нравилось отделять представление данных (в данном случае сетку данных) от источника данных в памяти (в данном случае данных Таблица). «Загрузка» данных строка за строкой в ​​сетку, казалось, сломала это различие. Я также заметил, что с появлением XAML в WPF и Silverlight привязка данных кажется необходимой, чтобы иметь возможность аккуратно соединить код XAML дизайнера с вашими данными.

Когда следует с осторожностью использовать привязку данных в .NET?

Ответы [ 4 ]

7 голосов
/ 14 апреля 2010

Вы должны быть осторожны, когда используете что-нибудь , которое вы не понимаете полностью.

Признаюсь, что не очень хорошо разбираешься в привязке данных, но я все же считаю, что позиция твоей команды немного экстремальна и реакционна.

Мое эмпирическое правило было бы; не полагайтесь на что-то, пока не поймете это. Как только вы понимаете это, вам не нужны мои (или кто-либо еще) эмпирические правила.

:)

Некоторые ссылки, связанные с предупреждениями с использованием привязки данных:

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

Привязка данных в C # и .NET

3 голосов
/ 14 апреля 2010

Если все, что вы делаете, это отображение данных, то, по моему мнению, нет причин НЕ использовать привязку данных.

Я тоже из мира VB6, где привязка данных снова и снова нас кусала, поэтому мыстандарты и обходные пути, чтобы не использовать его.

Войдите в .NET, где привязка данных настолько гибка, насколько вам нужно.Я по-настоящему оценил силу, которую теперь имеет привязка.

Вы пишете много ненужного кода, отказываясь от встроенных возможностей.

Вы даже можете привязывать объекты на экране, например текстовые полясвойства в классах.Проверьте эту ссылку для обзора привязки данных winforms.http://msdn.microsoft.com/en-us/library/ef2xyb33(v=VS.100).aspx

2 голосов
/ 14 апреля 2010

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

вещи кардинально изменились. ЛУЧШЕ в .Net

Привязка данных к заполнению вручную

Программисты VB6 остались в стороне от контроля данных ADO и связанных элементов управления из-за некоторых причин производительности. Я делаю шаг в сторону VB.NET и у меня такое чувство, что связанные элементы управления не так уж и плохи.

1 голос
/ 14 апреля 2010

Как и все остальное, вы можете использовать его правильно или ненадлежащим образом. Временами привязка данных может быть очень мощной, но, как упоминалось ранее, вы должны знать, как правильно ее использовать.

Как правило, в .NET (и его инструментах) существует два типа привязки: автоматическая и ручная. Автоматическое связывание - это когда VS создает все для вас, а вы перетаскиваете. Не делай этого. КОГДА-ЛИБО. Единственным исключением для этого будут эти новые дополнения к Silverlight 4 в VS2010. Это единственное автоматическое связывание, выполненное правильно.

С другой стороны, ручное связывание данных с использованием DataSets в качестве единицы работ, CurrencyManager и других вещей может быть чрезвычайно полезным (речь идет о WinNET форм .NET 2.0, верно?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...