外键生成为NOCHECK

时间:2018-11-13 16:23:47

标签: codefluent

根据此文档页面(Association Relationship),默认情况下,在一对多多对多情况下,CodeFluent实体似乎在NOCHECK模式下生成外键关系。另一方面,一对一关系上的外键是在 CHECK 模式下创建的。 我对此有几个疑问:

  • 我的理解是NOCHECK外键被禁用。如果是这样的话, 创建所有禁用的外键的目的是什么?
  • 是否有一种方法(和一种兴趣)可以改变这种行为?
  • 我们的应用程序上存在一些一对一关系,但所有外键仍在数据库中被禁用。为什么会这样?

多谢。

1 个答案:

答案 0 :(得分:0)

外键为您提供有关该方案的一些信息,即使未强制执行也是如此。同样,在开发过程中更新数据库时不会出现完整性错误也很方便。在文档中,据说这是出于性能方面的考虑,但我真的不确定这一点。

无论如何,您可以通过在项目上设置defaultPersistenceEnforce="true"来指示CodeFluent实体检查约束

<cf:project defaultPersistenceEnforce="true">

从文档中

  

注意:出于性能原因,默认情况下不强制执行参照完整性。但是,可以通过将项目节点的defaultPersistenceEnforce属性设置为true来全局启用关系实施。

     

也可以强制执行特定关系而不是整个项目。可以通过在关联属性上将persistenceEnforce属性指定为true来实现。