см. эту страницу, https://github.com/ninject/Ninject.Web.Common/wiki/Setting-up-an-IIS-hosted-web-application
, но я предлагаю вам выбрать другие фреймворки, такие как simpleinjector или autofac , которые лучше, чем ninject
на этой странице, http: // www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison
вы можете увидеть тесты широко используемых фреймворков для ioc, и вы можете найти лучшие рамки для вас
Как уже упоминалось в StepUp, классический способ сделать это - использовать AFTER TRIGGER. Пример решения будет запускаться только с UPDATE. В вашем случае вы также хотели бы добавить триггеры для INSERT и DELETE или адаптировать этот один триггер для обработки этих трех типов событий.
Обратите внимание, что использование триггера может повлиять на @@ ROWCOUNT, поэтому может повлиять на функциональность.
Из-за этого, я думаю, что последние версии SQL Server имеют альтернативные механизмы.
Попробуйте использовать триггер после UPDATE
:
CREATE TRIGGER ModDate
ON YourTable
AFTER UPDATE
AS
BEGIN
INSERT INTO dbo.LogTable(DateModified)
VALUES (GETDATE());
PRINT 'New Block Date Added';
END
ОБНОВЛЕНИЕ:
Когда триггер работает, под капотом есть две таблицы:
Данные в этих виртуальных таблицах зависят от того, что вы делаете:
Операция обновления: при обновлении записи сначала старая запись будет помещаться в виртуальную таблицу «DELETED», а вновь обновленная запись удерживается виртуальной таблицей «INSERTED».
Это означает, что вы можете получить старое значение из «DELETED» и текущее обновляемое значение через виртуальную таблицу «INSERTED». Вы можете запросить их как:
-- To get the old record value
SELECT * FROM DELETED
-- To get the updated value
SELECT * FROM INSERTED
Операция удаления: при попытке удалить какую-либо конкретную запись удаленная запись будет вставлена в виртуальную таблицу «УДАЛЕНО».
[118 ]Итак, ваш триггер должен выглядеть так:
CREATE TRIGGER ModDate
ON YourTable
AFTER UPDATE
AS
BEGIN
INSERT INTO dbo.LogTable(DateModified, IdUpdatedRow)
SELECT GETDATE(), INSERTED.YourIdOfUpdatedRow;
PRINT 'New Block Date Added';
END