私有只读字段和构造函数



我不能完全掌握readonly和CategoryController构造函数在这里,私有readonly构造函数和分配_db = db的必要性是什么。我的ApplicationDbContext类继承自EF Dbcontext类和选项参数传递给基类,这个私有只读和构造函数在这里做什么,它的必要性是什么?图片链接:https://i.stack.imgur.com/oW8Zg.png

public class CategoryController : Controller
{
private readonly ApplicationDbContext _db;
public CategoryController(ApplicationDbContext db)
{
_db = db;
}

这个概念叫做依赖注入,你可以在这里了解更多。

基本上,你在注入数据库上下文。您可以在像var context = new ApplicationDbContext()这样的类中创建它,但是类变得依赖于这个确切的实现。将来你可能想要使用其他上下文(比如MongoDbContext

之类的),但它不可能通过这类导致他们不同的类型。为了解决这个问题,你让所有的上下文实现接口(IMyContext为例),在你的类中创建只读IMyContext字段,并在构造函数中传递任何你需要的。

最新更新