2012-08-17 42 views
2

我在想,實體是否有能力保存對上下文的更改?或者是否有與該特定實體相關的業務邏輯?例如:EF:實體是否應該具有業務邏輯?

ActionResult ResetPassword(UserViewModel viewModel) 
{ 
    var user = userCollection.GetUser(viewModel.Username); 
    user.ResetPassword(); 
} 

其中:

class User : Entity 
{ 
     public string Password{ get; set; } 

     public ResetPassword() 
     { 
      Password = "" 
      context.SaveChanges(); 
     } 
} 

我覺得這有點不可思議,因爲該實體將有上下文的參考。我不確定這是否會起作用 - 或者這是否被推薦。但我想在一個不需要擔心更高級別保存更改的域中工作,我該如何實現這一目標?

謝謝!

更新

我已經更新了我的例子 - 希望它更清楚一點,現在:)

回答

1

我會保持我的實體爲POCO的(普通老式類對象,只有屬性的類)和有一個Repositary做插入/更新方法。

我可以將我的實體放在單獨的類庫中,並在不同的地方(甚至在不同的項目中)使用它,並使用不同的Repository實現。

this教程這是很好的解釋,如何做一個Repositary &單元的工作模式上它使用實體框架的MVC項目

+2

這很有趣。看,我有一個不同的想法。我認爲域對象應該具有@Steven提到的行爲。我認爲模型是有效的實體 - 比如User。也許更好的例子是 - 用戶是否可以重置密碼。我原以爲這是用戶的責任,而不是倉庫的責任。你覺得Shyju/Steve怎麼樣? – Karan 2012-08-17 14:28:53

+0

http://en.wikipedia.org/wiki/Anemic_domain_model – Karan 2012-08-17 14:46:14

+0

http://msdn.microsoft.com/en-us/library/ff649690.aspx – Shyju 2012-08-17 14:51:27

2

根據Domain-Driven Design域對象應具備的行爲。

你應該肯定讀this book

enter image description here

+1

爲了實現域驅動的行爲,每個實體必須擁有如問題所述,提到上下文。這似乎是對抗mvc.net的框架。你有沒有試圖做到這一點? – Karan 2012-10-10 09:16:10

相關問題