Using Repository and Unit of Work patterns with Entity Framework 4.0

本文介绍如何在Entity Framework 4.0中利用POCO模式实现Repository和UnitOfWork模式,通过具体的示例展示了如何查询、搜索及添加客户实体。

原文:http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx

如果您曾经看过我博客,您知道我一直在讨论POCO各个方面功能用来添加到Entity Framework 4.0中。POCO让持久性变的简单,但这永远不可能EF3.5中实现。

如果你错过了POCO系列文章,我在这里列出它们以便能够方便阅读。这可能是一个好主意用来快速找到它们。

在这篇文章中,我们将要演示如何把我们的例子进一步的使用一些常见的模式如 RepositoryUnit Of Work 因此,在我们的例子中,我们可以观察到实现持久性的一些必要细节。

扩展在我们基于Northwind的例子,假设我有兴趣支持以下客户面向实体的操作:

  • Query for a customer by ID
  • Searching for Customer by Name
  • Adding a new Customer to the database

我也希望能够根据ID来查询产品

最后根据一个客户,我希望能够添加一个订单信息到数据库中

在我们进行这些工作之前,有两件事情,首先我想要绕过其中的一种方式

有多种"正确”的方式来解决这个问题。 我将会使用简化的方式的来显示一个高水平的草图来解决手上的问题。 通常,当使用TDD,我会启动我的测试程序,使用测试程序来测试我的设计。 虽然我在这个例子中不遵循TDD模式,请容忍我如果你看到我做事情像定义一个接口的前期,而不是让测试和共性决定需要一个什么样的接口,等等。

Implementing the Repository

让我们开始我们的工作之前,必须有一个Customer实体与看一个repository来处理Customer实体, 可能像下面的样子:

public interface ICustomerRepository
{        
    Customer GetCustomerById(string id);
    IEnumerable<Customer> FindByName(string name);
    void AddCustomer(Customer customer);
}

这个repository接口似乎能够满足我们的所有需求:

  • GetCustomerById should allow me to get a single customer entity by primary key
  • FindByName should allow me to search for customers
  • AddCustomer should allow me to add customer to the database

Base Link:

http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值