【发布时间】:2018-06-14 23:52:21
【问题描述】:
我找到了一个基于实体框架的Generic Repository示例,并试图了解如何通过相同的接口和实体类型自动解析存储库。
上面的链接指向repo,您可以在其中看到以下方法:
public class HomeController : Controller
{
private readonly ICategoryRepository _repository;
public HomeController(ICategoryRepository repository)
{
_repository = repository;
}
在这种情况下,我们必须创建一个单独的 CategoryRepository - 所以,repository 是每个类型的。
这意味着我们最终会有很多用于存储库的类。
我想远离多个类并找到一种解决方法来处理将实体类型作为类型参数传递给接口的存储库
public class HomeController : Controller
{
private readonly IRepository<Category> _repository;
public HomeController(IRepository<Category> repository)
{
_repository = repository;
}
我尝试用谷歌搜索解决方案,但在代码示例方面没有找到太多信息。
ASP.NET Boilerplate 框架有这个functionality,你可以从sources 看到。
我可以看到该文件夹中的接口文件,它们很有意义。
但它们的实现对我来说有点模糊,因为似乎有一些额外的代码可以处理自动 repo 创建。
【问题讨论】:
-
如果您使用的是实体框架(给定标签),请考虑直接使用它并忘记通用存储库的东西。你已经有了它,它是
DbSet<T>类。 -
为什么要重新发明轮子?您已经在使用实体框架。它已经是具有 UoW 实现的通用存储库。
-
你在问如何创建一个泛型类吗? dotnetperls.com/generic
-
@CamiloTerevinto 非常有趣,然后利用 EF 更有意义。真的非常感谢!
-
@AlexHerman 应该花一些时间来回顾一下weeklydevtips.com/024 的主题,这很有趣。
标签: c# entity-framework dependency-injection repository-pattern ioc-container