Web API & 服务层 & EF6 - 没有存储库模式

Web API & Service Layer & EF6 - Without repository pattern

我正在创建一个基于 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 的优缺点的大量选项。 (Whosebug 有 "repository pattern" 的 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 新特性实现单元测试?

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

虽然你不想使用Repository,你仍然想使用IoC容器注入依赖关系,例如Ninject, Autofac and StructureMap.

如果是这样,您只需要将 YourDbContext 注入服务 class。

例如,

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

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