2010-10-23 83 views
0

這可能是一個非常愚蠢的問題,但我發現在谷歌/冰沒有答案......與NHibernate必需的SQL Server表關係?

如果我已經使用NHibernate的持久性與SQL Server,我爲什麼要那麼在創建所有表關係數據庫模式? 我只是想知道,因爲它似乎創建了所有的關係,儘管我已經在NHibernate映射中定義了它們。

最好的問候, 丹尼爾·蘭

回答

1

如果經NHibernate的生成的架構,它已經建立了所有在架構層面的關係。現在,如果NHIbernate未用於模式生成,仍然建議您建立它們,因爲編碼錯誤總有可能導致數據庫操作違反關係規則,但NHibernate忽略了由於代碼中的一個錯誤。

這樣的一個例子是與非空約束的關係。如果NHibernate配置不正確,它可能會嘗試更新對象並將關係設置爲Null(比如刪除它),如果沒有正確的關係和/或NHibernate調試工具像NHProf。

+0

好的,我明白由於錯誤導致的不一致的風險可能是在db-schema上實現關係的一個原因 - 但是它涉及到表連接時與sql-server性能有什麼關係? – 2010-10-24 16:20:02

+0

那麼,通過添加索引可以提高數據庫性能。但前提是鑰匙不是指標,因此你不會提高他們的表現。 – 2010-10-24 16:39:50