【问题标题】:Web API & Service Layer & EF6 - Without repository pattern [duplicate]Web API & 服务层 & EF6 - 没有存储库模式 [重复]
【发布时间】:2015-01-06 19:47:41
【问题描述】:

我正在创建一个基于 ASP.NET Web API 和 EF6 的新 Web 应用程序。

ProjectName
 -ProjectName.Data (All entity framework stuff)
 -ProjectName.Service (All business logic)
 -ProjectName.Web (ASP.NET Web API All front end logic)

我已经阅读了大量关于存储库模式和 UoW 的信息,以及关于其与 EF 的优缺点的大量选项。 (StackOverflow 有 10,081 个“存储库模式”结果)。

我们没有任何计划 更改为不同的数据库并使用我读过的 EF6,您可以在没有额外抽象的情况下进行单元测试。

我倾向于不使用存储库或 UoW,而是直接从服务层与 DbContext 对话。

谁能提供实现 EF6 没有存储库但有服务层的示例?

在现实生活中使用它的示例项目或 github 项目更好吗?

编辑:

类似问题:

Implementing Repository pattern and doing Tests

Generic Repository With EF 4.1 what is the point

这些都是关于同一主题的问题,但它们都没有提供在类似于我描述的架构中使用 EF 的良好代码示例:

如何在没有存储库/UoW 的情况下管理 DbContext 生命周期?

如何使用ef6新特性实现单元测试?

【问题讨论】:

  • stackoverflow.com/q/5625746/861716 和其他答案没有提供代码示例 - “存储库目前非常流行和过度使用。每个人都使用它们只是因为有几十篇关于为实体创建存储库的文章框架,但没有人真正描述与此决定相关的挑战”
  • 我知道,但是要求代码示例使这个问题对于 StackOverflow 来说过于宽泛。所以这个问题要么被关闭为“太宽泛”或“基于意见”(因为这些例子是口味问题)或“不清楚你在问什么”(因为“例子”可以是任何东西) - 或重复。
  • 您的最新编辑使问题变得更广泛。关于这些问题有很长的博文,例如this one
  • 我知道有很长的博客文章 :) 过去 24 小时我一直在阅读它们,这正是我要求提供真实世界详细示例的原因。我找到了 100 个使用存储库实现此功能的示例,但没有一个用于“无存储库”实现

标签: asp.net asp.net-mvc entity-framework entity-framework-6


【解决方案1】:

你的问题太笼统了。有太多方法可以达到相同的结果。这是我的两分钱-

虽然您不想使用Repository,但您仍然想使用NinjectAutofacStructureMap 等IoC 容器注入依赖项。

如果是这样,您只需将 YourDbContext 注入 Service 类。

例如,

public class CustomerService : ICustomerService 
{
   private readonly YourDbContext _context;
   private readonly ICacheService _cacheService;
   ...

   public StateService(
      YourDbContext context, 
      ICacheService cacheService, 
      ...)
   {
      _context = context;
      _cacheService = cacheService;
      ...
   }
}

【讨论】:

  • 如何管理上下文生命周期?不需要处理?
  • IoC 容器会为您处理它(一旦您在 rootscope 中设置对象生命周期)。这是 IoC 容器的工作之一。
  • 什么是StateService?如果它是一个构造函数,它的声明完全不正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 2017-09-19
  • 2016-10-07
  • 1970-01-01
  • 2013-05-23
  • 2013-01-29
  • 1970-01-01
相关资源
最近更新 更多