首页 / 知识
关于c#:NHibernate,审核和计算列值
2023-04-17 10:44:00

NHibernate, auditing and computed column values通过NHibernate更新/插入实体时,如何在不扩展具有特殊属性的域类的情况下设置一些特殊的列值? 例如。 每个表都包含审核列,例如CreatedBy,CreatedDate,UpdatedBy,UpdatedDate。 但是我不想将这些属性添加到域类中。 我想保持域modedl的Percistence无知因子尽可能高。 对于搜索引擎旅人,请注意,对于NH v2.0及更高版本,现在可以很方便地使用事件侦听器执行此操作: 例: http://ayende.com/Blog/archive/2009/04/29/nhibernate-ipreupdateeventlistener-amp-ipreinserteventlistener.aspx 手册: http://knol.google.com/k/fabio-maulo/nhibernate-chapter-11-interceptors-and/1nr4enxv3dpeq/14 经过几个小时的NHibernate攻击后,我发现了一种折衷的解决方案,该解决方案是如何将域层类与基础结构层隔离。这里只有一个"受害者"是下面列表中的第一点: 1)我为只有一个私有字段的域中的所有可持久实体引入了基类DomainObject:
2)在类映射中添加了以下部分:
3)实现了一个拦截器,用于设置这些属性值。 4)可选。我们还可以通过配置每个类在应用程序中扮演的"角色"来实现种类设置,然后在Interceptor中使用角色特定的属性。例如。此配置可以声明Product为TenantScopeObject,拦截器将在系统中记录当前租户身份的值中设置名为TenantID的属性。 您可能想尝试查看NHibernate的IUserType。 在下一页的底部是一个示例,其中ayende从实体中删除了一些加密逻辑,并允许NHibernate照顾它。 http://ayende.com/Blog/archive/2008/07/31/Entities-dependencies-best-practices.aspx
使用NHibernate的ICompositeUserType和 我发现这些文章很有用。显然,它不是PI,因为您与NH / SQL有联系。 现在,大多数IoC容器都带有拦截器,因此您可以拦截更改并将它们排队。如果UoW刷新了您的更改,则您也可以保留审核跟踪。 这与"不添加这些属性"不同,但是我上次看到时,工程师通过实现具体的NHibernate类并从实现了您不喜欢的属性的通用抽象基类(例如MyAuditable)中派生了解决方法。这样,您只需解决一次问题。 |
最新内容
相关内容
linux扩展文件命令?
linux扩展文件命令?,工作,地址,系统,信息,命令,目录,管理,情况,文件,标准,Linux文件系统操作命令1、(1)根据文件名查找例如,我们想要查找一个文linux更改扩展命令?
linux更改扩展命令?,管理,地址,数据,工作,系统,在线,工具,命令,环境,单位,Linux命令有哪些1、linux常用命令如下:查看内核版本:uname-a。控制台-重启计算机命令linux?
重启计算机命令linux?,系统,工作,命令,服务,标准,设备,灵活,首要,意义,参数,Linux的重启命令有哪些1、在linux下一些常用的关机/重启命令有shulinux计算机的命令?
linux计算机的命令?,系统,工作,信息,设备,技术,命令,网站,管理,灵活,基础,linux查看路径命令linux命令如果记不得,可以使用man命令来查看某个命linux查看扩展名命令?
linux查看扩展名命令?,工作,系统,地址,信息,软件,文件,标准,电脑,命令,目录,Linux命令下如何解压扩展名为“.zip”的文件?首先在电脑中,连接到llinux用计算器的命令?
linux用计算器的命令?,代码,环境,情况,异常,工具,数据,位置,平台,精密,设计,求在linux环境下用QT编写一个非常简单的计算器计算器包括加,减,乘linux的数学计算命令?
linux的数学计算命令?,工作,系统,信息,地址,数字,目录,命令,百分比,情况,管理,linux的shell脚本编程,求两数字间所有偶数的和,我是小白,不太懂linux命令设置扩展屏?
linux命令设置扩展屏?,工具,系统,电脑,技术,软件,装备,情况,工作,命令,显示器,Linux中如何分屏显示的命令是什么linux中如果想要把某个命令或linux云计算查看命令?
linux云计算查看命令?,系统,信息,地址,工作,命令,情况,标准,服务,软件,网络,linux常用命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出linux打开计算器命令?
linux打开计算器命令?,密码,电脑,工作,设备,数字,系统,手机,指数,情况,服务,关于Linux的(操作过程中的Linux命令必须完整给出)对Linux操作系统linux磁盘扩展命令?
linux磁盘扩展命令?,在线,信息,扩大,风险,磁盘,虚拟机,容量,分区,目录,链接,LINUX虚拟机磁盘在线扩容不重启虚拟机里添加磁盘 检查磁盘空间:运linux命令查看包属性?
linux命令查看包属性?,时间,系统,信息,状态,命令,文件,通讯录,管理,情况,标准,Linux文件相关命令命令一:cat cat命令应该是在Linux中查看文件内