Я использую typed DataSets
для доступа к данным, настройки их с помощью DataSet Designer
(общая идея описана в этом руководстве).
Для каждой таблицы сначала автоматически создается метод GetData()
. Он возвращает DataTable
, имеющий ту же схему (то есть столбцы), что и базовая таблица в базе данных. Если сейчас я создаю собственный метод с использованием параметра 'Add query'
, который должен возвращать только часть данных (скажем, три столбца из шести), DataTable, возвращаемый автоматически сгенерированным методом, по-прежнему состоит из шести столбцов, а три из них не содержат данные.
Это имеет неприятный побочный эффект: когда я связываю это DataTable
, например, с GridView (очевидно, использующим ObjectDataSource), эти пустые столбцы также появляются в GridView
, поэтому я должен удалить их вручную.
Другая связанная с этим проблема заключается в том, что если я добавлю в соответствующие столбцы SQL-query
данные из другой таблицы (например, с помощью внутренних объединений или подзапросов), эти столбцы, напротив, не будут добавлены в GridView, хотя я могу свяжите их вручную в Boundfield
.
Поэтому, если здесь присутствует кто-то, кто еще не полностью перешел на Entity Framework и может объяснить это поведение и помочь преодолеть эти проблемы, я был бы очень признателен за ваш ответ. Заранее спасибо.
UPDATE:
Я ожидаю найти способ получить DataTable
от метода get, созданного DataSet Designer ontop моего SQL-запроса, который бы отражал результаты этого запроса в его схеме. В уроке говорится, что метод GetData()
создает и заполняет DataTable для вас и возвращает его в качестве возвращаемого значения метода. Итак, интуитивно, почему бы не создать новую таблицу с соответствующими полями.
Так что я надеялся, что делал что-то не так. Или мои ожидания были неправильными, но тогда кто-то мог объяснить мне, почему.