C# asp.net的Maker Checker功能

C# asp.net的Maker Checker功能,c#,asp.net,.net,C#,Asp.net,.net,我正在创建一个maker checker功能,maker在其中创建一个记录,并由检查器检查。在检查者批准之前,不会创建记录。如果检查器拒绝它,则应回滚它 我知道的想法是创建一个临时记录表,它将保存要创建的记录,直到检查者批准它。但此方法将创建2倍数量的表,以覆盖所有功能 实现这一目标的最佳实践是什么? 这是可以使用Windows Work Flow完成的吗。?(WWF)只需在数据库中再添加几列即可 状态:记录的当前状态(等待批准、已批准、, 谢绝等) 制造者:用户名或id 检查者:用户名或id

我正在创建一个maker checker功能,maker在其中创建一个记录,并由检查器检查。在检查者批准之前,不会创建记录。如果检查器拒绝它,则应回滚它

我知道的想法是创建一个临时记录表,它将保存要创建的记录,直到检查者批准它。但此方法将创建2倍数量的表,以覆盖所有功能

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

只需在数据库中再添加几列即可

  • 状态:记录的当前状态(等待批准、已批准、, 谢绝等)
  • 制造者:用户名或id
  • 检查者:用户名或id
  • 审核人批准/拒绝时间
或者,如果您有许多这样的表需要创建/检查工作流,您可以添加另一个表并将所有其他记录引用到此表

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

如果要修改记录的内容,还需要更多列。例如修订号和IsLastRevision

我不知道你用什么来访问数据库和修改记录。如果使用或/M,则可能会覆盖更新并对所有保存进行修订。比如说

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);

}

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

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


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

为什么不创建一个带有VerifierID列的表,该列在验证人验证之前保持为空。@ShoaibShaikh但如果记录被修改,检查者拒绝该记录。在这种情况下,记录需要回滚,如果我们维护一个表,这是不可能的。但是如果记录被修改,检查者拒绝它。在这种情况下,记录需要回滚,如果我们维护一个表,这是不可能的。@Chandu Indyah,如果记录更改了?应用程序必须确保检查人正在审查制造商发送给他/她的批准内容。在这种情况下,我们可以说“dba呢,谁可以更改记录?”?