2011-07-08 60 views
2

我現在有由一個數據庫視圖(加入多個表)支持的EF類。爲了使其可更新,我需要更改要由數據庫表支持的類。我正在使用Entity Framework 4.1 Code First,並且無法弄清楚如何建立這些關係?EF代碼優先 - 實體加入多個表

爲了簡化,我現在有一個分類類返回類別名稱(分類表)和類別類型名稱(CategoryTypes表)。這些都在我目前使用的數據庫視圖中。我想更改爲一個ViewModel,它可以直接從表中返回這兩個字段並正確連接,這樣,當用戶更新類別名稱時,EF應該能夠正確處理更新(因爲它將更新表的觀點)。有關如何做到這一點的任何提示?

回答

2

表是一個表 - 它是一個單一的數據庫對象。如果要刪除視圖並將其替換爲表格,則需要刪除當前表格(CategoriesCategoryTypes),並創建一個包含非規格化數據的表格。這是非常糟糕的解決方案,它會在整個應用程序中造成問題。

只是爲了簡化描述:這是不可能取代您的觀點通過構建一個表中的多個表之間的連接,這是不可能的,讓您的視圖更新。

你這樣做是錯誤的,因爲你顯然直接映射視圖模型到數據庫中。地圖​​和CategoryTypes到實體加載CategoryCategoryType和應用程序中的邏輯他們壓扁到您的視圖模型(或通過投影加載視圖模型)。用戶更新視圖模型後,將其分解回單獨的實體並保存。

+0

謝謝拉迪斯拉夫!我們已經討論過這是一個可能的解決方案,但我們仍然不夠確定。所以,很高興得到您的確認!現在,重構! – user835320