ORM和现有数据库在数据库本身内强制执行有多少约束(特别是主键之外的唯一键约束/唯一索引)兼容性如何兼容? (通常这些是已有的数据库,由许多传统应用程序共享)但是良好的数据库建模实践是在数据库中定义尽可能多的约束作为对应用程序的双重检查另外请注意,数据库引擎I我正在使用不支持延迟约束检查。)ORM和数据库约束
我问的原因是我已经研究过的ORM,NHibernate和Linq to SQL,在数据库唯一性限制。例如,删除一行并重新插入具有相同业务关键字的行会导致外键异常。 (有些微妙,难以避免的例子。)ORM观察主键和外键约束,但往往忽略了独特的约束。
我知道有一些解决方法,比如NHibernate的flush方法。但是,我觉得这是一个非常漏洞的抽象,并且很难设计关于分离问题的应用程序。理想情况下,所有对象都可以通过子程序在内存中进行操作,然后主例程可以负责实际同步数据库的调用。这隔离了更新并允许自定义逻辑在实际提交到数据库之前检查所有更新。
以正确的顺序执行命令是非平凡的。看到我的问题here。尽管如此,我期待对流行的ORM中的常见病例有更好的支持。这对于将ORM引入现有环境看起来非常重要。
使用ORM技术的经验是什么?