Каков наилучший способ сделать много версий ((или историю)) строк таблицы - PullRequest
0 голосов
/ 29 июня 2010

Привет всем,

Я пытаюсь сделать так, чтобы приложение поддерживало ведение журнала, но я очень новичок в этом подходе.

  • Я собирался добавить новые таблицы в свою базу данных для каждой таблицы, для которой я хочу поддерживать запись в нее, а затем обработать это с помощью моего DAL "EF в моем подходе".Но это заставит меня добавить много работы как к БД, так и к DAL.

  • Так что мне интересно, есть ли более простой способ сделать это ?? НадеюсьНе знаете, может быть, что-то вроде «Провайдера журналов» или триггеров SQL Server или что-то в этом роде?

Пожалуйста, поддержите меня своими советами, даже в общих идеях о поддержке журналирования.

...

Edit1:

Например, предположим, что у меня есть таблица "Персоны" иМодель "Персона" Я хочу поддержать регистрацию в моей таблице персон , поэтому я хочу знать, когда и что произошло с данными о человеке в конкретное время .Надеюсь, дело ясное!я просто понимаю, что Триггеры - это просто лучший способ сделать то, что я хочу сделать .

еще раз извините;}

Ответы [ 3 ]

0 голосов
/ 29 июня 2010

В настоящее время я работаю над приложением ASP.NET MVC.Это дает возможность добавлять пользовательские фильтры в методы действий.Это классы атрибутов, унаследованные от System.Web.Mvc.ActionFilterAttribute.

. Я просто украшаю любой метод действия, который я хочу записать (или класс контроллера для всех методов), чем-то вроде '[Log (LogLevel.High)]'.Класс LogAttribute, который обеспечивает это, зависит от моего интерфейса ILoggingProvider, который содержит метод Write (конкретные реализации регистрируются в базе данных).Я обрабатываю событие OnActionExecuted в классе LogAttribute и использую аргументы событий для создания данных для передачи в метод Write.Если вы также хотите регистрировать результаты, вы можете также зарегистрировать событие OnResultExecuted.

0 голосов
/ 30 июня 2010

Я видел много примеров, которые используют «Триггеры» для создания своего рода «Истории» для таблицы.

И они создали триггеры для «Вставка, обновление и удаление» только для тех таблиц, которые им нужны.

Я считаю, что это очень хорошо, особенно если мне не нужно вмешиваться из моего приложения.

Но я все еще боюсь, что триггеры могут повлиять на производительность !!!

Так что же вы посоветуете?

0 голосов
/ 29 июня 2010

То, что сейчас приходит на ум, использует перехват (например, Unity для перехвата экземпляров или типов).

Я использовал это некоторое время назад для попытки возврата к локальным данным (кэшированным из предыдущих запросов) при сбое служб wcf.

Так что, я думаю, вы могли бы перехватывать вызовы ваших классов DALи попробуйте записать информацию в событиях до / после конвейера.

Для получения дополнительной информации вы можете проверить эту ссылку .

Другим подходом может быть внедрениекласс logger в ваших классах DAL (которые, мы надеемся, имеют базовый класс DAL) с использованием контейнера IoC (снова Unity или MEF, если вы находитесь в .NET 4.0).

Если что-то еще приходит мне в голову, я`дам вам знать.

С уважением ...

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