在 Session 中使用 ServiceStack Ormlite 全局过滤器

Using ServiceStack Ormlite global filters with Session

我想更改找到的示例 here,以便在每次进行更改时使用会话的用户名填充 modifyby。这可能吗?

您需要单例访问才能访问您需要在 ReqeustContext 或 ASP.NET 的 HttpContext.Current.Items 词典中填充的用户名,例如:

GlobalRequestFilters.Add((req,res,dto) => {
    RequestContext.Instance.Items["UserName"] = req.GetSession().UserAuthName;
});

您可以从 UpdateFilter 内部访问,例如:

OrmLiteConfig.UpdateFilter = (dbCmd, row) => {
    var auditRow = row as IAudit;
    var userName = RequestContext.Instance.Items["UserName"] as string;
    if (auditRow != null)
        auditRow.UserName = userName;
};

注意:"UserName" 仅在 HTTP 请求的上下文中起作用。