Как сделать так, чтобы SQLDataSource вставлялся в представление вместо базовой таблицы?
Мы заменили 20 таблиц консолидированной таблицей, которая разделяет каждый набор данных с помощью "идентификатора набора" (все записи для таблицы "A" имеют set_id, равный 1, таблица "B", равная 2, и т. Д.).
Затем мы построили представления на таблице и переименовали каждое из них, чтобы у них были те же имена, что и у исходных 20 таблиц, с WHERE для добавления set_id. Чистый результат - вставки / обновления / выборки просмотров все еще работают
Мы сделали это так, чтобы наша веб-страница, использующая sqldatasource с "sql command builder", не должна была изменяться. Мы добавили триггер INSTEAD OF INSERT для каждого представления, поэтому при вставке в представление он добавляет set_id и вставляет в консолидированную таблицу. Все идет нормально.
Это частично работает: работают ОБНОВЛЕНИЯ и УДАЛЕНИЯ, потому что они знают фактический идентификатор записи.
Однако INSERT не делает - когда команда фактически выполняется, мы видим "вставку exec sp_executesql в консолидированную таблицу" - вместо того, чтобы попасть в представление, элемент управления источником данных находит базовую таблицу, а затем вставляет ее непосредственно в нее. Если мы попытаемся добавить поля в представления, они затем отобразятся в элементе управления источником данных, но на веб-странице появится настраиваемое поле.
Есть ли способ изменить вещи на стороне базы данных, чтобы заставить ее использовать представление? Мой единственный другой вариант на этом этапе - заменить представления таблицами, добавить триггер AFTER INSERT, UPDATE, DELETE, чтобы сводная информация обновлялась, а затем процесс, чтобы убедиться, что они синхронизированы и проблем нет.
Спасибо заранее.