我想在每个表上保存CreatedBy和LastModifiedBy字段。对宁静有依据吗? 当我设置fld字段时,我收到错误:
严重级代码描述项目文件行抑制状态 错误CS0029无法隐式转换类型' int'到Serenity.Data.Int32Field'
private static MyRow.RowFields fld { get { return MyRow.Fields; } }
protected override void SetInternalFields()
{
int userId = ((UserDefinition)Authorization.UserDefinition).UserId;
fld.LastModifiedBy = userId;
答案 0 :(得分:1)
fld 是对您的实体字段(元数据)的引用,而不是对实体实例本身的引用。
在SaveHandler中,此。行使用新值引用已创建/更新的实体,而此。旧引用具有旧值的实体进行更新(类似于SQL触发)。
所以你应该写Row.LastModifiedBy = userId;
仅供参考,不是在每个存储库中以这种方式执行,而是在您的实体中实现 IUpdateLogRow (和/或InsertLogRow)接口,默认保存行为将自动填充Insert / Update UserId / Date字段。
在Serene中定义像 LoggingRow 样本的基行,以避免在每个实体中实现此接口。