Хранить журнал операций CRUD для динамически определенных таблиц и столбцов - PullRequest
0 голосов
/ 06 июня 2018

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

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

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

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

Что у меня есть для моей таблицы аудита, где AppColumn хранит имя и тип столбца, который имеет ссылку на таблицу с именем AppTable, которая ссылается на таблицу с именем AppDatabase:

CREATE TABLE AppAudit (
    AppAuditId INT NOT NULL IDENTITY(1,1) PRIMARY KEY
   ,AppColumnId INT NOT NULL FOREIGN KEY REFERENCES AppColumn(AppColumnId)
   ,OldValue VARCHAR(MAX)
   ,NewValue VARCHAR(MAX)
);

Редактировать: я должен был упомянуть, что, поскольку приложение должно быть динамичным, а бизнес-пользователи хотят добавлять таблицы на лету без разработчика, перекомпилирующего проект, каждая таблица НЕ будет иметь модель хранится в приложении.Я знаю, что это ломает большую часть «точки» MVC, но это то, что хочет клиент.Если у кого-то есть лучший способ справиться с этой частью приложения, я все еще очень рано в процессе разработки.

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