У меня есть база данных SQL Server 2008 R2, содержащая таблицу, содержащую мои объекты из объявления. Это выглядит примерно так:Как обрабатывать версии сущностей в SQL Server?
объектTitle
Price
CreatedDate
UpdatedDate
Description
EndDate
PublishedDate
StateOfProduct
Id
UserId
UserLocationId
Visits
CategoryId
TypeOfAd
AdminComment
ReviewedDate
AmountOfImages
UserPostCode
UserEmail
UserPhoneNr
UserPassword
OwnerType
AdminUserId
InactivatedDate
OldPrice
PriceLastChange
Объявление может иметь следующие этапы: Published, Ожидание обзора, Устаревший.
Сообщайте, что объявление опубликовано, и клиент решает изменить объявление, это означает, что настройки в объявлении выше будут изменены. Подобное изменение требует нового обзора, а это означает, что объявление будет идти от публикации до ожидающего рассмотрения.
Проблема заключается в том, что при изменении объявления и ожидании его пересмотра он больше не публикуется.
Мне нужно, чтобы объявление было опубликовано со старыми (рассмотренными) данными, и когда обзор сделан с обновленным объявлением, он переключит места, но сохранит старый идентификатор.
Вопрос в том, как правильно обращаться с этим?
Предположим, что у меня могут быть две идентичные таблицы, чтобы сократить количество записей и упростить поиск опубликованных объявлений, но будет намного больше работать с Entity Framework с двумя идентичными таблицами в одно и то же время.
Другим решением может быть добавление двух дополнительных столбцов в таблицу объявлений, в которой содержится версия объявления и оригинал adId
. Поток в этом случае будет примерно таким:
- Создать объявление (id = 1), originalId = null, version = null.
- Обзор Ad (ID = 1)
- Публикация объявлений (ID = 1), версия = 1
- клиентов Обновление объявлений, новое объявление (ID = 2) создается с версией, установленной на нуль (= ожидает проверки) и originalId = 1
- Проведенное объявление (id = 2), Ad (id = 1) будет скопировано в новые записи (id = 3 (or2)), originalId установлен в 1. Ad (id = 2) будут перенесены/скопированы в Ad (id1), originalId = null, version = 2.
В этом случае таблица объявлений может отличаться друг от друга, но трассировка истории объявлений будет намного проще.