如何使用 Castle ActiveRecord 在保存或更新期间自动填充字段

2023-12-31

问题:我们数据库中的所有表都有 CreatedDate、CreatedBy、ChangedDate、ChangedBy 字段,我希望在保存/更新 ActiveRecord 实体时自动设置这些字段。

我的第一次尝试是重写 Save() 和 Update() 方法。但只有当我对实体执行直接 Save() 或 Update() 操作时,才会调用这些方法。它们不会在主 - 详细信息场景中被调用,在该场景中我仅在主上调用 Save() 。

接下来尝试的是 OnSave() 和 OnUpdate() 方法,但此处字段中的更改未保留在数据库中。

最后我尝试了BeforeSave()方法。但更新时不会调用该方法。

问题:如何在 Save() 或 Update() 期间自动设置这些 CreatedDate、CreatedBy、ChangedDate、ChangedBy 字段?


要根据需要修改数据,您必须重写 BeforeSave 方法,如下所示:

    protected override bool BeforeSave(IDictionary state)
    {
        bool retval = base.BeforeSave(state);
        state["Password"] = Global.Encrypt("password");
        return retval;
    }

最后保存您的实例:

protected void btnSave_Click(object sender, EventArgs e)
{
    try
    {
        qfh.User user = null;

        user = new qfh.User();

        user.UserName = txtUserName.Text;
        user.Name = txtName.Text;
        user.IsAdministrator = cboIsAdministrador.SelectedValue == "Yes";
        user.IsActive = cboIsActive.SelectedValue == "Yes";

        user.SaveCopy();
    }
    catch (Exception ex)
    {
        ex = Utilities.GetInnerException(ex);
        JSLiteral.Text = Utilities.GetFormattedExceptionMessage(ex);
    }
}

我通常使用 SaveCopy() 来利用重写方法 FindDirty(object id, IDictionary previousState, IDictionary currentState, NHibernate.Type.IType[] types) 来获取该类的先前值。

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Castle ActiveRecord 在保存或更新期间自动填充字段 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 如何从列表理解而不是嵌套列表中获得平坦的结果?

    我有一个清单A 和一个函数f其中需要一个项目A并返回一个列表 我可以使用列表理解来转换所有内容A like f a for a in A 但这会返回一个列表列表 假设我的输入是 a1 a2 a3 导致 b11 b12 b21 b22 b31
  • 是否可以保存一组断点?

    我有一组断点 用于调试一个问题 当我想调试其他东西时 这些断点很烦人 所以我需要禁用 删除它们 但是 我觉得我可能希望稍后能够重新创建第一组断点 是否可以保存所有当前活动的断点 以便只需一次操作即可在不同组断点之间切换 如果我有 30 个断
  • 安装 ffi 时出错

    似乎可以解决这个问题 gem install ffi Building native extensions This could take a while ERROR Error installing ffi ERROR Failed to
  • 如何为给定外群的一组物种生成所有可能的纽维克树排列?

    如何为给定外群的一组物种生成所有可能的纽维克树排列 对于那些不知道什么是 Newick 树格式的人 可以在以下位置找到一个很好的描述 https en wikipedia org wiki Newick format https en wi
  • 检查字符串是否有效 MySQL UTF8?

    我有一个编码为 utf8 的 MySQL 列 那个 utf8 实际上并不是完整的 utf8 集 但是仅 BMP 字符 长度最多 3 个字节 http dev mysql com doc refman 5 5 en charset unico
  • Expo XDE“超时超过 60000 毫秒”?

    我正在使用 Expo XDE 为我的第一个 React Native 应用程序创建一个新项目 但是每当我单击 创建新项目 时 它就会开始下载一些内容并出现错误 不知道在哪里增加这个超时值 我检查了expo的文档 但找不到与此相关的任何内容
  • 使用 Objective C 中的类别私下扩展协议

    做了一些搜索 但没有找到太多 但想知道是否可以扩展协议 目前 在 MyDelegate h 中 有 protocol MyDelegate
  • kotlin 连接到自签名 https 服务器

    我有以下 kotlin 代码 val urlPath https 10 0 2 2 8080 var data String try data URL urlPath readText catch e Exception Log e doI
  • XPath 选择具有指定名称的所有元素

    我相信只需使用标准 XPath 就可以回答这个问题 无需参考实现 但仅供参考 我使用 Net 中的 XML DOM 对象 System Xml 命名空间 我有一个节点从 XML 文档深处的某处传递给我的函数 并且我想选择该节点的所有具有特定
  • 工厂女孩多重 has_many 通过的

    我需要创建一些由多个组成的工厂 这是我的模型 Topic has many plan topics has many plans through gt plan topics PlanTopic belongs to plan belong
  • 使用 Qt C++ QWebView 会导致 GUI 运行缓慢。

    当页面通过 QWebView 加载时 我注意到程序的其他元素开始运行缓慢 特别是 GUI 解决这个问题的最佳解决方案是什么 我不能说在使用时用户界面的其余部分有任何明显的减慢QWebView 即使是在动力相当不足的 SBC 上 我想知道是否
  • 对 Amazon S3 的写入是否是原子的(全有或全无)?

    我正在向 S3 读取和写入大量文件 我只是想知道是否需要针对文件 写了一半 的情况进行编码 例如S3 PUT Write 仅 一半 有效 或者写入 S3 是全有还是全无 我知道存在读写最终一致性问题 我认为 这在很大程度上是一个单独的问题
  • 如何使SeparatedListAdapter的节标题在滚动时推动上一节?

    我正在使用分离列表适配器 下一个节的标题到达顶部时 节标题突然发生变化 对于 iOS 应用程序 下一个部分的标题会向上推旧的部分标题并占据其位置 如何在Android应用程序中实现它 有什么帮助吗 Here http code google
  • 可以在源代码中添加有关错误修复的注释吗?

    如果是这样 你在哪里划清界限 我和我的同事在这个问题上存在分歧 我见过这样的事情 fixes bug 22 to fixed bug shouldnt be decrementing i 如果更改相当显着并且从根本上改变了该方法的编写目的
  • 调试器不会因错误而停止

    我正在使用 Visual Studio 2012 开发 Asp net MVC4 项目 当调试过程中出现错误时 它通常会在错误处停止 但突然间 调试器并没有停止 只是吐出如下错误信息网页 应用程序中的服务器错误 字典中不存在给定的键 描述
  • 使用jedis管道获取值

    我有一个 id 列表 我想用它来使用 java 客户端 jedis 从 Redis 服务器检索哈希值 正如文档中提到的 Jedis 提供了一种通过声明 Response 对象来使用管道的方法 然后同步管道以获取值 Pipeline p je
  • Active Storage Rails 5.2 出现 Blob 错误

    我刚刚升级了5 1 4 应用程序升级到 5 2 并尝试将 Paperclip 替换为 ActiveStorage 目前 当尝试使用图像更新现有记录时 出现以下错误 无法自动加载常量 ActiveStorage Blob Analyzable
  • 如何将 unicode 数字转换为整数?

    阿拉伯语和中文有自己的数字字形 int适用于所有不同的数字书写方式 我无法重现该行为 python 3 5 0 gt gt gt from unicodedata import name gt gt gt name RUMI DIGIT F
  • sql中如何存储树形结构?

    这是我使用 sqlite 的模式 我不确定这是否是在 sql 中创建树结构的好方法 因为我必须遍历很多次才能获取整个树 而不是根据顶部注释提取整个树并构建python 中的树 有人可以给我一些建议吗 BEGIN CREATE TABLE t
  • 如何使用 Castle ActiveRecord 在保存或更新期间自动填充字段

    问题 我们数据库中的所有表都有 CreatedDate CreatedBy ChangedDate ChangedBy 字段 我希望在保存 更新 ActiveRecord 实体时自动设置这些字段 我的第一次尝试是重写 Save 和 Upda