如何在宁静的MVC框架上分配userId

时间:2016-03-17 06:32:37

标签: asp.net-mvc frameworks

我想在每个表上保存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;

1 个答案:

答案 0 :(得分:1)

fld 是对您的实体字段(元数据)的引用,而不是对实体实例本身的引用。

在SaveHandler中,此。使用新值引用已创建/更新的实体,而此。引用具有旧值的实体进行更新(类似于SQL触发)。

所以你应该写Row.LastModifiedBy = userId;

仅供参考,不是在每个存储库中以这种方式执行,而是在您的实体中实现 IUpdateLogRow (和/或InsertLogRow)接口,默认保存行为将自动填充Insert / Update UserId / Date字段。

在Serene中定义像 LoggingRow 样本的基行,以避免在每个实体中实现此接口。