0

在我創建了2個項目.NET解決方案:在MVC項目中,哪些類應該與工作單元進行交互?

  • 域,這個項目採用的自動生成使用EDMX模型創建的DbContext類。除了這些課程外,我還有部分有商業規則的課程。
  • WebApp,它是一個mvc 4項目。

話雖如此,在哪些類我把如下代碼:

using(var ctx = new ModelContext()) 
{ 
    var user = new User(email, score); 
    ctx.Users.Add(user); 
    ctx.SaveChanges(); 
} 

該代碼將在模型?

+0

持久性代碼應該在模型中,而不是控制器。 – itsme86 2013-02-27 00:32:27

+0

我可以說,在我創建的這個解決方案中,模型實際上是ViewModels? – 2013-02-27 00:34:15

+1

ViewModel通常是分開的,應該與持久性或任何業務邏輯完全沒有關係。例如,用戶應該是您的域模型的一部分,並且應該是您的持久性代碼所在的位置。您的視圖模型可能具有User屬性,但不應包含業務邏輯。 – itsme86 2013-02-27 00:37:17

回答

0

我建議你再使用一個間接級別,它允許更乾淨/更快的單元測試),並將代碼放入存儲庫類中。有關存儲庫模式的更多信息,請參見http://huyrua.wordpress.com/2010/07/13/entity-framework-4-poco-repository-and-specification-pattern/

+0

做這一切的唯一要點是單元測試?如果我使用類似http://fakedbconnection.codeplex.com/的東西呢? – 2013-02-27 00:45:47

+0

不,存儲庫表示您的域模型的持久性。換句話說,存儲庫的方法應該使用無處不在的語言,並與您的項目的使用案例相關聯。 – 2013-02-27 13:30:00

+0

@BartłomiejSzypelow我在考慮不自己實現工作單元和存儲庫,而是使用dbContext實現。這是一個壞主意嗎?爲什麼? – 2013-02-27 13:48:10

相關問題