我的解决方案中的项目设置如下:
我使用构造函数注入给我的控制器提供一个仓储容器的引用,看起来像这样:
- App.Data
- App.Models
- App.Web
我使用构造函数注入给我的控制器提供一个仓储容器的引用,看起来像这样:
public interface IDataRepository
{
IUserRepository User { get; set; }
IProductRepository Product { get; set; }
// ...
}
public class DataRepository : IDataRepository
{
private readonly AppContext _context;
public DataRepository(AppContext context)
{
_context = context;
}
// ...
}
DataRepository
将拥有一个AppContext
对象(该对象继承自Entity Framework的DbContext
),所有子存储库都将使用它来访问数据库。
最终我们来到了我的问题: 考虑到它是一个代码库,并且没有入口点,我如何在DataRepository
上使用构造函数注入? 我不能在App.Web中引导AppContext
,因为那样我就必须从该项目引用Entity Framework。
或者我只是做了些愚蠢的事情吗?
IRepository<T>
接口,而不是定义许多存储库接口。详见此处。这样可以获得更大的灵活性。 - Steven