2017-05-03 99 views
0

我目前正在設計一個MVC應用程序的開始。MVC數據設計決策

在運行通過我碰到一個問題帶着一些數據的處理方式原型一些測試。

下面是一個簡單DB diagram

在我的原型工作時,我注意到,當實體框架構建所有從SQL所需的車型它創建從Employee_Table到Job_Position_Link_Table的ICollection的關係。如果視圖強制鍵入Employee_Table,我無法直接訪問Job_Position_Link_Table中的屬性。我也無法進入Job_Position_Title_Table。我研究過爲這個問題創建一個ViewModel,但是在使用ICollection時無法找到關於如何創建ViewModel的教程。大多數教程都來自代碼優先的方法,我正在處理一個繼承的數據庫。

其他解決方案,我想是創造我所有的在SQL視圖,然後將它們傳遞到MVC的。

我還是新的MVC和只是想知道在這種情況下最好的做法是什麼呢?

回答

1

永遠不要你的意見結合到EF實體。相反,創建具有所需屬性的視圖模型類並將EF實體轉換爲這些VM(可以手動或藉助自動映射器來完成)。然後,您的視圖可以綁定到您的視圖模型。

其操控構建視圖模型,並將其發送給瀏覽引擎渲染的工作。因此,視圖必須期望視圖模型準備好呈現。

+0

什麼是最好的是創建一個視圖模型,其中的實體框架創建一個ICollection的?現在,當試圖訪問ICollection中的任何東西時,AtElement(int)總是拋出一個空引用異常。 – AWinter

+0

對於連接集合,我會編寫一個EF連接查詢並返回一個自定義數據約定(IEnumerable )。將EF實體保留在.Data層中,並使您的方法返回自定義創建的實體(有些人稱他們爲DTO,其他人稱之爲數據合同) –

+0

謝謝。我認爲這會讓我現在走上正軌。 – AWinter