实体框架上下文基本选项的定义

5 c# entity-framework asp.net-core-mvc asp.net-core

我在实体框架示例中看到了 base(options)。base(options) 是什么意思,因为找不到 Microsoft 文档。

public class BloggingContext : DbContext
{
      public BloggingContext(DbContextOptions<BloggingContext> options)
          : base(options)
      { }


}
Run Code Online (Sandbox Code Playgroud)

此处的示例:文档确实定义了 DbContextOptions,但没有定义基本选项。 https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext

Tan*_*jel 6

这涉及到的基本原则之一OOPInheritance。每当您创建派生类的实例时,您都会看到将首先调用基类构造函数。

在这种情况下,每当BloggingContext创建的实例时,DbContext也会首先调用类构造函数,并且它是parameter-less默认构造函数(如果您不使用:base(soemthing))。如果你看到DbContextclass的定义,那么你会看到有两个构造函数,一个是无参数的,另一个是DbContextOptions options作为参数的。

因此,当您创建派生类的实例时,您可以决定应该调用基类的哪个合适的构造函数,在这种情况下,您将通过传递构造函数参数值来调用第二个构造函数,如下所示:

public BloggingContext(DbContextOptions<BloggingContext> options)
    : base(options)
{ }
Run Code Online (Sandbox Code Playgroud)

就是这样!