NHibernate是否可以在不使用存储过程的情况下进行非规范化更新?
我正在考虑在一个项目中使用NHibernate,该项目有一个具有某种程度的计划去规范化(由DBA计划)的数据库。读取一组表并将一列映射到一个属性不是问题。但是,在更新时,我必须将一个属性映射回原始表中的原始列,并在非规范化表中更新该列的一些副本。是否可以在不使用存储过程的情况下使用NHibernate执行此操作NHibernate是否可以在不使用存储过程的情况下进行非规范化更新?,nhibernate,nhibernate-mapping,denormalization,Nhibernate,Nhibernate Mapping,Denormalization,我正在考虑在一个项目中使用NHibernate,该项目有一个具有某种程度的计划去规范化(由DBA计划)的数据库。读取一组表并将一列映射到一个属性不是问题。但是,在更新时,我必须将一个属性映射回原始表中的原始列,并在非规范化表中更新该列的一些副本。是否可以在不使用存储过程的情况下使用NHibernate执行此操作 编辑:虽然我倾向于同意NXC的答案,但这个问题是关于如何解决NHibernate的问题,而不是在数据库中解决它 是的,您可以注册从DefaultSaveOrUpdateEventList
编辑:虽然我倾向于同意NXC的答案,但这个问题是关于如何解决NHibernate的问题,而不是在数据库中解决它 是的,您可以注册从DefaultSaveOrUpdateEventListener继承的事件侦听器,覆盖OnSaveOrUpdate并更新其他实体 以下是一些关于事件侦听器的博客帖子:
- 节约使用;过度使用非规范化数据是维护和数据质量问题的根源。我参与的一个J2EE项目在560个表中只有4个非规范化数据项,其中两个是搜索表
- 依赖应用程序保持非标准化数据同步是一种已知的反模式。在事务系统中维护非标准化数据的普遍接受的方法是使用数据库触发器。使用触发器意味着来自任何源(不仅仅是您的应用程序)的更新将由数据库本身发布。最好使用触发器来维护非规范化的数据,除非有特定的东西阻止它
- 非规范化数据为维护开发人员留下了陷阱(特别是如果您不使用DB触发器来维护数据)。确保每一个非规范化数据都有文档记录
- 关于非标准化数据的一些想法: