【发布时间】:2012-01-15 14:09:19
【问题描述】:
我有一个 SQL Server 2008 R2 数据库,其中包含一个表格,其中包含我来自广告的实体。 它看起来像这样:
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
一个广告实体可以有以下阶段:已发布、等待审核、已过时。
假设广告发布并且客户决定编辑广告,这意味着上面的广告设置将发生变化。此类更改需要重新审核,这意味着广告将从已发布变为等待审核。
这样做的问题是,当广告更改并等待审核时,它不再发布。
我需要的是让广告与旧的(已审核的)数据一起发布,并且在对更新的广告进行审核后,它将切换位置但保留旧的 id。
问题是如何正确处理这个问题?
我假设我可以有两个相同的表来减少记录计数并简化查找已发布广告的过程,但同时针对两个相同的表使用 Entity Framework 会做更多的工作。
另一种解决方案可能是在 Ads 表中添加两个额外的列,其中包含广告版本和原始 adId。在这种情况下,流程将是这样的:
- 创建广告(id=1),originalId = null,version = null。
- 查看广告(id=1)
- 发布广告(id=1),版本 = 1
- 客户更新广告,新广告 (id=2) 已创建,版本设置为 null(=等待审核)且 originalId = 1
- Reviewed Ad(id=2) done, Ad(id=1) 将被复制到新记录 (id = 3 (or2)), originalId 设置为 1. Ad(id=2) 将被移动/复制到 Ad(id1),originalId = null,版本 = 2。
但是,广告表可能会因此而变化很大,但跟踪广告历史记录会容易得多。
【问题讨论】:
标签: entity-framework database-schema