|
|
|
SqlCommandBuilder в C# генерит странный UPDATE - не туда, откуда сделан SELECT
|
|||
|---|---|---|---|
|
#18+
Создал я в базе представление (VIEW) и делаю из неё SELECT. Затем в него же хочу сделать UPDATE. Я рассчитывал, что SqlCommandBuilder будет автоматически генерировать UPDATE в мой VIEW, а он откуда-то узнал имя таблицы и создаёт команду UPDATE в таблицу! Я думал скрыть от пользователя таблицу, дать ему определённые колонки на просмотр, и права UPDATE дать на VIEW (но не на таблицу), но не тут-то было. Через трассировщик SQL-запросов (SQL Server Profiler) с удивлением наблюдаю, что SqlCommandBuilder создаёт команду UPDATE к таблице. Естественно, возникает ошибка, так как прав на UPDATE таблицы я не давал (я дал права на VIEW). См. ниже какие запросы выполняются на сервере (первый ADO.NET создал из моей команды SELECT, а второй создал SqlCommandBuilder). Видно, что SELECT из asktex.PATENTS_VIEW1, а UPDATE в таблицу asktex.PATENTS. Код: sql 1. 2. 3. 4. Отсюда вопросы. 1. Непонятно, откуда SqlCommandBuilder узнал имя таблицы (в моей программе оно нигде не упоминается). 2. Можно ли заставить его генерить UPDATE к VIEW, а не к таблице? Очевидно, что в моём случае можно дать права пользователям на UPDATE на таблицу PATENTS и успокоиться (или отказаться от использования SqlCommandBuilder, т.е. создавать запросы вручную), но хочется понять в чём дело и можно ли заставить SqlCommandBuilder выполнять UPDATE туда же, откуда выполнен SELECT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 19:23 |
|
||
|
SqlCommandBuilder в C# генерит странный UPDATE - не туда, откуда сделан SELECT
|
|||
|---|---|---|---|
|
#18+
Забыл добавить, что речь идёт о Visual Studio 2005 и .NET 2.0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2014, 19:26 |
|
||
|
SqlCommandBuilder в C# генерит странный UPDATE - не туда, откуда сделан SELECT
|
|||
|---|---|---|---|
|
#18+
авторЯ рассчитывал, что SqlCommandBuilder будет автоматически генерировать UPDATE в мой VIEW, а он откуда-то узнал имя таблицы и создаёт команду UPDATE в таблицу! Ну, видимо, разработчики ADO.NET решили не заморачиваться с проверками, чего там у тебя в select, и сразу тянут исходные таблицы из метаданных обновляемого поля ( см. INFORMATION_SCHEMA.COLUMNS, INFORMATION_SCHEMA.VIEW_COLUMN_USAGE ). Так что указывай UpdateCommand ручками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2014, 13:55 |
|
||
|
|

start [/forum/topic.php?fid=17&tid=1349843]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 272ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...