Автоматически обновлять дату последнего изменения в приложении ASP.Net MVC - PullRequest
1 голос
/ 13 марта 2009

Общая информация:

  1. Приложение ASP.NET MVC

  2. с использованием ADO.NET Entity Framework

  3. SQL Server 2005

У меня есть несколько таблиц, которые более или менее имеют иерархическую структуру, состоящую в основном из отношений «один ко многим». У большинства, если не у всех, есть столбец «Последние изменения», и мой вопрос заключается в том, как лучше всего убедиться, что этот столбец обновлен должным образом по всей иерархии. Я бы предпочел, чтобы это делалось автоматически на уровне базы данных, я просто не знаю, как это сделать. Коллега упомянул триггеры, в то же время упомянув, что они могут быть не лучшим вариантом. Я не знаю, делать ли это в классе, который я использую для управления моделью или на уровне базы данных. Я бы предпочел не обновлять каждую ссылку по отдельности, поскольку это утомительно, и мне пришлось бы создавать кучу отдельных функций для каждого уровня.

Мои вопросы:

  1. Есть ли способ сделать это на уровне базы данных с помощью хранимой процедуры, которую я мог бы вызвать?

  2. Если нет, то что бы вы предложили мне сделать со стороны приложения, чтобы лучше всего справиться с этим программно?

Если какая-то дополнительная информация будет полезна, я буду рад предоставить ее, мне было трудно понять, как вообще задать этот вопрос.

Ответы [ 2 ]

1 голос
/ 13 марта 2009

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

  • Используйте триггер для распространения изменений в вашей иерархии. Это может быть лучше, когда вы пишете один раз и много читаете. Например: обновить адрес, и последний измененный будет установлен на родительские записи, а также сам адрес.

  • Просто обновите одну последнюю модифицированную и затем запросите все, когда вам нужно увидеть, когда что-то было изменено. Это может быть лучше, если вы много пишете, но читаете очень мало. Например: обновлять только последний измененный адрес. Когда вы запрашиваете измененные записи, запрашивайте записи, которые были изменены в последний раз, или записи с адресами, которые были изменены в последний раз.

Трудно сказать, не зная вашей ситуации. Если вам нужно обновить все связанные даты последнего изменения, я бы пошёл по триггерному маршруту, чтобы все было просто.

1 голос
/ 13 марта 2009

У другого человека был такой же / похожий вопрос здесь. Их мнение использует триггер. Вот полный ответ: Сервер Sql (Entity Framework): столбцы созданного, обновленного столбца

...