Как использовать строго типизированный конструктор наборов данных для настройки нескольких обновлений? - PullRequest
0 голосов
/ 05 февраля 2009

Я использую строго типизированный набор данных в качестве ORM для обтекания базы данных Microsoft Access, теперь я ищу способ создать эквивалент

UPDATE table1 
SET table1.nationality = 'england'
WHERE table1.nationality in (SELECT table2.nationality 
                             FROM table2
                             WHERE table2.gender ='M');

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

Если это невозможно, как лучше всего выполнить эту задачу? Я избегаю

  1. Код руки SQL
  2. Хранимые процедуры

столько, сколько я могу.

Редактировать : Я не говорю, что код SQL вручную запрещен, просто он нежелателен. То же самое относится и к хранимым процедурам.

Ответы [ 3 ]

2 голосов
/ 22 февраля 2009

Как Стивен Лоу сказал ... но вы используете MS доступ ... поэтому параметры должны быть "?"

Щелкните правой кнопкой мыши по адаптеру и выберите Добавить запрос, выберите новый оператор Выбрать / Обновить / SQL, затем введите

UPDATE table1 SET 
    table1.nationality = ?
WHERE table1.nationality in (
    select table2.nationality 
    from table2 
    where table2.gender = ?
)

дать ему соответствующее имя, т.е. updateNationalityByGender

updateNationalityByGender(string nationality, string gender)
0 голосов
/ 22 февраля 2009

LINQ to DataSet будет вашим лучшим вариантом.

1) Все строго напечатано.
2) Вы можете использовать IQueryable / LINQ / lambda для запроса
3) Вы можете привязаться к базе данных Access

Sql Express бесплатен, и было бы намного лучше использовать это. Но если бы меня заставили использовать Access, я бы так и сделал.

http://msdn.microsoft.com/en-us/library/bb386977.aspx

0 голосов
/ 16 февраля 2009

вы используете настольный адаптер?

если это так, можете ли вы не просто щелкнуть правой кнопкой мыши и выбрать «Добавить запрос», выбрать новый оператор «Выбрать / Обновить / SQL», а затем ввести

UPDATE table1 SET 
    table1.nationality = @nationality
WHERE table1.nationality in (
    select table2.nationality 
    from table2 
    where table2.gender = @gender
)

и дать ему подходящее имя? Это должно генерировать метод таблицы-адаптера, такой как

updateNationalityByGender(string nationality, string gender)

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

using your.name.space.datasetname.datasetnametableadapter;
...