2013-03-12 83 views
1

在Code-First中使用Entity Framework時,調用數據庫數據時的最佳做法是什麼?什麼是最佳實踐,實體框架模型或MVC模型?

這是我第一次在MVC中使用實體框架,並注意到它會自動在我的DataLayer中構建模型。我的MVC UI中也有基本的模型,它們允許我在視圖中操作和顯示數據。我目前使用工作流程層獲取數據,然後將數據庫模型自動映射到我的UI模型以顯示數據。

這是最佳做法嗎?我應該使用實體框架模型而不是我的UI模型嗎?或者甚至可以乾淨地做?

任何關於此事的信息將不勝感激。

回答

2

由EF創建的POCO應該被用作您的模型。一般的想法是你有EF提供訪問你的數據庫。您可以使用LINQ和/或擴展方法查詢EF,並最終獲得通過在WPF中綁定它們而顯示在UI上的對象或對象集合。當然,如果你使用WPF而不是舊的WinForms。我可以從經驗告訴你,一旦你熟悉這些技術,這是一個非常簡化的過程。這就是一個非常基本的設置如何工作。

一個更高級的方法是將模型 - 視圖 - 視圖模型(MVVM)和可能的存儲庫模式添加到混合中,在這種情況下,您可以以增加複雜性爲代價更好地分離代碼和表示。

我不知道你使用的MVC是什麼味道,以及如何與上述混合使用,但如果你想更多地瞭解EF設想如何工作,你應該看看技術I已列在上面。

+0

MVVM聽起來像它可能是最合適的,因爲我已經有一個存儲庫模式,當使用Linq-To-SQL時使用。我修改了我的Generic Repository以與Entities一起工作,並且需要在UI一側進行大量的數據操作。 – Lando 2013-03-12 17:25:06

4

真的取決於你。如果您想要爲視圖模型重新使用相同的EF實體,前進。就個人而言,我不喜歡。這是因爲通常最終會向類中添加一些與數據中存儲的內容無關的屬性,並且是;我知道你可以使用NotMapped屬性是這樣的:

[NotMapped] 
public string MyExtraProperty { get; set; } 

,但我不喜歡。另外,你最終會在你的屬性中添加[Display]和其他屬性,並且在你知道它之前,你會得到一些用數據特定和UI特定屬性進行裝飾的東西,如果你不小心,它可能會變得混亂。

對我來說,我有以下幾點:

  1. 域實體
  2. 視圖模型
  3. 服務/門面/存儲庫

控制器調用庫來獲取域實體並將其轉換爲用於顯示視圖模型。

我發現這是一個更清潔的方法,但也許這只是我..最重要的是隻選擇一種方式,並堅持爲了代碼的一致性和清晰度,但任何一種方法都是可以接受的。 「無論什麼浮動你的船」,因爲他們說...