1

Используется сильно типизированный набор данных.Использование сильно типизированного DataSet в проекте VB.Net

В настоящее время я работаю над проектом, разработанных с использованием VB.Net в Visual Studio 2010.

Ранее они использовали SQL-запросы непосредственно в SqlCommand из System.Data.SqlClient, но после того, как я сдвинут все, чтобы сильно типизированных DataSet и начал использовать где каждый адаптеров таблиц ..

Теперь я просто хочу спросить, что этот путь хорош для проекта ... или я должен перейти обратно к старому, используя только SqlCommands

Или есть ли способ сделать Sql DataBase хорошим способом, потому что ERP и m ost кода для доступа к данным.

ответ

1

Мы постоянно используем сильно типизированные наборы данных.

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

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

Существует так много выигрышных вещей с сильно типизированными наборами данных, поэтому я никогда не вернусь.

+0

, но когда вы видите файл кода с сильным типом данных, он имеет почти 50 000 строк кода всего за 20 таблиц. Это хорошо, и кто-то сказал мне, что сильно типизированный набор данных потребляет много времени для выполнения, потому что он набирает каждый вещь –

+0

Для меня эти накладные расходы ничем не отличаются от функций, которые я использую. У меня есть webservice-проекты с 40-50 наборами данных в нем, обработка всех данных между сервером и клиентами без каких-либо проблем с производительностью. Но все о том, что вам нужно. Конечно, есть случаи, когда наборы данных не являются решением. Но если вы не используете наборы данных из-за * накладных расходов, возможно, что-то еще проблема ... – Stefan

+0

Я бы никогда не рекомендовал беспокоиться о производительности, прежде чем производительность на самом деле проблема. Вы могли бы потратить 6 месяцев на написание кода, который будет выполняться в тике, а не миллисекундах, но может ли пользователь заметить какую-либо разницу? Мораль истории - если ее более эффективная практика и ее легче поддерживать без чудовищных накладных расходов, сделайте это именно так. – pingoo

0

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

+0

Обновление структур таблиц при использовании sql-запросов, посыпанных повсюду в исходном коде, является болью. О его дисциплине. Измените таблицу, откройте DS и измените таблицу, затем исправьте места, которые затронуты (вы видите все в окне ошибки). Старый способ: изменить таблицу, перейти к исходному коду и попытаться найти все запросы, которые затронуты, пропустить некоторые, а затем попробовать найти все места, где используются поля, пропустить некоторые. Узнайте, когда программа работает, в худшем случае клиент ее найдет, а не вы. Когда-то глупые программисты используют row.fields (0) вместо имени поля, очень интересно их искать. – Stefan

0

Если вы когда-либо захотите переместить свои данные по проводу на другие платформы (silverlight, веб-сервисы, wcf-сервисы и т. Д.), То использование любого набора данных приведет вас в угол.

То, как мы решили это, состоит в том, чтобы иметь классы, список свойств которых точно соответствует базе данных. Чтобы переместить данные в базу данных и из нее, мы используем рефлексию для сопоставления параметров хранимой процедуры или создания динамических операторов SQL в зависимости от обстоятельств и платформы.

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

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

В качестве дополнительного преимущества этот подход устраняет тесную связь между базой данных и структурой бизнес-объекта. Мы можем использовать один и тот же код доступа к данным и классы бизнес-объектов для баз данных SQL Server, Oracle, Sqlite и SqlServerCE. Этот код используется для создания приложений в приложениях Windows, PocketPC, Web, iPad и Android; все мобильные приложения используют локальные базы данных, специфичные для платформы, но используют общий код доступа к данным.

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

Смежные вопросы