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;
...
}
}
我正在创建一个基于 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;
...
}
}