【问题标题】:EF 4.1 Code First - What pattern should I use?EF 4.1 Code First - 我应该使用什么模式?
【发布时间】:2011-07-26 05:22:07
【问题描述】:

我正在学习 EF Code First,但我正在为在我的应用程序中使用哪些模式而苦苦挣扎。我读过许多相互矛盾的建议和论据,有些人说您应该使用存储库模式,而另一些人则说这样做是多余的,我倾向于同意。

这是我的delim:

假设我正在构建一个允许我管理客户的 REST Web 服务。该服务将允许我添加客户、删除客户、编辑客户以及查找客户。

我应该:

A.) 我的问题归结为我的业务逻辑应该去哪里。我是否应该有一个 CustomerManager 类来提供接受客户实体的 Add、Edit、Delete 和 Find 方法?我的验证逻辑应该放在那些方法中吗?

B.) 当我的 Customer 实体具有 Save()、Delete() 和 Find() 方法并且所有验证登录都在 Customer 类内部完成时,我应该使用 Active Record 开发风格吗?

C.) 我应该做某种类型的混合,其中简单的验证逻辑在实体本身上。这可以通过代码优先属性来完成。我也可以在实体上有一个简单的保存方法。然后,我可以在 CustomerManager 类中执行复杂的业务验证逻辑、delete()、finds() 和多实体保存?

我有点倾向于选项 C。过去我通常使用 Manager/Service 类来保持我的实体非常简单。但是,由于代码首先在实体级别进行实体属性验证,所以似乎所有简单的实体验证都应该去那里。

我意识到这可能有点像宗教话题,但我想获得一些其他选择,以了解如何以最佳方式组合一个可靠的应用程序。

【问题讨论】:

  • 你最终选择了什么?你对你的决定满意吗?现在,面对同样的决定,我倾向于选择 Active Record 模式。

标签: entity-framework-4 code-first


【解决方案1】:

EF 4.1 代码优先将工作单元与数据映射器模式相结合。

所以,我不建议使用活动记录模式。

带有实体框架的存储库模式是常见的解决方案。如果你想要一些简单的验证逻辑,你可以使用与实体框架配合良好的 DataAnnotations。

这是使用 EF 实现存储库模式的简单示例:

http://www.efekaptan.com/repository-pattern-with-entity-framework-code-first-4.1

【讨论】:

    猜你喜欢
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    相关资源
    最近更新 更多