如何使用NHibernate架构导出生成Oracle触发器?

时间:2012-02-16 19:19:00

标签: nhibernate triggers export ddl

假设我们正在开发一个数据层,我们首先遵循"代码"原理。使用SchemaExport从模型生成数据库。 我想实现以下身份生成方案:

  • 每个表都有自己的序列和触发器
  • 触发器的类型为"对于每一行"并在将数据插入表时插入下一个序列值。

这种方法由NHibernate支持(使用流畅的)

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

但是当我将SchemaExport设置为file时,既不会生成序列,也不会生成触发器。 如何告诉NHibernate发布用于创建TRIGGER和相应SEQUENCE的DDL代码?

1 个答案:

答案 0 :(得分:2)

您应该明确告诉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将在导出架构时执行您的创建和删除部分。