2013-10-02 61 views
6

我有一个在Mvc 4.0中的项目。该项目已经将EF包含在它的数据库优先方法中。我必须使用存储库模式来做一些工作。我已经阅读了许多博客,我仍然对如何将实体框架与Repository进行实际整合相混淆。我必须从哪里开始。我正在读这exampleMvc 4.0中的存储库模式

解释是好的,但我怎么能合并这两个概念。我试过创建一个模型类,因为上面的链接已经建议,但在上面的学生类的链接,他们已经采取了Icollection列表注册是数据库中的表格。我也通过我的表名到列表,但不工作。

我已完成的全部流程。请告诉我,如果这个权利或错误 第一步:我创建了一个名为学校的数据库 第二步:我在项目中添加了实体框架。 第3步:我现在创建一个与Student表具有相同属性的模型。第四步:我现在被困住了。我将如何创建一个Icollection? 请尽快提供帮助。我会很感激你。

+1

[这里](HTTP://www.codeproject。com/Tips/572761/Generic-repository-pattern-using-EF-with-Dependenc)是一篇关于我在自己的项目中实现的通用存储库模式的非常丰富的文章,我会推荐。 – user65439

+0

有人请告诉我,我必须遵循代码优先方法中存储库模式的步骤,但项目中已有实体框架。请,它会帮助我很多。 – Sandy

+0

[here](http://weblogs.asp.net/dotnetstories/archive/2013/10/01/using-the-repository-pattern-in-an-asp-net-mvc-4-0-application.aspx )是一个实用教程,您可以在应用程序中阅读和实现此模式 –

回答

8

看看这个问题Unit Of Work & Generic Repository with Entity Framework 5我认为这里描述得很好。

下面是完整的软件包,你可以使用http://www.nuget.org/packages/Repository.EntityFramework/

还有一链接: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

但是在实现存储库模式之前,我会建议你考虑“你真的需要它吗?”。

+1

非常同意@Avenged问题,这里是关于它的文章:http://ayende.com/blog/3955/repository-is-the-new-singleton – Giedrius

+1

我同意“你真的需要它吗”吗?我经常为一些业务逻辑使用一个简单的服务“层”。数据访问可以通过ORM进行。也就是说,我的应用程序通常较小,并且一次只限制在100个以下的用户。存储库模式可能对更大的应用程序更有用。 – tonyapolis

5

如果你想看到的库是如何实现的话,我建议你检查了一些开源项目,真实的场景。

NOP商务部 使用存储库模式和依赖注入 http://nopcommerce.codeplex.com/

影片 还有一个ASP.NET视频系列(免费)关于建立一个MVC店面 http://www.asp.net/mvc/videos/mvc-1/aspnet-mvc-storefront/aspnet-mvc-storefront-part-2-the-repository-pattern

Open Access示例 Telerik使用ORM(OpenAccess)提供了一些很好的示例。即使它使用不同的ORM,存储库模式仍适用于EntityFramework。 http://www.telerik.com/products/orm.aspx

1
public class AccountBrandRepository : GenericRepository<AccountBrand> 
{ 
    TestEntities _context; 

    public TestRepository(IUnitOfWork unitOfWork) 
     : base(unitOfWork as VoltEntities) 
    { 
     if (unitOfWork == null) 
      throw new ArgumentNullException("unitOfWork"); 
     _context = unitOfWork as TestEntities; 
    } 
} 
+1

也许你可以添加一些上下文的答案? – EWit