ASP.NET SqlDataSource обновить и создать ссылку FK - PullRequest
0 голосов
/ 27 мая 2010

Краткая версия:

У меня есть сеточное представление, привязанное к источнику данных, который имеет команду SelectCommand с левым соединением, потому что FK может быть нулевым. При обновлении я хочу создать запись в таблице FK, если FK равен нулю, а затем обновить родительскую таблицу с новым идентификатором записей. Возможно ли это сделать только с SqlDataSources?

Подробная версия:

У меня есть две таблицы: компания и адрес. Столбец Company.AddressId может быть пустым. На моей странице ascx я использую SqlDataSource для выбора левого объединения компании и адреса и GridView для отображения результатов. Благодаря тому, что мои UpdateCommand и DeleteCommand из SqlDataSource выполняют две инструкции, разделенные точкой с запятой, я могу использовать функциональность GridView Edit и Delete для одновременного обновления обеих таблиц.

Проблема в том, что Company.AddressId равен нулю. Мне нужно, чтобы источник данных создал запись в таблице адресов, а затем обновил таблицу Company новым Address.ID, а затем продолжил обновление как обычно. Я хотел бы сделать это только с источниками данных, если это возможно для согласованности / простоты ради. Возможно ли, чтобы мой источник данных сделал это, или, возможно, добавил второй источник данных на страницу, чтобы справиться с некоторыми из этих проблем?

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

Спасибо.

1 Ответ

0 голосов
/ 27 мая 2010

выполнить два оператора, разделенных запятая

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

Однако, чтобы вы знали, что если у вас много трафика или пользователи используют приложение одновременно, вы можете столкнуться с одновременными проблемами, когда один пользователь делает что-то, что влияет на другого пользователя, и неожиданные результаты могут каскадироваться и портить ваши данные. В общем, для таких вещей, как то, что вы делаете - INSERT и UPDATE с использованием первичных или внешних ключей, обычно используются транзакции SQL. Но вы должны выполнять их как хранимые процедуры (или функции) SQL в вашей базе данных SQL. Вы по-прежнему можете вызывать их из SqlDataSource, просто сообщая, что вы вызываете хранимую процедуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...