c# - 实体框架上下文基础选项的定义
问题描述
我在实体框架示例中看到了 base(options)。base(options) 是什么意思,因为找不到 Microsoft 文档。
public class BloggingContext : DbContext
{
public BloggingContext(DbContextOptions<BloggingContext> options)
: base(options)
{ }
}
此处的示例:文档确实定义了 DbContextOptions,但没有定义基本选项。 https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext
解决方案
这与 , 的基本原理之一OOP
有关Inheritance
。每当您创建派生类的实例时,您会看到将首先调用基类构造函数。
在这种情况下,每当BloggingContext
创建 的实例时,DbContext
也会首先调用类构造函数,它是parameter-less
默认构造函数(如果您不使用:base(soemthing)
)。如果你看到DbContext
类的定义,那么你会看到有两个构造函数,一个是无参数的,另一个是DbContextOptions options
作为参数的。
因此,当您创建派生类的实例时,您可以决定应该调用基类的哪个适当的构造函数,在这种情况下,您通过传递构造函数参数值来调用第二个构造函数,如下所示:
public BloggingContext(DbContextOptions<BloggingContext> options)
: base(options)
{ }
而已!
推荐阅读
- c# - 为什么托管在 Azure 中的 ASP NET Web 服务不执行任何操作?
- python - 使用 python 3.8 windows 10 安装 dlib 错误
- reactjs - 当我在父组件中通过 useState 设置状态时,我传递给的孩子中的道具是未定义的
- facebook - 是否有任何 API 或抓取方法来获取 Facebook 用户的电话号码?
- java - Spring boot Applicaation 无法在 PUT API 调用中映射 List 对象
- python - 使用win32api python捕获屏幕截图返回黑色图像
- c# - 考虑到单元测试的数据库层设计
- mongodb - 如何在猫鼬中使用 $dateToString
- sql - 如何编辑我的查询 SQL Server 以更快地获得结果
- java - 如何为spring应用程序创建包含所有依赖项的胖jar