【问题标题】:How to generate Oracle triggers with NHibernate schema export?如何使用 NHibernate 模式导出生成 Oracle 触发器?
【发布时间】:2012-03-08 05:25:31
【问题描述】:

假设我们正在开发一个数据层,并且我们遵循“代码优先”的原则。数据库是使用 SchemaExport 从模型生成的。 我想实现以下身份生成场景:

  • 每个表都有自己的序列和触发器
  • 触发器的类型为“for each row”,在向表中插入数据时插入下一个序列值。

NHibernate 通过使用 (with fluent) 支持这种方法

Id(x=>x.Id).GeneratedBy.TriggerIdentity();

但是当我对文件执行 SchemaExport 时,既不会生成序列,也不会生成触发器。 如何告诉 NHibernate 发出 DDL 代码来创建 TRIGGER 和相应的 SEQUENCE?

【问题讨论】:

    标签: nhibernate triggers export ddl


    【解决方案1】:

    您应该明确告诉 NH 您希望它为您创建哪些附加对象。 据我所知,流畅的 NH 不允许您直接配置辅助数据库对象。将 .hbm.xml 文件作为嵌入式资源添加到您的项目中

    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <database-object>
        <create>
            create ...
        </create>
        <drop>
            drop ...
        </drop>
    </database-object>
    </hibernate-mapping>
    

    然后告诉流利的NH去挑选它

    .Mappings(m =>
    {
        m.HbmMappings.AddFromAssemblyOf<...>();
             ... 
    })
    

    SchemaExport 将在导出架构时执行您的创建和删除部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-12
      • 2010-09-26
      • 2016-05-19
      • 2011-07-25
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2010-12-06
      相关资源
      最近更新 更多