【问题标题】:Repository Pattern in Mvc 4.0Mvc 4.0 中的存储库模式
【发布时间】:2013-10-02 12:25:37
【问题描述】:

我有一个 Mvc 4.0 中的项目。该项目已经将 EF 包含在其中,并使用其类和数据库优先方法。我必须使用存储库模式在其中做一些工作。我已经阅读了很多博客,但我仍然对如何将实体框架与存储库进行实际集成感到困惑。我必须从哪里开始。我正在读这个example

解释没问题,但是我怎样才能合并这两个概念。我尝试的是创建一个模型类,如上面的链接所建议的,但在上面的学生类链接中,他们已经获取了 Icollection 列表,其中注册是数据库中的表.我也将我的表名传递给列表但不工作。

我完成的整个过程。请告诉我这是对还是错 Step1:我创建了一个名为 School 的数据库 Step2:我在项目中添加了实体框架。 第 3 步:我现在正在创建一个与 Student 表具有相同属性的模型。 Step4:我现在卡住的地方。我将如何创建一个 Icollection? 请尽快提供帮助。我会感谢你的。

【问题讨论】:

  • Here 是一篇内容丰富的文章,介绍了我在自己的项目中实现的通用存储库模式,我会推荐它。
  • 有人可以告诉我在代码优先方法中我必须遵循的存储库模式的步骤,但项目中已经有实体框架。拜托,这对我有很大帮助。
  • here 是一个实用教程,您可以阅读并在您的应用程序中实现此模式

标签: c# asp.net-mvc repository-pattern


【解决方案1】:

看看这个问题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

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

【讨论】:

  • 非常同意@Avenged 的​​问题,这里有一篇关于它的文章:ayende.com/blog/3955/repository-is-the-new-singleton
  • 我同意“你真的需要它”吗?我经常为一些业务逻辑使用一个简单的服务“层”。数据访问可以通过 ORM 进行。也就是说,我的应用程序通常更小,并且一次限制为少于 100 个用户。存储库模式可能对大型应用程序更有用。
【解决方案2】:

如果您想了解如何实现存储库的真实场景,那么我建议您查看一些开源项目。

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

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

开放获取示例 Telerik 有一些使用他们的 ORM(OpenAccess)的很好的例子。即使它使用不同的 ORM,存储库模式仍然适用于 EntityFramework。 http://www.telerik.com/products/orm.aspx

【讨论】:

    【解决方案3】:
    【解决方案4】:

    【讨论】:

      【解决方案5】:
      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;
           }
      }
      

      【讨论】:

      • 也许您可以在答案中添加一些上下文?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 2011-04-19
      • 2012-06-11
      • 2011-11-26
      相关资源
      最近更新 更多