ORM和現有數據庫在數據庫本身內強制執行有多少約束(特別是主鍵之外的唯一鍵約束/唯一索引)兼容性如何兼容? (通常這些是已有的數據庫,由許多傳統應用程序共享)但是良好的數據庫建模實踐是在數據庫中定義儘可能多的約束作爲對應用程序的雙重檢查另外請注意,數據庫引擎I我正在使用不支持延遲約束檢查。)ORM和數據庫約束
我問的原因是我已經研究過的ORM,NHibernate和Linq to SQL,在數據庫唯一性限制。例如,刪除一行並重新插入具有相同業務關鍵字的行會導致外鍵異常。 (有些微妙,難以避免的例子。)ORM觀察主鍵和外鍵約束,但往往忽略了獨特的約束。
我知道有一些解決方法,比如NHibernate的flush方法。但是,我覺得這是一個非常漏洞的抽象,並且很難設計關於分離問題的應用程序。理想情況下,所有對象都可以通過子程序在內存中進行操作,然後主例程可以負責實際同步數據庫的調用。這隔離了更新並允許自定義邏輯在實際提交到數據庫之前檢查所有更新。
以正確的順序執行命令是非平凡的。看到我的問題here。儘管如此,我期待對流行的ORM中的常見病例有更好的支持。這對於將ORM引入現有環境看起來非常重要。
使用ORM技術的經驗是什麼?