Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / История изменения данных БД / 13 сообщений из 13, страница 1 из 1
20.04.2016, 05:25
    #39219709
asm-msadev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
Народ, кто как ведет аудит изменения данных? Проект asp.net mvc, бд sql server. Нужно хранить историю изменения записей в бд. Например, есть таблица Users и класс User. Необходимо видеть кто, когда, и какое поле изменил с какого значение на какое. Кроме как триггеров никаких идей нет. Используем code first.
...
Рейтинг: 0 / 0
20.04.2016, 05:44
    #39219711
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
asm-msadevНарод, кто как ведет аудит изменения данных?Хранение изменений в EAV структуре данных. Заполнение триггерами в БД. Но это старый проект, тогда не было EF.
asm-msadevИспользуем code first.Отслеживать изменения можно и через DbContext, в момент вызова SaveChanges.

Оба подхода имеют преимущества, недостатки и право на жизнь.
...
Рейтинг: 0 / 0
20.04.2016, 07:12
    #39219729
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
asm-msadev,

CQRS + Event Sourcing
...
Рейтинг: 0 / 0
20.04.2016, 09:30
    #39219822
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
asm-msadev, а у Вас приложение при каждом запросе подключается к БД от имени конкретного пользователя?
...
Рейтинг: 0 / 0
20.04.2016, 09:37
    #39219830
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
asm-msadev,

в Ms sql есть механизм CDC для этого
...
Рейтинг: 0 / 0
20.04.2016, 09:38
    #39219831
asm-msadev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
skyANA, да. Учетная запись IISa. => Триггерами не получится вычислить пользователя?
...
Рейтинг: 0 / 0
20.04.2016, 09:43
    #39219836
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
asm-msadevskyANA, да. Учетная запись IISa. => Триггерами не получится вычислить пользователя?
Да, триггерами не получится..
...
Рейтинг: 0 / 0
20.04.2016, 09:47
    #39219838
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
monstrUasm-msadev,

в Ms sql есть механизм CDC для этого
У ТСа приложение ходит в базу из-под учетки, что прописана в настройках IIS.
При помощи какой магии CDC отследит конкретного пользователя, кто изменил что-то?
...
Рейтинг: 0 / 0
20.04.2016, 09:55
    #39219845
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
asm-msadevskyANA, да. Учетная запись IISa. => Триггерами не получится вычислить пользователя?Текущего пользователя прикладной системы безопасности, и прочий контекст, можно хранить во временной таблице MSSQL. Создавать эту таблицу где-нибудь на уровне фабрики соединений к БД.
...
Рейтинг: 0 / 0
20.04.2016, 10:36
    #39219905
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
hVosttasm-msadev,

CQRS + Event Sourcing
я все хочу это к себе и все никак( пока не могу доказать начальству и коллегам что это сделаешь жизнь проще, хотя может действительно так
п.с. первый раз узнал о таком от известного товарища бындю на местной конфе и загорелся
...
Рейтинг: 0 / 0
20.04.2016, 10:37
    #39219908
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
Алексей КТекущего пользователя прикладной системы безопасности, и прочий контекст, можно хранить во временной таблице MSSQL. Создавать эту таблицу где-нибудь на уровне фабрики соединений к БД.

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

no more comments!
...
Рейтинг: 0 / 0
20.04.2016, 10:47
    #39219920
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
handmadeFromRuhVosttasm-msadev,

CQRS + Event Sourcing
я все хочу это к себе и все никак( пока не могу доказать начальству и коллегам что это сделаешь жизнь проще, хотя может действительно так
п.с. первый раз узнал о таком от известного товарища бындю на местной конфе и загорелся

Я так скажу: не стоит ждать чьего-то Большого решения, чтобы затеять Великий рефакторинг. Начинаешь с малого, на не (очень) критичной части программного комплекса — это может маленький сервис или независимый модуль, где можно это начать использовать без ущерба. А может совсем отдельный небольшой проект. А потом оно само проникает глубже и глубже. К хорошему привыкаешь очень быстро.

Что могу сказать по существу, CQRS и Event Sourcing очень даже рулят и полностью решают огромный комплекс задач, связанных с историей (и вообще: что, кто, когда, в каком порядке, сложная бизнес-логика, сложнейшие отчёты по движению данных и т.д. и т.п.) Все эти триггеры, генерация данных в SaveChanges и прочие кривые костыли — детский сад, от слова совсем.
...
Рейтинг: 0 / 0
20.04.2016, 12:06
    #39220014
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История изменения данных БД
asm-msadev,
Я делал примерно так.
Таблицы, которые должна иметь историю, содержали такие обязательные поля.
Код: sql
1.
DECLARE @t TABLE(id INT IDENTITY, [guid] UNIQUEIDENTIFIER  DEFAULT NEWID(), userId INT, dateCreated DATETIME  DEFAULT GETDATE());


Актуальные данные получались джойном с такой вьюшкой
Код: sql
1.
2.
SELECT MAX (id) [id], guid FROM @t
  GROUP BY guid


UPDATE не было, только INSERT.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / История изменения данных БД / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]