首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用实体框架批准对活动数据的更改

使用实体框架批准对活动数据的更改
EN

Stack Overflow用户
提问于 2011-06-21 12:32:57
回答 2查看 549关注 0票数 5

我有一个要求,只有超级管理员才能修改“实时”数据。

目前,如果一个普通管理员想要更改实时数据:-

  1. A超级管理员不发布数据
  2. 普通管理员进行更改
  3. 超级管理员批准更改并发布数据

如果我想要消除步骤1,并让旧数据在超级用户批准更改之前保持活动,我的选择是什么?

我使用的是ASP.NET MVC和EF4,所以我特别感兴趣的是围绕EF的解决方案,这些解决方案可以对我的控制器透明,但是我也有兴趣在数据库层(或完全不同的上下文中)了解解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-21 12:40:05

首先,由于您讨论的是基于角色的活动,我发现很难找到一个不涉及应用程序/业务层的适当解决方案。我相信您的数据访问层应该忽略这样一个事实,即超级管理员或普通管理员正在调用其方法。

在任何情况下,处理此问题的一种方法是创建一个PendingChanges表,并将普通管理员的更改保存到该表,并使用一个标志指示它正在等待批准。然后,一旦超级管理员批准了它,就可以将记录从PendingChanges复制到活动表中。

票数 5
EN

Stack Overflow用户

发布于 2011-06-23 19:05:43

我将尝试给出一个简单的对象图示例。

考虑一个具有以下结构的博客。

代码语言:javascript
复制
Posts
  PostID
  Title
  Description

PostUpdates
  PostUpdateID
  PostID
  Title
  Description
  DateUpdated
  UpdatedBy
  ApprovedBy
  PostStatus(Approved/Rejected)

在这里,我的逻辑将是显示Post和它的最后更新和批准的PostUpdate。在这种情况下,实际上没有任何东西被修改过。总是追加一组新的更改,您可以决定删除旧版本。

对于保存,您可以在PostUpdate中添加一个新的PostUpdates条目。

对于超级管理员,您可以显示所有更新并让他批准正确的更新。当管理员决定批准更新时,Post将使用上一次批准的PostUpdate的内容进行修改。

另一种选择(更通用)

您可以如下所示创建一个表

代码语言:javascript
复制
RowUpdates
   RowUpdateID
   TableName
   TableKey
   NewValues (kind of XML store to save which fields were modified)
   UpdatedBy
   ApprovedBy
   DateUpdated
   UpdateStatus (Approved/Rejected)

但是在这种情况下,您必须使用反射来避免将值存储到DB,而是创建新的RowUpdate条目,并且只有当管理员批准时,实际值才应该在执行反射映射后发布到db。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6425272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档