2

我想知道,实体是否应该能够保存对上下文的更改?或者有与该特定实体相关的业务逻辑?例如:

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();
      }
}

我觉得这有点奇怪,因为实体会引用上下文。我不确定这是否可行 - 或者是否建议这样做。但是我想在一个域上工作,我不必担心保存更改,在更高级别等。我怎样才能做到这一点?

谢谢!

更新

我已经更新了我的示例 - 希望它现在更清楚一点:)

4

3 回答 3

2

根据域驱动设计域对象应该有行为。

你一定要读这本书

在此处输入图像描述

于 2012-08-17T12:40:16.227 回答
1

我会将我的实体保留为POCO(普通旧类对象,只有属性的类),并有一个存储库执行插入/更新之类的方法。

我可以将我的实体保存在一个单独的类库中,并在不同的地方(甚至在不同的项目中)使用它,并使用不同的存储库实现。

教程中很好地解释了如何在使用实体框架的 MVC 项目上执行存储库和工作单元模式

于 2012-08-17T12:18:11.423 回答
1

您可能需要考虑UnitOfWork控制器和实体之间的模式。

http://martinfowler.com/eaaCatalog/unitOfWork.html

于 2012-08-17T12:18:23.613 回答