感谢您帮助我理解其中的一些内容:
假设我在 MVC 应用程序中有 2 个控制器 - 1 个控制与销售人员相关的视图模型 1 个控制与销售相关的视图模型
每个都有自己的存储库,它使用实体框架访问数据(代码优先)
两个存储库都设置为处理依赖注入,但也有 0 个参数构造函数,默认使用适当的 EF 数据访问。
销售人员控制器使用 _salesPeopleRepository.getAllSalesPeople() 函数返回销售人员列表以填充索引视图。
销售控制器需要访问相同的列表来填充下拉列表。
有几种方法可以将信息发送给销售控制器,我想知道哪些选项会被认为是最佳实践:
a) 在控制器中
db = new DataContext();
_saleRepos = new SalesRepository(db);
_salesPeople = new SalesPeopleRepository(db);
.....
modelA.SalePeopleSelectList = SelectList(_salesPeople.getAllSalesPeople(),"id","name")
b) 在 SalesRepository - 使用 EF 本身:
public IEnumerable<salesPerson> getAllSalesPeople()
{
return _db.SalesPeople.ToList();
}
c) 或者在调用函数之前实例化和注入相同的数据访问对象
public IEnumerable<salesPerson> getAllSalesPeople()
{
return (new SalesPersonRepository(_db)).getAllSalesPeople();
}
编辑
如果答案是 a),应如何从 1 个存储库调用自定义业务逻辑 - 例如 sales 有一个 storeId,并且存储库检查为销售输入的 storeId 是否与 salesPerson 的 storeId 匹配。用于业务逻辑目的的 salesPerson 对象(在 salesRepository 内)应该通过 salesPerson 存储库访问,还是直接从 dataContext 对象访问?
感谢您的想法和经验