我应该在哪里管理createdBy,modifiedBy,createDate和modifiedDate?

时间:2010-07-27 12:23:14

标签: asp.net

我想在每个数据库表中插入createdBy,modifiedBy,createDate,modifiedDate列以管理用户活动。

这是我第一次尝试这样做。我可以遵循最佳做法吗?任何设计模式都很好管理这个?

我的第一个想法是在我的业务逻辑层中执行此操作,并在每个业务类的插入和更新方法中,我执行以下操作:

class.createDate = DateTime.Now;

class.modifiedDate = DateTime.Now;

class.modifiedBy = CurrentUser.Id;

class.createdBy = CurrentUser.Id;

还是有更好的方法?

布赖恩

4 个答案:

答案 0 :(得分:1)

这取决于您管理的业务对象类型,以及需要创建/修改数据的规则。在大多数情况下,这是一个数据库审计跟踪,业务逻辑层中不需要此信息。在这种情况下,此信息应仅存在于数据库级别。如果您使用的是ORM,则可能意味着无论如何都要将数据保存在您的对象中。如果您正在使用存储过程,那么他们都需要知道如何使用用户名来标记记录。可以通过在列上设置默认值GetDate()来处理日期时间。

答案 1 :(得分:0)

有一点需要考虑的是你想要什么时候盖章?您想要应用程序服务器的时间还是数据库服务器上的时间?我总是去找DB服务器。因此,在这种情况下,存储过程(或SQL语句)应该获得当前时间。

-Krip

答案 2 :(得分:0)

您应该仅在数据库标签处管理CreatedDateModfiedDate。 CreatedDate的默认值应为Getdate()/SYSDATE,您无需设置此值。对于ModifiedDate,请在每次更新时再次设置GETDATE()/SYSDATE

您只需要将ModifiedBy用户标识从您的应用程序传递到数据库,如果插入设置了该列的userid,并且在更新的情况下仅更新Modified by userId列。

答案 3 :(得分:0)

对于createdBy和modifiedBy,我通常使用当前用户的用户名在我的业务层中设置它。对于createDate和modifiedDate,我在数据库的'after'触发器中执行此操作。