【问题标题】:Is this the Clean Data pattern?这是清洁数据模式吗?
【发布时间】:2013-11-25 01:35:00
【问题描述】:

表示层获取和保存的每条数据都尽可能简单且不附加 ef 上下文信息的模式的名称是什么?

例如。

CustomerManager manager = new CustomerManager();
Customer customer = manager.GetCustomerByEmail(string emailAddress);
DoSomething(customer);
manager.Save(customer);

这是否推荐用于 MVC?我看到了很多控制器和视图模型使用 ef 上下文的例子。我觉得这是一种不好的做法。

PS。我对“清洁数据”模式的引用只是我的最佳猜测,而不是对实际模式的引用。

【问题讨论】:

  • 这对我来说看起来更受域驱动.. 不确定我是否遇到过“清洁数据”模式。您可能想到的是“Active Record”。

标签: c# asp.net-mvc entity-framework design-patterns


【解决方案1】:

我从未遇到过“清洁数据”模式。但这看起来更像Active Record Pattern

通常在应用此模式时,您的域对象上有Insert()Update()Delete() 方法。

这些天你并不经常看到这种方法。人们倾向于将持久性逻辑和业务逻辑保持分离。而这种方法会引导您走上它们相互交织的道路。这使得测试变得更加困难,并且代码库变得难以更改。

【讨论】:

  • 我会将我的 CRUD 方法放在 Manager 类中,而不是在对象类中。使用包含所有业务逻辑的 Manager 类,对象类将尽可能简单。我也想要业务逻辑和持久性逻辑之间的分离,但我在这里关注的是表示层和业务层之间的分离。
【解决方案2】:

我倾向于使用的命名模式是“存储库”模式,其中存储库封装了数据访问层使用方式的实现细节。这样您就可以从 EF(或其他)切换,而无需您的控制器层代码了解它。

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

【讨论】:

  • 我查看了链接。对于我想要实现的目标来说,这似乎太复杂了。你知道更简单的类似模式吗?
  • 存储库的实现只是尽可能复杂。我的存储库类仅在使用它们的类型中公开我需要的特定方法。
猜你喜欢
  • 1970-01-01
  • 2019-02-20
  • 1970-01-01
  • 2012-07-06
  • 2011-08-27
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多