как возвратить использование одной строки TableAdapter

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

MyItemsDataTable myItemsDataTable = Adapter.GetAllItems();  

но если нам нужна только одна строка, в результате говорят, что объект, который имеет конкретный идентификатор

MyItemsDataSet.MyItemRow  itemRow = Adapter.GetItemByID(id)[0];  

как я могу сделать Адаптер для возврата одной строки вместо DataTable. Я использую мастер Разработчика DataSet и даю мне две опции для включения оператора SELECT

Use SQL statements -->  Select which return rows
(returns one or many rows)
Use SQL statements -->  Select which returns a single value rows
(returns a single value) 

и использование подобного запроса

SELECT * from
FROM  FOOD_ITEMS
WHERE (ITEM_ID = @ITEM_ID)

Я должен переопределить этот метод или добавить новый?

public virtual MyItemsDataSet.MyItemsDataTable  GetItemByID(int ITEM_ID)

вероятно, что-то как

public virtual MyItemsDataSet.MyItemRow GetItemByID(int ITEM_ID)

Если так, я не могу сделать этого в сгенерированном файле разработчика!! где я могу сделать это?

Спасибо

5
задан Asad 15 January 2010 в 15:21
поделиться

2 ответа

Создайте новый оператор выбора в дизайнере набора данных. Используйте Выберите, какие возвратные строки . Затем используйте следующий запрос:

SELECT TOP 1 * from 
FROM  FOOD_ITEMS 
WHERE (ITEM_ID = @ITEM_ID)

Сохранить этот метод как getFirstitembyId () или что-то подобное.


Для гугуры там многие неживые базы данных (например, MySQL) будут использовать следующий синтаксис вместо этого:

SELECT * from 
FROM  FOOD_ITEMS 
WHERE (ITEM_ID = @ITEM_ID)
LIMIT 1
3
ответ дан 14 December 2019 в 19:13
поделиться

Я считаю, что единственный способ - получить доступ к первому ряду в таблице данных через индекс, поскольку вы делаете с этим запросом -

MyItemsDataSet.MyItemRow  itemRow = Adapter.GetItemByID(id)[0];  

Другое, что вы должны рассмотреть, - это сброс таблицы адаптеров и использует вместо этого Linq2SQL. LINQ поддерживает метод .first (), который имеет именно то, что вы хотите.

2
ответ дан 14 December 2019 в 19:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: