2011-02-05 75 views
3

我最近聽到有人提出可以使用Entity Framework來使數據非規範化。例如,假設您有一張遊戲類型表和一張遊戲表。使用實體框架非規範化

您的初始EF模型可能會通過game.Genre.Name獲得遊戲類型的名稱。顯然有一種重新映射的方法,以便通過game.GenreName來獲得遊戲的流派名稱。

雖然我找不到這個例子。我所知道的唯一方法是手動添加一個映射此層的抽象層(例如new GameAbstraction() {GenreName = gameEntity.Genre.Name })。

這是EF可以做的事情,還是全部關於增加規範化(例如創建SportsGame時Genre.Name == 'Sports' or ActionGame when Genre.Name = 'Action')?

回答

2

我已經用非常合理的成功度完成了這項工作,將非規範化表映射到規範化實體框架,反之亦然。我開始通過使用設計師提供的實體框架,你可以實際拖放屬性周圍的圖來建立新的實體...

但是,我認爲這樣做的UI +工具isn在自動化或易用性方面還沒有那麼完美。有些東西不符合你的期望或想要的方式。如果您打算進行大量的非規範化操作,您將最終在設計器背後進行大量的XML編輯手動編輯。這是我在最近的項目中不得不做的一段時間。

+0

同意你,我在這個問題的未來。看起來,代碼類結構EF和規範化數據庫並不符合預期。 – 1c1cle 2014-01-13 16:14:50

0

是的,這就是所謂的實體分裂。 Here's a tutorial.

我同意@Graham,如果您對XML編輯不舒服,您不應該嘗試它。