asp.net的Maker-Checker功能

时间:2012-06-20 11:09:37

标签: c# asp.net .net

我正在创建一个制造商检查功能,制造商会创建一个记录,并由检查员进行审核。在检查员批准之前,记录创建不会发生。如果检查员拒绝它,那么它应该回滚。

我知道的想法是创建一个临时记录表,它将保存要创建的记录,直到检查员批准它为止。但是这种方法将创建2X个表来覆盖所有功能。

实现这一目标的最佳做法是什么? 是否可以使用Windows Work Flow完成。 (WWF)

2 个答案:

答案 0 :(得分:2)

只需在数据库中添加几列。

  • 状态:记录的当前状态(等待批准,已批准, 拒绝了。等)
  • 制作者:用户名或ID
  • Checker:用户名或ID
  • 检查员批准/拒绝时间

或者,如果你有很多像这样需要制造商/检查工作流程的表,你可以添加另一个表并将所有其他记录引用到该表中。

Windows工作流基础也可以为您工作,但我很难发现它很难使用

如果您想要对recored进行修订,还需要更多列。例如Revision Number和IsLastRevision。

我不知道您使用什么来访问数据库和修改记录。如果您使用的是OR / M,则可以覆盖Update并对所有保存执行修订。例如

void Update(Entity e )
{
 Entity n = new Entity();
  // Create a copy of e ( With AutoMapper for example or manually )
 e.Current = true;
 e.RevisionNumber += 1;
 Update(e);
 Insert(n);

}

答案 1 :(得分:1)

在这种情况下,您将有两个选择:

创建两个相同的表,并使用一个表用于批准的数据,一个用于请求的数据。

OR

您可以为具有TypeID(已请求/已批准)的用户创建两行。在这种情况下,当批准者批准该请求时,用户将创建一个typeID = request的请求,您只需使用新请求覆盖当前批准的记录,否则只需标记被拒绝状态的请求行。