2013-01-11 30 views
0

在網絡上有太多互相矛盾和混淆的建議。我想爲自己和將來尋找這些信息的任何人解決這個問題。帶有沒有PK的數據庫的EF - 好主意/糟糕主意/ Fuhgeddaboudit

問題是 - 將實體框架工作與表沒有主鍵的數據庫工作正常。

細節:我有一個數據庫,它有很多沒有指定PK的表。稱之爲糟糕的設計或其他任何東西,但現在我無法改變模式。我必須與它合作。我們想使用EF,因爲我們喜歡MS,而且我們一直都在使用MS工具。我們睡得更輕鬆,因爲知道MS將會不斷更新和支持此EF,並在未來給予充分關注。好吧,這裏是我在這個網站和其他網站上過度研究的我的炙手可熱的問題。 「我是否可以在我的項目中充分使用EF來知道我的數據庫有一些永遠不會有PK的表」。部分問題是我們真的想使用EF來簡化使用,我們正在使用MSphiles。

我聽到很多建議從:

  1. 它不會工作。
  2. 它可以工作。
  3. 沒什麼大不了在所有...

這就是它變得非常噁心。請指教。

+0

爲什麼你真的想這樣做? – Jorge

+0

就像我說的,如果我們可以用EF來做到這一點,那是我們的第一選擇。我願意接受任何其他好的/堅實的選擇。 – EP2012

+0

有候選鍵(允許複合鍵)時可以完成。您必須100%確定這些密鑰始終適用。這可能是人們懷疑的原因。我不能責怪他們。 –

回答

3

那麼,這在很大程度上取決於你打算如何使用它。沒有主鍵,你不能有參照完整性。所以,實際上你不能自動查找子表等。

你可以手動連接表格,這應該可以......但是這嚴重限制了EF的功能。

但事情就是這樣,我們所說的任何事情都不能說服你。什麼會說服你自己做。構建測試數據庫和測試應用程序。設置您的EF數據庫。看看它是否適合你。

+0

我可以像你提到的那樣使用EF來測試它,但它幾乎不會給我一個真實的評估,我將在真正的項目中處理這個龐大/複雜的數據庫。那麼nHibernate是我的情況(沒有PKs)的一個很好的候選人?我還沒有從任何一個具體的答案:-) – EP2012

+1

@Ohark - 一個巨大的複雜分貝沒有主鍵本質上是隨機噪聲。你沒有辦法將任何列標識爲唯一的,沒有約束來確保唯一性等。編寫SQL來處理這個問題也是一團糟。我懷疑任何其他的ORM會更適合,因爲它們都基於主鍵。 –

+0

linq到sql怎麼樣?關於這個選項的任何想法?謝謝你的幫助 – EP2012

相關問題