时:
public ActionResult Whatever(int id) `
{
using (var db = new Context())
{
var result = db.Whatevers.Where(x => x.Id == id);
// ....
}
}
糟糕的做法,我应该倾向于像某种存储库那样添加抽象层(例如实现接口)?
类似的东西:
var repo = new MyRepository(db) // context created earlier
var result = repo.GetWhatever(id);
是否有一些我失踪的一般规则? 或者它取决于控制器内部逻辑的复杂性。 提前谢谢。
答案 0 :(得分:2)
是的,将数据库交互抽象到单独的层中通常是一种很好的做法。始终通过接口访问资源并使用依赖注入在运行时解析这些对象的实例也是一种好习惯。
对此没有严格的规定,但在专业环境中,没有人会在控制器中创建具有数据访问逻辑的应用程序。
答案 1 :(得分:1)
这取决于很多因素,
如果所有这些问题的答案都是否,那么访问控制器中的数据库就行了。否则,请考虑使用以下内容,具体取决于您的应用程序的共谋